TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Page Not Found ============== We could not find what you were looking for. Please contact the owner of the site that linked you to the original URL and let them know their link is broken. Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Authentication | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Authentication On this page Authentication ============== TeamUp’s API supports several authentication methods to help your Application connect securely. The method you choose depends on whether your app acts _on behalf of a user_ (like a trainer or customer) or _on behalf of your business_ as a whole. * * * Authentication Methods[​](#authentication-methods "Direct link to Authentication Methods") ------------------------------------------------------------------------------------------ ### OAuth (Recommended)[​](#oauth-recommended "Direct link to OAuth (Recommended)") OAuth allows your Application to request access to TeamUp **on behalf of an end user** - for example, a trainer or customer. It uses a token called a **bearer token**, so your app never needs to handle the user’s TeamUp password directly. When users connect, they’ll see TeamUp’s familiar login screen and will be prompted to authorize your Application. Once they do, your app receives a temporary access token with their permissions. We provide [step-by-step documentation](/guides/oauth) to guide your team through this setup. **Common use cases:** * A mobile app for freelance trainers to manage their schedule and appointment availability * A branded customer website showing upcoming classes and allowing users to book spots * * * ### M2M Tokens[​](#m2m-tokens "Direct link to M2M Tokens") Some integrations need to act on behalf of your **business**, not an individual user. In these cases, you can use a machine-to-machine (M2M) token tied to your organization as a while. M2M tokens are ideal for server-to-server or background integrations that don't involve user logins. TeamUp does **not** support the OAuth `client_credentials` grant or static API keys — the OAuth token endpoint only accepts `grant_type=authorization_code`. If you're looking for an "API key" for server-to-server access, an M2M token is the supported equivalent. **You can create and manage M2M tokens directly from your business dashboard.** For a step-by-step guide, see [Creating a Machine-to-Machine (M2M) Token](https://support.goteamup.com/en/articles/14819895-creating-a-machine-to-machine-m2m-token). **Common use cases:** * A reporting system that periodically pulls business metrics from TeamUp for analysis * A webhook processor that receives TeamUp event notifications and fetches additional data as needed * * * ### Direct Authentication[​](#direct-authentication "Direct link to Direct Authentication") In some cases, you may want a fully branded login experience that skips the OAuth authorization screen. This is possible via Direct Authentication, but it comes with additional security risks because your application will directly handle user passwords. Due to this, we only enable Direct Authentication after reviewing your use case. If approved, we’ll issue your developers a secondary secret for securely calling the **Password Login endpoint**, which returns an access token. * * * Making Requests[​](#making-requests "Direct link to Making Requests") --------------------------------------------------------------------- All authenticated requests must include your credential in the HTTP `Authorization` header. **OAuth access token example:** For an end-user access token obtained from TeamUp's OAuth flow: Authorization: Bearer **M2M token example:** For an M2M token: Authorization: Bearer * * * ### Which Credential Is Which?[​](#which-credential-is-which "Direct link to Which Credential Is Which?") Creating an API Application gives you several different strings, and TeamUp has more than one kind of token. They are **not interchangeable** — sending the wrong one is the most common integration mistake we see. Credential Looks like Where it comes from How to send it **Client ID / Client Secret** Opaque strings Shown when you create your API Application Only as the `client_id` / `client_secret` parameters in the [OAuth flow](/guides/oauth) — **never** in the `Authorization` header **OAuth access token** A JWT — three base64 segments separated by dots (`xxx.yyy.zzz`) Returned by the OAuth token endpoint after a user authorizes your app `Authorization: Bearer ` **M2M token** Opaque key (no dots) Created in your business dashboard `Authorization: Bearer ` ### Troubleshooting: Wrong Token[​](#troubleshooting-wrong-token "Direct link to Troubleshooting: Wrong Token") The `Authorization` header must have the form `Bearer `. If the prefix is missing or malformed, the API doesn't recognize the header at all and treats the request as unauthenticated, so the resulting error mentions authentication or permissions rather than a malformed header. You see Likely cause `401` with code `authentication_failed` ("Incorrect authentication credentials."), even though you sent a token The `Bearer` prefix is missing or malformed — send the header exactly as `Authorization: Bearer `. `401` "The token you provided is expired or invalid" The value isn't an active token — commonly the Client Secret pasted where a token belongs, or a revoked/expired token. See [Errors](/api-reference/errors) for the general error response format. * * * ### Request Modes[​](#request-modes "Direct link to Request Modes") When using OAuth access tokens, the level of access your integration receives depends on the authenticated user’s role and permissions in TeamUp. If using a M2M token, your integration will always make requests in `Provider` mode under the admin permissions. Mode Who Example Access **Customer** A user who has signed up at your business. View their own `Customer` object **Provider** A staff member at your business. View or manage all customers, if granted the `customers` or `admin` permission. **Unregistered Customer** A visitor who hasn’t signed up yet. View only public content (e.g., class schedule) Each API endpoint lists which roles can perform which actions. For example, the `GET /customers` endpoint specifies: > **Providers** – Any staff member can perform this action. > **Customers** – Customers can view their own record or a family member’s. > **Unregistered Customers** – _No access._ ### Explicit Mode[​](#explicit-mode "Direct link to Explicit Mode") Sometimes, the same person may be both a **customer** and a **staff member**. To clarify which mode your request should operate in, include the following header: TeamUp-Request-Mode: provider or TeamUp-Request-Mode: customer * * * ### Explicit Provider[​](#explicit-provider "Direct link to Explicit Provider") For franchises or multi-location businesses, your access token may be linked to multiple providers. Use this header to specify which one the request should act on: TeamUp-Provider-ID: 123 * * * Summary[​](#summary "Direct link to Summary") --------------------------------------------- Method Acts As Use For Security Level **OAuth** Individual user Mobile/web apps with user login 🔒 Highest **M2M Key** Your business Server-to-server integrations 🔐 High **Direct Auth** Individual user Fully branded login experiences ⚠️ Requires approval. Use with caution [ Previous Introduction ](/api-reference/introduction)[ Next Errors ](/api-reference/errors) * [Authentication Methods](#authentication-methods) * [OAuth (Recommended)](#oauth-recommended) * [M2M Tokens](#m2m-tokens) * [Direct Authentication](#direct-authentication) * [Making Requests](#making-requests) * [Which Credential Is Which?](#which-credential-is-which) * [Troubleshooting: Wrong Token](#troubleshooting-wrong-token) * [Request Modes](#request-modes) * [Explicit Mode](#explicit-mode) * [Explicit Provider](#explicit-provider) * [Summary](#summary) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Errors | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Errors On this page Errors ====== TeamUp uses conventional HTTP response codes to indicate the success or failure of an API request. In general: Codes in the `2xx` range indicate success. Codes in the `4xx` range indicate an error that failed given the information provided (e.g., a required parameter was omitted, a class is not open for registration, etc.). Codes in the `5xx` range indicate an error with TeamUp's servers (these are rare). Error Response Format[​](#error-response-format "Direct link to Error Response Format") --------------------------------------------------------------------------------------- **Example** { "code": "parameter_invalid", "field_errors": { "offering_type": ["The offering type ID was not found"], "non_field_errors": ["Start date cannot come after end date"] }, "message": "You request was invalid", "type": "invalid_request_error"} * **code**: A short string indicating the error code. Useful for handling certain errors programmatically. * **field\_errors**: Object where each key matches a field name in the request body, with one or more messages explaining why the provided value is invalid. A `non_field_errors` key is included for validation errors that are not specific to a single field. * **message**: A human-readable message providing more details about the error.. * **type**: The type of error returned. One of `invalid_request_error`, `conflict`, `event_check_failure` HTTP Status Code Summary[​](#http-status-code-summary "Direct link to HTTP Status Code Summary") ------------------------------------------------------------------------------------------------ **Status Code** **Status** **Description** 200 OK Everything worked as expected. 400 Bad Request The request was unacceptable, often due to missing a required parameter. 401 Unauthorized Authentication failed due to invalid credentials. 403 Forbidden The identity linked to the credentials (often a user) doesn't have permission to access the endpoint. 404 Not Found The requested resource doesn’t exist. 429 Too Many Requests Too many requests hit the API too quickly. We recommend an exponential backoff of your requests. 500, 502, 503, 504 Server Errors Something went wrong on TeamUp's end. (These are rare.) Error Code Reference[​](#error-code-reference "Direct link to Error Code Reference") ------------------------------------------------------------------------------------ Beyond the HTTP status, every error response includes a `code` string (see [Error Response Format](#error-response-format)) that identifies exactly what went wrong. The codes below are the ones developers hit most often. Most of them — including most `403` responses — are not caused by the permissions configured for a user. They usually mean the request was **authenticated or scoped differently than you intended**: the wrong token type, the wrong `Authorization` prefix, or a missing `TeamUp-Request-Mode` / `TeamUp-Provider-ID` header. See [Authentication](/api-reference/authentication) for how tokens, modes, and these headers fit together. ### Quick Reference[​](#quick-reference "Direct link to Quick Reference") **Code** **Status** **What it usually means** `permission_denied` 403 The role the API resolved for your request isn't allowed to perform this action. `mode_not_allowed` 403 Your credentials can't operate in the request mode you specified. `provider_invalid` 403 The provider isn't accessible to your token, or provider mode was used without staff access. `provider_header_invalid` 403 `TeamUp-Provider-ID` doesn't identify an active provider you can access. `customer_invalid` 403 The customer targeted by the request doesn't exist, is deleted, or isn't accessible to you. `provider_header_missing` 400 No provider was specified by a header or by the token itself. `mode_invalid` 400 `TeamUp-Request-Mode` was set to something other than `provider` or `customer`. `authentication_failed` 401 Your credential was recognized but is invalid or expired. ### `permission_denied` (403)[​](#permission_denied-403 "Direct link to permission_denied-403") > "As a unregistered customer, you are not allowed to perform this action (list)." **What it means:** The endpoint's access policy denied the request for the role the API resolved you to. The message names that role — `unregistered customer`, `registered customer`, or `staff member/manager at the provider` — and the trailing parenthesis names the action you attempted. **Most common cause:** The API resolved your request to a different role than you intended: * **"As a unregistered customer …" when you expected staff or customer access.** Your credentials were not applied to the request at all. The usual culprit is the `Authorization` header prefix: use `Bearer` (`Authorization: Bearer `). If the prefix is missing, misspelled, or anything else, the request is **silently treated as unauthenticated** — you get this 403, not a 401. It can also mean the authenticated user has no customer profile at the provider you targeted. * **"As a staff member/manager …" on a customer action.** Some actions (for example, registering a customer for an event) run in customer mode. Send `TeamUp-Request-Mode: customer` and identify the customer, rather than calling it as staff. **Fix:** Check the role named in the message against the roles the endpoint's reference documentation says can perform the action, then work out why the API saw you as that role — usually an `Authorization` prefix problem or a missing/incorrect `TeamUp-Request-Mode` header. ### `mode_not_allowed` (403)[​](#mode_not_allowed-403 "Direct link to mode_not_allowed-403") > "You are not able to make requests in the specified mode." **What it means:** You asked for a request mode (usually `TeamUp-Request-Mode: provider`) that your credentials cannot operate in. **Most common cause:** The token is not the type you think it is. Provider mode requires either an M2M token created for the business, or an OAuth token for a user who is a staff member at that provider. A customer's OAuth token can never make provider-mode requests. **Fix:** Recreate the token as the right type — an M2M token from the business dashboard for server-to-server access, or an OAuth flow completed by a staff user — and keep `TeamUp-Request-Mode` consistent with that token type. ### `provider_invalid` (403)[​](#provider_invalid-403 "Direct link to provider_invalid-403") > "You don't have access to this Provider. It does not exist, or access has been revoked." or > "Cannot perform request in provider mode because the authenticated user is not a staff member at the provider." **What it means:** The provider the request is scoped to isn't one your token or application has access to, or you requested provider mode with a user who has no staff access there. **Most common cause:** The `TeamUp-Provider-ID` header names a provider your token was not created for (each token is scoped to specific providers), or you sent `TeamUp-Request-Mode: provider` with a token whose user isn't staff at that provider. **Fix:** Verify the `TeamUp-Provider-ID` value matches the provider the token was issued for. For provider mode, use an M2M token or an OAuth token belonging to a staff member at that provider. ### `provider_header_invalid` (403)[​](#provider_header_invalid-403 "Direct link to provider_header_invalid-403") > "The Teamup-Provider-ID header is invalid. The Provider does not exist, or you cannot access it, or access has been revoked." **What it means:** The `TeamUp-Provider-ID` header value doesn't identify an active provider. **Most common cause:** The value isn't the provider's numeric ID (for example, a business name or slug was sent instead), or the ID doesn't exist or belongs to an inactive account. **Fix:** Send the provider's numeric ID. ### `customer_invalid` (403)[​](#customer_invalid-403 "Direct link to customer_invalid-403") > "The Customer does not exist, is deleted, or you do not have access to it." **What it means:** The customer the request targets — via the `TeamUp-Customer-ID` header or the `active_customer` query parameter — can't be used. **Most common cause:** The customer ID doesn't exist at the provider the request is scoped to, refers to a deleted customer, or names a customer your credentials aren't allowed to act for (a customer token can only act for the customer's own family). **Fix:** Use a customer ID that belongs to the provider in `TeamUp-Provider-ID`, and make sure your token is allowed to act for that customer. ### `provider_header_missing` (400)[​](#provider_header_missing-400 "Direct link to provider_header_missing-400") > "You must supply the Teamup-Provider-ID header." **What it means:** The request didn't specify which provider (business) it applies to, and the token itself isn't scoped to a single provider. **Fix:** Send the `TeamUp-Provider-ID` header with the provider's numeric ID. ### `mode_invalid` (400)[​](#mode_invalid-400 "Direct link to mode_invalid-400") > "The value of the TeamUp-Request-Mode header must be one of: provider, customer." **What it means:** The `TeamUp-Request-Mode` header was present but not a valid value. **Fix:** Use exactly `provider` or `customer` (lowercase). ### `authentication_failed` (401)[​](#authentication_failed-401 "Direct link to authentication_failed-401") > "The token you provided is expired or invalid" **What it means:** The `Authorization` header used the `Bearer` prefix, but the credential itself failed — it's expired, revoked, malformed, or contains stray whitespace ("Invalid token header. Token string should not contain spaces."). **Fix:** Issue a fresh token and check the header formatting. Note the flip side: if the `Authorization` **prefix** is wrong, you will not get this 401 — the request proceeds unauthenticated and typically fails later with a 403 `permission_denied` naming you an "unregistered customer". Debugging a 403[​](#debugging-a-403 "Direct link to Debugging a 403") --------------------------------------------------------------------- Work through these in order — they resolve the vast majority of unexpected `403` responses: 1. **Check the `Authorization` prefix.** Use `Authorization: Bearer ` for both M2M tokens and OAuth access tokens. Any other prefix makes the API treat the request as unauthenticated without returning a 401. 2. **Check the token type against the mode.** Provider mode requires an M2M token or an OAuth token for a staff member at the provider. If provider mode keeps failing, the token type — not your code — is usually the problem. 3. **Send `TeamUp-Request-Mode` explicitly.** If you omit it, the API infers a mode: M2M tokens always run in provider mode; for user tokens the mode is inferred from the user's profiles at the provider, defaulting to customer mode when ambiguous. An explicit header removes the guesswork. 4. **Verify `TeamUp-Provider-ID`.** It must be the numeric ID of a provider your token was created for. 5. **Read the error message.** The role it names ("unregistered customer", "registered customer", "staff member/manager") is what the API resolved your request to — if that isn't who you meant to be, the problem is in steps 1–4, not in the endpoint. [ Previous Authentication ](/api-reference/authentication)[ Next Expanding Responses ](/api-reference/expanding-responses) * [Error Response Format](#error-response-format) * [HTTP Status Code Summary](#http-status-code-summary) * [Error Code Reference](#error-code-reference) * [Quick Reference](#quick-reference) * [`permission_denied` (403)](#permission_denied-403) * [`mode_not_allowed` (403)](#mode_not_allowed-403) * [`provider_invalid` (403)](#provider_invalid-403) * [`provider_header_invalid` (403)](#provider_header_invalid-403) * [`customer_invalid` (403)](#customer_invalid-403) * [`provider_header_missing` (400)](#provider_header_missing-400) * [`mode_invalid` (400)](#mode_invalid-400) * [`authentication_failed` (401)](#authentication_failed-401) * [Debugging a 403](#debugging-a-403) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Expanding Responses | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Expanding Responses Expanding Responses =================== Many objects allow you to request additional information as an expanded response by using the `expand` request parameter. This parameter is available on all API requests, and applies to the response of that request only. You can expand responses in two ways. In many cases, an object contains the ID of a related object in its response properties. For example, a `CustomerMembership` has an associated Membership ID. You can expand these objects in line with the expand request parameter. The _Expandable_ label in this documentation indicates fields that you can expand into objects. Some available fields aren’t included in the responses by default, are are labelled as _Deferred_ fields in this documentation. For example, the `SMSAccount` object on a `Customer` is deferred because most use cases do not require it. You can request these fields as an expanded response by using the `expand` request parameter. You can expand recursively by specifying nested fields after a dot (.). For example, requesting `event.instructors` when fetching attendances expands the `event` ID property into a full `Event` object, then expands the `instructors` property on that event into an array of full `Instructor` objects. You can use the expand parameter on any endpoint that returns expandable fields, including list, create, and update endpoints. Expansions have a maximum depth of four levels. Performing deep expansions on numerous list requests will result in slower processing times. You can expand multiple objects at the same time by identifying multiple items in the expand array, e.g. `GET /api/v2/attendances?expand=event,customer`. [ Previous Errors ](/api-reference/errors)[ Next Field Inclusion ](/api-reference/field-inclusion) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Field Inclusion | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Field Inclusion On this page Field Inclusion =============== Use the `fields` query parameter to limit which fields are returned in the response. By default, all fields are included, except those marked as _Deferred_ which need to be targeted with the `expand` parameter. When `fields` is provided, only the specified fields are returned. This parameter is available on all API requests, and applies to the response only. It works on single retrieved objects as well as listed collections. This helps reduce response size and improve performance, especially for deeply nested or large objects. Syntax[​](#syntax "Direct link to Syntax") ------------------------------------------ Pass a comma-separated list of field names in the query string. To request fields from nested objects, use dot notation. Examples[​](#examples "Direct link to Examples") ------------------------------------------------ **Request only top-level fields** `GET /api/v2/customers/123?fields=id,email` { "id": 123, "email": "jane@example.com"} **Request nested fields** `GET /api/v2/attendances?fields=event.name,customer.id,customer.email` { "count": 2323, "results": [ { "event": { "name": "Spin" }, "customer": { "id": 123, "email": "jane@example.com" } } /// more results... ]} [ Previous Expanding Responses ](/api-reference/expanding-responses)[ Next Pagination ](/api-reference/pagination) * [Syntax](#syntax) * [Examples](#examples) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Introduction | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Introduction Introduction ============ We offer a full-featured API to interact with your TeamUp business. These APIs can power custom websites or apps for your business, or allow automations for your business. Check out our [Zapier integration](https://support.goteamup.com/en/collections/9313485-zapier) for a more user-friendly way to use TeamUp's API. The TeamUp API is organized around [REST](https://en.wikipedia.org/wiki/REST). Our API has resource-oriented URLs, accepts and returns JSON, and uses standard HTTP response codes. The first step is to create an Application, which represents the system you're integrating with TeamUp's API. It may be a custom website, app, or a back office automation. The Application sets limits on what integration is allowed to do and can generate access tokens for your users. It also provides a reporting trail, as you'll be able to see in TeamUp's business dashboard which registrations and other actions were performed by your Application. See our [help guide](https://support.goteamup.com/en/articles/9327305-the-teamup-api) for how to create and configure your Application. [ Next Authentication ](/api-reference/authentication) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Pagination | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Pagination On this page Pagination ========== Many API resources support bulk fetches through “list” API methods. For example, you can list events, customers, or attendances. These list API methods follow a consistent structure and accept the following parameters: `page_size` and `page.` Our API uses offset-based pagination. You can request specific pages of data using the `page` parameter, and control the number of results per page using the `page_size` parameter. The response includes next and previous URLs to simplify pagination for clients. Paramaters[​](#paramaters "Direct link to Paramaters") ------------------------------------------------------ * **page\_size**: The number of objects to return per page. The default, as well as the max allowed size, is `100`. * **page**: Specifies the page of results to retrieve. The first page is 1. Response format[​](#response-format "Direct link to Response format") --------------------------------------------------------------------- Each paginated API response follows this structure: { "count": 125, "next": "https://goteamup.com/api/v2/events?page=3&page_size=25", "previous": "https://goteamup.com/api/v2/events?page=1&page_size=25", "results": [ { "id": 2452452252, "name": "Yoga" // More props... }, ... ]} * **count**: Specifies the page of results to retrieve. The first page is 1. * **previous**: URL to retrieve the next page of results (or `null` if there is no next page). * **next**: URL to retrieve the previous page of results (or `null` if there is no previous page). * **results**: Array of objects returned for the current page. [ Previous Field Inclusion ](/api-reference/field-inclusion)[ Next Rate Limits ](/api-reference/rate-limits) * [Paramaters](#paramaters) * [Response format](#response-format) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Rate Limits | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Introduction](/api-reference/introduction) * [Authentication](/api-reference/authentication) * [Errors](/api-reference/errors) * [Expanding Responses](/api-reference/expanding-responses) * [Field Inclusion](/api-reference/field-inclusion) * [Pagination](/api-reference/pagination) * [Rate Limits](/api-reference/rate-limits) * [Auth](/api-reference/endpoints/auth-application-retrieve) * [CRM](/api-reference/endpoints/teamup-rest-api) * [Core](/api-reference/endpoints/teamup-rest-api) * [Integrations](/api-reference/endpoints/integrations-list) * [Notifications](/api-reference/endpoints/teamup-rest-api) * [Reports](/api-reference/endpoints/teamup-rest-api) * [Store](/api-reference/endpoints/teamup-rest-api) * [](/) * Rate Limits On this page Rate Limits =========== The TeamUp API uses a number of safeguards against bursts of incoming traffic to help maximize its stability. If you send many requests in quick succession, you might see error responses with status code `429`. Unless otherwise noted in an endpoint's description, the rate limit is **250 requests per minute** for a caller. The caller is identified by the authenticated user or in the case of unauthenticated endpoints, the IP address. ### Staying under the limit[​](#staying-under-the-limit "Direct link to Staying under the limit") Leverage the `expand` parameter to fetch related data in the same request, rather than making multiple requests. ### Handling limiting gracefully[​](#handling-limiting-gracefully "Direct link to Handling limiting gracefully") A basic technique for integrations to gracefully handle limiting is to watch for `429` status codes and build in a retry mechanism. The retry mechanism should follow an [exponential backoff](https://docs.aws.amazon.com/prescriptive-guidance/latest/cloud-design-patterns/retry-backoff.html) schedule to reduce request volume when necessary. [ Previous Pagination ](/api-reference/pagination)[ Next Authenticated Application ](/api-reference/endpoints/auth-application-retrieve) * [Staying under the limit](#staying-under-the-limit) * [Handling limiting gracefully](#handling-limiting-gracefully) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Blog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. November 24, 2025 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) November 24, 2025 ================= November 24, 2025 · One min read We'll automatically update this area of the site when the TeamUp API changes. [ Newer post December 15, 2025 ](/changelog/2025/12/15) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. December 15, 2025 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) December 15, 2025 ================= December 15, 2025 · 2 min read ### GET /events * added the required property 'results/items/is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-list) ### POST /events * added the required property 'is\_full' to the response with the '201' status [ View updated docs ](/api-reference/endpoints/events-create) ### PUT /events/external\_id:{external\_id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-external-id-update) ### GET /events/{id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-retrieve) ### PUT /events/{id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-update) [ Newer post January 13, 2026 ](/changelog/2026/01/13)[ Older post November 24, 2025 ](/changelog/2025/11/24) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. January 13, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) January 13, 2026 ================ January 13, 2026 · 2 min read ### GET /applications * removed the required property 'results/items/type' from the response with the '200' status [View updated docs](/api-reference/endpoints/applications-list) ### POST /applications * removed the required property 'type' from the response with the '201' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-create) ### GET /applications/{id} * removed the required property 'type' from the response with the '200' status [View updated docs](/api-reference/endpoints/applications-retrieve) ### PATCH /applications/{id} * removed the required property 'type' from the response with the '200' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-partial-update) ### PUT /applications/{id} * removed the required property 'type' from the response with the '200' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-update) [ Newer post January 17, 2026 ](/changelog/2026/01/17)[ Older post December 15, 2025 ](/changelog/2025/12/15) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. January 17, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) January 17, 2026 ================ January 17, 2026 · 2 min read ### GET /store/orders * added the optional property 'results/items/locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-list) ### POST /store/orders * added the optional property 'locked\_at' to the response with the '201' status [View updated docs](/api-reference/endpoints/store-orders-create) ### GET /store/orders/current\_order * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-current-order-retrieve) ### GET /store/orders/{id} * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-retrieve) ### POST /store/orders/{id}/cancel * added the new optional request property 'locked\_at' * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-cancel-create) [ Newer post January 23, 2026 ](/changelog/2026/01/23)[ Older post January 13, 2026 ](/changelog/2026/01/13) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. January 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) January 23, 2026 ================ January 23, 2026 · 5 min read ### GET /customer\_membership\_holds/{id}/payment\_resolution * the 'reactivation\_billing\_period' response's property type/format changed from 'object'/'' to ''/'' for status '200' * the 'resolution' response's property type/format changed from 'object'/'' to ''/'' for status '200' * the 'start\_billing\_period' response's property type/format changed from 'object'/'' to ''/'' for status '200' * added the new 'days' enum value to the 'prorate\_strategy' response property for the response status '200' * added the new 'usage' enum value to the 'prorate\_strategy' response property for the response status '200' * the response optional property 'prorate\_strategy' became read-only for the status '200' * the response optional property 'reactivation\_billing\_period' became read-only for the status '200' * the response optional property 'resolution' became read-only for the status '200' * the response optional property 'start\_billing\_period' became read-only for the status '200' * added '#/components/schemas/ReactivationBillingPeriod' to the 'reactivation\_billing\_period' response property 'allOf' list for the response status '200' * added '#/components/schemas/Resolution' to the 'resolution' response property 'allOf' list for the response status '200' * added '#/components/schemas/StartBillingPeriod' to the 'start\_billing\_period' response property 'allOf' list for the response status '200' * the response property 'prorate\_strategy' became required for the status '200' * the response property 'reactivation\_billing\_period' became required for the status '200' * the response property 'resolution' became required for the status '200' * the response property 'start\_billing\_period' became required for the status '200' [View updated docs](/api-reference/endpoints/customer-membership-holds-payment-resolution-retrieve) ### POST /fees\_calculator * removed the required property 'results' from the response with the '200' status * added the required property 'fee\_line\_items' to the response with the '200' status * added the required property 'post\_tax\_price' to the response with the '200' status * added the required property 'pre\_tax\_price' to the response with the '200' status [View updated docs](/api-reference/endpoints/fees-calculator-create) ### GET /checkouts * added the optional property 'results/items/fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-list) ### POST /checkouts * added the optional property 'fee\_line\_items' to the response with the '201' status [View updated docs](/api-reference/endpoints/checkouts-create) ### GET /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-retrieve) ### PATCH /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-partial-update) ### PUT /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-update) ### POST /checkouts/{id}/add\_item * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-add-item-create) ### GET /purchase\_fees * added the required property 'results/items/id' to the response with the '200' status [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /purchase\_fees/{id} * added the required property 'id' to the response with the '200' status [View updated docs](/api-reference/endpoints/purchase-fees-retrieve) [ Newer post January 27, 2026 ](/changelog/2026/01/27)[ Older post January 17, 2026 ](/changelog/2026/01/17) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. January 27, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) January 27, 2026 ================ January 27, 2026 · One min read ### POST /membership\_payment\_plans * the 'billing\_period\_length' request property's min was set to '1.00' [View updated docs](/api-reference/endpoints/membership-payment-plans-create) [ Newer post February 3, 2026 ](/changelog/2026/02/03)[ Older post January 23, 2026 ](/changelog/2026/01/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. February 3, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) February 3, 2026 ================ February 3, 2026 · One min read ### POST /applications * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-create) ### PATCH /applications/{id} * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-partial-update) ### PUT /applications/{id} * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-update) [ Newer post February 13, 2026 ](/changelog/2026/02/13)[ Older post January 27, 2026 ](/changelog/2026/01/27) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. February 13, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) February 13, 2026 ================= February 13, 2026 · One min read ### GET /staff * added the optional property 'results/items/user' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### POST /staff * added the optional property 'user' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-create) [ Newer post February 24, 2026 ](/changelog/2026/02/24)[ Older post February 3, 2026 ](/changelog/2026/02/03) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. February 24, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) February 24, 2026 ================= February 24, 2026 · One min read ### GET /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-retrieve) ### PATCH /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-partial-update) ### PUT /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-update) [ Newer post February 27, 2026 ](/changelog/2026/02/27)[ Older post February 13, 2026 ](/changelog/2026/02/13) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. February 27, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) February 27, 2026 ================= February 27, 2026 · 5 min read ### GET /crm/workflow\_actions * added the new 'crm\_status\_change' enum value to the 'results/items/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new enum value 'customer\_status.changed' to the 'query' request parameter 'workflow\_trigger' [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '201' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### GET /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflows * added the new 'customer\_status.changed' enum value to the 'results/items/trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '201' (media type: application/json) * added the new 'customer\_status.changed' enum value to the request property 'trigger' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-update) ### GET /webhook\_destinations * added the new 'customer\_status.changed' enum value to the 'results/items/feed\_item\_types/items/' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new 'customer\_status.changed' enum value to the 'feed\_item\_types/items/' response property for the response status '201' (media type: application/json) * added the new 'customer\_status.changed' enum value to the request property 'feed\_item\_types/items/' (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [ Newer post March 12, 2026 ](/changelog/2026/03/12)[ Older post February 24, 2026 ](/changelog/2026/02/24) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 12, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 12, 2026 ============== March 12, 2026 · One min read ### POST /events/{id}/register * removed the request property 'event' (media type: application/json) [View updated docs](/api-reference/endpoints/events-register-create) ### POST /events/{id}/confirm\_attendance * endpoint added [View updated docs](/api-reference/endpoints/events-confirm-attendance-create) [ Newer post March 18, 2026 ](/changelog/2026/03/18)[ Older post February 27, 2026 ](/changelog/2026/02/27) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 18, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 18, 2026 ============== March 18, 2026 · 8 min read ### GET /crm/bulk\_status\_evaluations * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/bulk\_status\_evaluations/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-retrieve) ### GET /crm/lead\_forms * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### POST /crm/lead\_forms * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-create) ### DELETE /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-destroy) ### GET /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-retrieve) ### PATCH /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-partial-update) ### PUT /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-update) ### POST /crm/lead\_forms/{id}/submit * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-submit-create) ### GET /crm/lead\_sources * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### POST /crm/lead\_sources * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-create) ### GET /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-retrieve) ### PATCH /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-partial-update) ### PUT /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-update) ### GET /crm/settings * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-settings-retrieve) ### PATCH /crm/settings * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-settings-partial-update) ### GET /crm/statuses * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/workflow\_action\_types/{type} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-action-types-retrieve) ### GET /crm/workflow\_actions * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### DELETE /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-destroy) ### GET /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflow\_triggers/{trigger} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-triggers-retrieve) ### GET /crm/workflows * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-update) [ Newer post March 23, 2026 ](/changelog/2026/03/23)[ Older post March 12, 2026 ](/changelog/2026/03/12) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 23, 2026 ============== March 23, 2026 · One min read ### GET /customer\_membership\_holds/{id}/payment\_resolution * the response property 'resolution' became nullable for the status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-payment-resolution-retrieve) [ Newer post March 24, 2026 ](/changelog/2026/03/24)[ Older post March 18, 2026 ](/changelog/2026/03/18) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 24, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 24, 2026 ============== March 24, 2026 · One min read ### GET /customer\_forms * added the optional property 'results/items/required\_fields' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the optional property 'required\_fields' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) [ Newer post March 26, 2026 ](/changelog/2026/03/26)[ Older post March 23, 2026 ](/changelog/2026/03/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 26, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 26, 2026 ============== March 26, 2026 · 2 min read ### GET /customer\_fields * added the optional property 'results/items/is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * added the optional property 'is\_required' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /events/{id}/noshow\_attendance * endpoint added [View updated docs](/api-reference/endpoints/events-noshow-attendance-create) [ Newer post March 31, 2026 ](/changelog/2026/03/31)[ Older post March 24, 2026 ](/changelog/2026/03/24) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. March 31, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) March 31, 2026 ============== March 31, 2026 · 2 min read ### POST /events/{id}/noshow\_attendance * api path removed without deprecation [View updated docs](/api-reference/endpoints/events-noshow-attendance-create) ### GET /customers * added the new optional 'query' request parameter 'status' [View updated docs](/api-reference/endpoints/customers-list) ### POST /events/{id}/mark\_no\_show * endpoint added [View updated docs](/api-reference/endpoints/events-mark-no-show-create) ### POST /events/{id}/register * added the new optional request property 'comped' (media type: application/json) [View updated docs](/api-reference/endpoints/events-register-create) ### GET /policy\_agreements * added the new optional 'query' request parameter 'customer' [View updated docs](/api-reference/endpoints/policy-agreements-list) ### POST /policy\_agreements * added the new optional request property 'customer' (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-create) [ Newer post April 1, 2026 ](/changelog/2026/04/01)[ Older post March 26, 2026 ](/changelog/2026/03/26) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 1, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 1, 2026 ============= April 1, 2026 · 2 min read ### GET /venue\_rooms * added the optional property 'results/items/sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### POST /venue\_rooms * added the optional property 'sequence' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-create) ### PATCH /venue\_rooms/ordering * endpoint added [View updated docs](/api-reference/endpoints/venue-rooms-ordering-partial-update) ### GET /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-retrieve) ### PATCH /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-partial-update) ### PUT /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-update) [ Newer post April 7, 2026 ](/changelog/2026/04/07)[ Older post March 31, 2026 ](/changelog/2026/03/31) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 7, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 7, 2026 ============= April 7, 2026 · One min read ### POST /auth/logout * endpoint added [View updated docs](/api-reference/endpoints/auth-logout-create) [ Newer post April 14, 2026 ](/changelog/2026/04/14)[ Older post April 1, 2026 ](/changelog/2026/04/01) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 14, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 14, 2026 ============== April 14, 2026 · One min read ### GET /ai/business\_advisor\_config * endpoint added [View updated docs](/api-reference/endpoints/ai-business-advisor-config-retrieve) ### PATCH /ai/business\_advisor\_config * endpoint added [View updated docs](/api-reference/endpoints/ai-business-advisor-config-partial-update) ### GET /memberships * added the new optional `query` request parameter `name_contains` [View updated docs](/api-reference/endpoints/memberships-list) [ Newer post April 16, 2026 ](/changelog/2026/04/16)[ Older post April 7, 2026 ](/changelog/2026/04/07) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 16, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 16, 2026 ============== April 16, 2026 · 8 min read ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /content * added the optional property `results/items/instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-remove-favorite-create) ### GET /instructors * added the optional property `results/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /staff * added the optional property `results/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-create) [ Newer post April 20, 2026 ](/changelog/2026/04/20)[ Older post April 14, 2026 ](/changelog/2026/04/14) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 20, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 20, 2026 ============== April 20, 2026 · One min read ### GET /venue\_rooms * added the new optional `query` request parameter `sort` [View updated docs](/api-reference/endpoints/venue-rooms-list) [ Newer post April 22, 2026 ](/changelog/2026/04/22)[ Older post April 16, 2026 ](/changelog/2026/04/16) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 22, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 22, 2026 ============== April 22, 2026 · 2 min read ### GET /webhook\_destinations * added the new `crm_email.sent` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) * added the new `crm_interaction.created` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new `crm_email.sent` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `crm_interaction.created` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `crm_email.sent` enum value to the request property `feed_item_types/items/` (media type: application/json) * added the new `crm_interaction.created` enum value to the request property `feed_item_types/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [ Newer post April 23, 2026 ](/changelog/2026/04/23)[ Older post April 20, 2026 ](/changelog/2026/04/20) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 23, 2026 ============== April 23, 2026 · One min read ### POST /events/bulk\_uncancel * endpoint added [View updated docs](/api-reference/endpoints/events-bulk-uncancel-create) [ Newer post April 28, 2026 ](/changelog/2026/04/28)[ Older post April 22, 2026 ](/changelog/2026/04/22) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 28, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 28, 2026 ============== April 28, 2026 · 2 min read ### GET /customer\_forms * removed the optional property `results/items/required_fields` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * removed the optional property `required_fields` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) ### POST /customer\_fields * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### PATCH /customer\_fields/{id} * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) [ Newer post April 30, 2026 ](/changelog/2026/04/30)[ Older post April 23, 2026 ](/changelog/2026/04/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. April 30, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) April 30, 2026 ============== April 30, 2026 · One min read ### GET /webhook\_destinations * added the new `event.cancelled` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new `event.cancelled` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `event.cancelled` enum value to the request property `feed_item_types/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [ Newer post May 4, 2026 ](/changelog/2026/05/04)[ Older post April 28, 2026 ](/changelog/2026/04/28) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 4, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 4, 2026 =========== May 4, 2026 · 2 min read ### GET /auth/m2m\_tokens * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-retrieve) ### POST /auth/m2m\_tokens * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### DELETE /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-destroy) ### PATCH /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) [ Newer post May 7, 2026 ](/changelog/2026/05/07)[ Older post April 30, 2026 ](/changelog/2026/04/30) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 7, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 7, 2026 =========== May 7, 2026 · 27 min read ### GET /customer\_fields * the response property `results/items/created_at` became nullable for the status `200` (media type: application/json) * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * the response property `created_at` became nullable for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /offering\_types * removed the request body [View updated docs](/api-reference/endpoints/offering-types-create) ### GET /ai/business\_advisor\_reports * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/ai-business-advisor-reports-list) ### GET /applications * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/applications-list) ### GET /attendances * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/attendances-list) ### GET /auth/profiles * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /availability\_schedule\_offering\_types * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### GET /bulk\_actions/{id}/results * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/bulk-actions-results-list) ### GET /business\_closures * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/business-closures-list) ### GET /checkouts * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### GET /communication/notification\_types/membership\_penalty/messages * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/communication-notification-types-membership-penalty-messages-list) ### GET /content * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content\_collections * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_filters * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-filters-list) ### GET /course\_session\_attendances * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/course-session-attendances-list) ### GET /course\_sessions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /courses * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/courses-list) ### GET /customer\_field\_values * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-field-values-list) ### GET /customer\_form\_submissions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-form-submissions-list) ### GET /customer\_forms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_issues * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-issues-list) ### GET /customer\_membership\_holds * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-list) ### GET /customer\_memberships * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### GET /customer\_registration\_blocks * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-registration-blocks-list) ### GET /customers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### POST /customers/bulk\_delete * added the new optional request property `cancel_active_memberships` (media type: application/json) * added the new optional request property `cancel_pending_payments` (media type: application/json) [View updated docs](/api-reference/endpoints/customers-bulk-delete-create) ### GET /discount\_code\_applicabilities * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-applicabilities-list) ### GET /discount\_code\_groups * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-groups-list) ### GET /discount\_codes * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-codes-list) ### GET /events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/events-list) ### GET /external\_calendars/accounts * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-accounts-list) ### GET /external\_calendars/events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-events-list) ### GET /external\_calendars/staff\_calendar\_settings * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-staff-calendar-settings-list) ### GET /family\_invites * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/family-invites-list) ### GET /instructor\_pay\_rates * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/instructor-pay-rates-list) ### GET /instructors * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### GET /integrations/kisi/groups * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-kisi-groups-list) ### GET /integrations/wellhub/venue\_mappings * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-wellhub-venue-mappings-list) ### GET /integrations/zoom/users * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-zoom-users-list) ### GET /invoices * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /joining\_fees * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_categories * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### GET /membership\_payment\_plans * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### GET /membership\_penalty\_systems * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-penalty-systems-list) ### GET /membership\_registration\_grants * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-registration-grants-list) ### GET /membership\_terms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-terms-list) ### GET /memberships * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_type\_categories * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-type-categories-list) ### GET /offering\_types * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /payment\_methods * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### GET /payment\_processors * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) * added the required property `results/items/is_offline` to the response with the `200` status (media type: application/json) * added the required property `results/items/is_usable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-processors-list) ### GET /payment\_subscriptions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-subscriptions-list) ### GET /policies * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policies-list) ### GET /policy\_agreements * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-list) ### GET /policy\_versions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policy-versions-list) ### GET /providers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /purchase\_fees * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /push\_notification\_tokens * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/push-notification-tokens-list) ### GET /recurring\_reservations * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id}/unavailable\_upcoming\_events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-unavailable-upcoming-events-list) ### GET /registration\_options * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /registration\_timelines * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-timelines-list) ### GET /slots * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/slots-list) ### GET /staff * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### GET /store/inventory\_adjustments * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-inventory-adjustments-list) ### GET /store/order\_items * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-order-items-list) ### GET /store/orders * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-orders-list) ### GET /store/product\_attributes * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-attributes-list) ### GET /store/product\_variants * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-variants-list) ### GET /store/products * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-products-list) ### GET /venue\_rooms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### GET /venues * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/venues-list) ### GET /waiver\_agreements * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/waiver-agreements-list) ### GET /waivers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### GET /webhook\_destinations * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) [ Newer post May 11, 2026 ](/changelog/2026/05/11)[ Older post May 4, 2026 ](/changelog/2026/05/04) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 11, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 11, 2026 ============ May 11, 2026 · One min read ### GET /customers/{id}/missing\_requisites * endpoint added [View updated docs](/api-reference/endpoints/customers-missing-requisites-retrieve) [ Newer post May 13, 2026 ](/changelog/2026/05/13)[ Older post May 7, 2026 ](/changelog/2026/05/07) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 13, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 13, 2026 ============ May 13, 2026 · One min read ### GET /reports/customer\_crm\_progression/data * endpoint added [View updated docs](/api-reference/endpoints/reports-customer-crm-progression-data-get-data) ### POST /reports/customer\_crm\_progression/export * endpoint added [View updated docs](/api-reference/endpoints/reports-customer-crm-progression-export-export-data) [ Newer post May 14, 2026 ](/changelog/2026/05/14)[ Older post May 11, 2026 ](/changelog/2026/05/11) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 14, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 14, 2026 ============ May 14, 2026 · One min read ### PATCH /customers/{id} * removed the request body [View updated docs](/api-reference/endpoints/customers-partial-update) ### PUT /customers/{id} * removed the request body [View updated docs](/api-reference/endpoints/customers-update) [ Newer post May 18, 2026 ](/changelog/2026/05/18)[ Older post May 13, 2026 ](/changelog/2026/05/13) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 18, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 18, 2026 ============ May 18, 2026 · One min read ### GET /customers * for the `query` request parameter `status`, the type/format was changed from `string`/ ``to `array`/`` [View updated docs](/api-reference/endpoints/customers-list) [ Newer post May 20, 2026 ](/changelog/2026/05/20)[ Older post May 14, 2026 ](/changelog/2026/05/14) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 20, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 20, 2026 ============ May 20, 2026 · One min read ### POST /checkouts/{id}/cancel * endpoint added [View updated docs](/api-reference/endpoints/checkouts-cancel-create) [ Newer post May 26, 2026 ](/changelog/2026/05/26)[ Older post May 18, 2026 ](/changelog/2026/05/18) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 26, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 26, 2026 ============ May 26, 2026 · 2 min read ### GET /webhook\_destinations * added the new optional `query` request parameter `application` * added the optional property `results/items/status` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new optional request property `status` (media type: application/json) * added the optional property `status` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) ### DELETE /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-destroy) ### GET /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-retrieve) ### PATCH /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-partial-update) ### PUT /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-update) [ Newer post May 29, 2026 ](/changelog/2026/05/29)[ Older post May 20, 2026 ](/changelog/2026/05/20) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. May 29, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) May 29, 2026 ============ May 29, 2026 · One min read ### POST /registration\_eligibility/check * added the optional property `open_checkout_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-eligibility-check-create) ### GET /store/products * added the new optional `query` request parameter `id` [View updated docs](/api-reference/endpoints/store-products-list) [ Newer post June 4, 2026 ](/changelog/2026/06/04)[ Older post May 26, 2026 ](/changelog/2026/05/26) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 4, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 4, 2026 ============ June 4, 2026 · 4 min read ### GET /events * added the required property `results/items/active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-list) ### POST /events * added the required property `active_registration_status/cancellation_closes_at` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-create) ### PUT /events/external\_id:{external\_id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-external-id-update) ### GET /events/{id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-retrieve) ### PUT /events/{id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-update) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `assigned_staff` * added the new optional `query` request parameter `has_failed_payments` * added the new optional `query` request parameter `has_issues` * added the new optional `query` request parameter `status` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `assigned_staff` (media type: application/json) * added the new optional request property `has_failed_payments` (media type: application/json) * added the new optional request property `has_issues` (media type: application/json) * added the new optional request property `status` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `assigned_staff` * added the new optional `query` request parameter `has_failed_payments` * added the new optional `query` request parameter `has_issues` * added the new optional `query` request parameter `status` * added the enum value `issues` to the property `items/` of the `query` request parameter `columns` * added the enum value `status` to the property `items/` of the `query` request parameter `columns` * added the enum value `status.slug` to the property `items/` of the `query` request parameter `columns` * added the enum value `status_slug` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/issues` to the response with the `200` status * added the optional property `rows/items/status` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `assigned_staff` (media type: application/json) * added the new optional request property `has_failed_payments` (media type: application/json) * added the new optional request property `has_issues` (media type: application/json) * added the new optional request property `status` (media type: application/json) * added the new `issues` enum value to the request property `columns/items/` (media type: application/json) * added the new `status` enum value to the request property `columns/items/` (media type: application/json) * added the new `status.slug` enum value to the request property `columns/items/` (media type: application/json) * added the new `status_slug` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post June 8, 2026 ](/changelog/2026/06/08)[ Older post May 29, 2026 ](/changelog/2026/05/29) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 8, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 8, 2026 ============ June 8, 2026 · One min read ### GET /communication/notification\_types/missing\_forms\_waivers * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-retrieve) ### PATCH /communication/notification\_types/missing\_forms\_waivers * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-partial-update) ### GET /communication/notification\_types/missing\_forms\_waivers/metadata * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-metadata-retrieve) [ Newer post June 9, 2026 ](/changelog/2026/06/09)[ Older post June 4, 2026 ](/changelog/2026/06/04) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 9, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 9, 2026 ============ June 9, 2026 · 3 min read ### POST /customers/{id}/resend\_invite * endpoint added [ View updated docs ](/api-reference/endpoints/customers-resend-invite-create) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `last_payment_amount_gte` * added the new optional `query` request parameter `last_payment_amount_lte` * added the new optional `query` request parameter `total_spend_amount_gte` * added the new optional `query` request parameter `total_spend_amount_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `last_payment_amount_gte` (media type: application/json) * added the new optional request property `last_payment_amount_lte` (media type: application/json) * added the new optional request property `total_spend_amount_gte` (media type: application/json) * added the new optional request property `total_spend_amount_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `last_payment_amount_gte` * added the new optional `query` request parameter `last_payment_amount_lte` * added the new optional `query` request parameter `total_spend_amount_gte` * added the new optional `query` request parameter `total_spend_amount_lte` * added the enum value `total_spend_amount` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/total_spend_amount` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `last_payment_amount_gte` (media type: application/json) * added the new optional request property `last_payment_amount_lte` (media type: application/json) * added the new optional request property `total_spend_amount_gte` (media type: application/json) * added the new optional request property `total_spend_amount_lte` (media type: application/json) * added the new `total_spend_amount` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /staff/{id}/ui\_settings * endpoint added [ View updated docs ](/api-reference/endpoints/staff-ui-settings-retrieve) ### PATCH /staff/{id}/ui\_settings * endpoint added [ View updated docs ](/api-reference/endpoints/staff-ui-settings-partial-update) [ Newer post June 11, 2026 ](/changelog/2026/06/11)[ Older post June 8, 2026 ](/changelog/2026/06/08) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 11, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 11, 2026 ============= June 11, 2026 · One min read ### GET /providers/{id}/entitlements * added the required property `teamup_perform` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-entitlements-retrieve) [ Newer post June 16, 2026 ](/changelog/2026/06/16)[ Older post June 9, 2026 ](/changelog/2026/06/09) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 16, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 16, 2026 ============= June 16, 2026 · 71 min read ### GET /availability\_schedule\_offering\_types * response property `results/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### POST /availability\_schedules * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-create) ### GET /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-retrieve) ### PATCH /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-partial-update) ### PUT /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-update) ### DELETE /availability\_schedules/{id}/offering\_types/{offering\_type\_id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-offering-types-destroy) ### GET /content * response property `results/items/instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `results/items/instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content/{id} * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-remove-favorite-create) ### GET /content\_collections * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_collections/{id} * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-retrieve) ### GET /instructors * response property `results/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `results/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `results/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### POST /instructors * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `201` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /memberships * response property `results/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### POST /memberships * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `plans` became not read-only for the status `201` (media type: application/json) * the response required property `terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-create) ### GET /memberships/{id} * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `plans` became not read-only for the status `200` (media type: application/json) * the response required property `terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-retrieve) ### PUT /memberships/{id} * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `plans` became not read-only for the status `200` (media type: application/json) * the response required property `terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-update) ### GET /offering\_types * response property `results/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### POST /offering\_types * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-create) ### GET /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-retrieve) ### PATCH /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-partial-update) ### PUT /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-update) ### GET /customer\_fields * added the required property `results/items/forms` to the response with the `200` status (media type: application/json) * added the required property `results/items/is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `201` status (media type: application/json) * added the required property `is_deletable` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /customers/{id}/send\_missing\_forms\_email * endpoint added [View updated docs](/api-reference/endpoints/customers-send-missing-forms-email-create) [ Newer post June 22, 2026 ](/changelog/2026/06/22)[ Older post June 11, 2026 ](/changelog/2026/06/11) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 22, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 22, 2026 ============= June 22, 2026 · 4 min read ### PUT /communication/broadcast\_messages/{id} * added the new required request property `channel` (media type: application/json) * added the new required request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * added the new required request property `channel` (media type: application/json) * added the new required request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-create) ### POST /communication/broadcast\_messages * added the new optional request property `channel` (media type: application/json) * added the new optional request property `defer_sending` (media type: application/json) * added the new optional request property `subject` (media type: application/json) * added the required property `channel` to the response with the `201` status (media type: application/json) * added the required property `subject` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/email\_quota * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-email-quota-retrieve) ### POST /communication/broadcast\_messages/recipients\_preview * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-recipients-preview-create) ### POST /communication/broadcast\_messages/send\_test\_email * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-test-email-create) ### GET /communication/broadcast\_messages/{id} * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the new optional request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-partial-update) [ Newer post June 23, 2026 ](/changelog/2026/06/23)[ Older post June 16, 2026 ](/changelog/2026/06/16) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 23, 2026 ============= June 23, 2026 · 2 min read ### GET /auth/oidc/userinfo * endpoint added [View updated docs](/api-reference/endpoints/auth-oidc-userinfo-retrieve) ### GET /customer\_memberships * added the optional property `results/items/shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `shared_with` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) [ Newer post June 24, 2026 ](/changelog/2026/06/24)[ Older post June 22, 2026 ](/changelog/2026/06/22) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 24, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 24, 2026 ============= June 24, 2026 · 2 min read ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `registered_and_attended_count_gte` * added the new optional `query` request parameter `registered_and_attended_count_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `registered_and_attended_count_gte` (media type: application/json) * added the new optional request property `registered_and_attended_count_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `registered_and_attended_count_gte` * added the new optional `query` request parameter `registered_and_attended_count_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `registered_and_attended_count_gte` (media type: application/json) * added the new optional request property `registered_and_attended_count_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post June 29, 2026 ](/changelog/2026/06/29)[ Older post June 23, 2026 ](/changelog/2026/06/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. June 29, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) June 29, 2026 ============= June 29, 2026 · 11 min read ### POST /auth/m2m\_tokens * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #2: StaffProfile -> subschema #1: StaffProfile]/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-profiles-list) ### GET /content * added the optional property `results/items/instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-remove-favorite-create) ### GET /customer\_forms * added the optional property `results/items/stale_submissions_count` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the optional property `stale_submissions_count` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-retrieve) ### GET /instructors * added the optional property `results/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /providers/{id}/platform\_subscription * endpoint added [ View updated docs ](/api-reference/endpoints/providers-platform-subscription-retrieve) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `last_registration_starts_at_gte` * added the new optional `query` request parameter `last_registration_starts_at_lte` * added the new optional `query` request parameter `next_registration_starts_at_gte` * added the new optional `query` request parameter `next_registration_starts_at_lte` * added the new optional `query` request parameter `query` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `last_registration_starts_at_gte` (media type: application/json) * added the new optional request property `last_registration_starts_at_lte` (media type: application/json) * added the new optional request property `next_registration_starts_at_gte` (media type: application/json) * added the new optional request property `next_registration_starts_at_lte` (media type: application/json) * added the new optional request property `query` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `last_registration_starts_at_gte` * added the new optional `query` request parameter `last_registration_starts_at_lte` * added the new optional `query` request parameter `next_registration_starts_at_gte` * added the new optional `query` request parameter `next_registration_starts_at_lte` * added the new optional `query` request parameter `query` * added the enum value `last_registration` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.id` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.type` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_id` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_type` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.id` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.type` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_id` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_type` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/last_registration` to the response with the `200` status * added the optional property `rows/items/next_registration` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `last_registration_starts_at_gte` (media type: application/json) * added the new optional request property `last_registration_starts_at_lte` (media type: application/json) * added the new optional request property `next_registration_starts_at_gte` (media type: application/json) * added the new optional request property `next_registration_starts_at_lte` (media type: application/json) * added the new optional request property `query` (media type: application/json) * added the new `last_registration` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.id` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.type` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_id` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_type` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.id` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.type` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_id` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_type` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /staff * added the optional property `results/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-create) [ Newer post July 7, 2026 ](/changelog/2026/07/07)[ Older post June 24, 2026 ](/changelog/2026/06/24) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 7, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 7, 2026 ============ July 7, 2026 · 9 min read ### PUT /communication/broadcast\_messages/{id} * added the new required request property `content_check` (media type: application/json) * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * removed the request property `channel` (media type: application/json) * removed the request property `is_sent` (media type: application/json) * removed the request property `message` (media type: application/json) * removed the request property `scheduled_at` (media type: application/json) * removed the request property `sent_at` (media type: application/json) * removed the request property `sent_by` (media type: application/json) * removed the request property `subject` (media type: application/json) * removed the request property `use_case` (media type: application/json) * added the new optional request property `acknowledge_content_warning` (media type: application/json) * request body became optional * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-send-create) ### POST /auth/m2m\_tokens * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #2: StaffProfile]/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-profiles-list) ### POST /communication/broadcast\_messages * added the required property `content_check` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/{id} * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-partial-update) ### GET /content * added the optional property `results/items/instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-remove-favorite-create) ### GET /customer\_forms * added the required property `results/items/is_deletable` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-retrieve) ### GET /instructors * added the optional property `results/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /integrations/marketing\_suite/config * endpoint added [ View updated docs ](/api-reference/endpoints/integrations-marketing-suite-config-retrieve) ### POST /integrations/marketing\_suite/launch\_sso * endpoint added [ View updated docs ](/api-reference/endpoints/integrations-marketing-suite-launch-sso-create) ### GET /providers/{id}/entitlements * added the required property `marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/providers-entitlements-retrieve) ### GET /staff * added the optional property `results/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-create) [ Newer post July 9, 2026 ](/changelog/2026/07/09)[ Older post June 29, 2026 ](/changelog/2026/06/29) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 9, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 9, 2026 ============ July 9, 2026 · 2 min read ### PATCH /communication/notification\_types/missing\_forms\_waivers * the request property `resend_interval_days` became not nullable (media type: application/json) * added the new optional request property `frequency` (media type: application/json) * added the required property `frequency` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-partial-update) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /communication/notification\_types/missing\_forms\_waivers * added the required property `frequency` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-retrieve) [ Newer post July 13, 2026 ](/changelog/2026/07/13)[ Older post July 7, 2026 ](/changelog/2026/07/07) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 13, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 13, 2026 ============= July 13, 2026 · 2 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #4: CreditCardRead]/expiration_month` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #4: CreditCardRead]/expiration_year` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * added the required property `results/items/oneOf[subschema #1: PaypalRead -> subschema #2: PaypalRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #2: MandateRead -> subschema #1: MandateRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #3: BankAccountRead -> subschema #6: BankAccountRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #4: CreditCardRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #5: PayFastRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #6: OfflinePaymentRead -> subschema #3: OfflinePaymentRead]/label` to the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead]/expiration_month` became read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead]/expiration_year` became read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### PATCH /payment\_methods/{id} * endpoint added [View updated docs](/api-reference/endpoints/payment-methods-partial-update) [ Newer post July 14, 2026 ](/changelog/2026/07/14)[ Older post July 9, 2026 ](/changelog/2026/07/09) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 14, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 14, 2026 ============= July 14, 2026 · 4 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_month` response's property `type` changed from `string` to `integer` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_year` response's property `type` changed from `string` to `integer` for status `200` (media type: application/json) * removed the required property `results/items/oneOf[subschema #1: MandateRead -> subschema #4: MandateRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #2: PaypalRead -> subschema #3: PaypalRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #3: OfflinePaymentRead -> subschema #5: OfflinePaymentRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #5: PayFastRead -> subschema #6: PayFastRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #6: BankAccountRead -> subschema #2: BankAccountRead]/label` from the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_month` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_year` became not read-only for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/payment-methods-list) ### PATCH /payment\_methods/{id} * api removed without deprecation [ View updated docs ](/api-reference/endpoints/payment-methods-partial-update) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `segment` * added the new optional `query` request parameter `extra_customer_fields` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `segment` (media type: application/json) * added the new optional request property `extra_customer_fields` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `segment` * added the new optional `query` request parameter `extra_customer_fields` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `segment` (media type: application/json) * added the new optional request property `extra_customer_fields` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post July 15, 2026 ](/changelog/2026/07/15)[ Older post July 13, 2026 ](/changelog/2026/07/13) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 15, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 15, 2026 ============= July 15, 2026 · 5 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_month` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_year` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * added the required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #2: BankAccountRead -> subschema #5: BankAccountRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #3: PaypalRead -> subschema #1: PaypalRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #4: MandateRead -> subschema #3: MandateRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #5: OfflinePaymentRead -> subschema #6: OfflinePaymentRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #6: PayFastRead -> subschema #4: PayFastRead]/label` to the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_month` became read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_year` became read-only for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/payment-methods-list) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `last_broadcast_at_gte` * added the new optional `query` request parameter `last_broadcast_at_lte` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `last_broadcast_at_gte` (media type: application/json) * added the new optional request property `last_broadcast_at_lte` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `last_broadcast_at_gte` * added the new optional `query` request parameter `last_broadcast_at_lte` * added the new optional `query` request parameter `segment` * added the enum value `last_broadcast_at` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/last_broadcast_at` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `last_broadcast_at_gte` (media type: application/json) * added the new optional request property `last_broadcast_at_lte` (media type: application/json) * added the new optional request property `segment` (media type: application/json) * added the new `last_broadcast_at` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### PATCH /payment\_methods/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/payment-methods-partial-update) ### GET /providers/{id}/entitlements * added the new optional `query` request parameter `expand` * added the new optional `query` request parameter `fields` [ View updated docs ](/api-reference/endpoints/providers-entitlements-retrieve) [ Newer post July 17, 2026 ](/changelog/2026/07/17)[ Older post July 14, 2026 ](/changelog/2026/07/14) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 17, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 17, 2026 ============= July 17, 2026 · 3 min read ### POST /customers/{id}/send\_missing\_forms\_email * removed the request body * removed the required property `created_at` from the response with the `200` status (media type: application/json) * removed the required property `email` from the response with the `200` status (media type: application/json) * removed the required property `family_role` from the response with the `200` status (media type: application/json) * removed the required property `id` from the response with the `200` status (media type: application/json) * removed the required property `image` from the response with the `200` status (media type: application/json) * removed the required property `is_lead` from the response with the `200` status (media type: application/json) * removed the required property `is_status_locked` from the response with the `200` status (media type: application/json) * removed the required property `object` from the response with the `200` status (media type: application/json) * removed the required property `participating` from the response with the `200` status (media type: application/json) * removed the required property `provider` from the response with the `200` status (media type: application/json) * removed the required property `referral_code` from the response with the `200` status (media type: application/json) * removed the required property `status` from the response with the `200` status (media type: application/json) * removed the required property `visibility` from the response with the `200` status (media type: application/json) * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * removed the optional property `credit_balance` from the response with the `200` status (media type: application/json) * removed the optional property `customer_venue` from the response with the `200` status (media type: application/json) * removed the optional property `family` from the response with the `200` status (media type: application/json) * removed the optional property `field_values` from the response with the `200` status (media type: application/json) * removed the optional property `first_name` from the response with the `200` status (media type: application/json) * removed the optional property `is_opted_into_broadcast_messages` from the response with the `200` status (media type: application/json) * removed the optional property `is_opted_into_sms_marketing` from the response with the `200` status (media type: application/json) * removed the optional property `last_name` from the response with the `200` status (media type: application/json) * removed the optional property `lead_source` from the response with the `200` status (media type: application/json) * removed the optional property `sms_account` from the response with the `200` status (media type: application/json) * removed the optional property `staff_assignments` from the response with the `200` status (media type: application/json) * added the required property `message` to the response with the `200` status (media type: application/json) * added the required property `reason` to the response with the `200` status (media type: application/json) * added the required property `success` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-send-missing-forms-email-create) [ Newer post July 22, 2026 ](/changelog/2026/07/22)[ Older post July 15, 2026 ](/changelog/2026/07/15) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 22, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 22, 2026 ============= July 22, 2026 · One min read ### GET /customer\_memberships * added the new optional `query` request parameter `owned_or_shared_with_family` [View updated docs](/api-reference/endpoints/customer-memberships-list) ### PATCH /waivers/ordering * endpoint added [View updated docs](/api-reference/endpoints/waivers-ordering-partial-update) [ Newer post July 23, 2026 ](/changelog/2026/07/23)[ Older post July 17, 2026 ](/changelog/2026/07/17) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. July 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) July 23, 2026 ============= July 23, 2026 · 7 min read ### GET /customer\_forms * added the optional property `results/items/membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/offering_type_settings` to the response with the `200` status (media type: application/json) * added the required property `results/items/timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### POST /customer\_forms * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `201` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `201` status (media type: application/json) * added the optional property `timing_mode` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-create) ### GET /customer\_forms/{id} * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the required property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) ### PATCH /customer\_forms/{id} * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-partial-update) ### PUT /customer\_forms/{id} * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-update) ### GET /memberships * added the new optional `query` request parameter `waivers` [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_types * added the new optional `query` request parameter `waivers` [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /waivers * added the optional property `results/items/can_edit` to the response with the `200` status (media type: application/json) * added the optional property `results/items/membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/signed_profile_waiver_count` to the response with the `200` status (media type: application/json) * added the required property `results/items/memberships` to the response with the `200` status (media type: application/json) * added the required property `results/items/offering_types` to the response with the `200` status (media type: application/json) * added the required property `results/items/timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### POST /waivers * endpoint added [View updated docs](/api-reference/endpoints/waivers-create) ### GET /waivers/{id} * added the optional property `can_edit` to the response with the `200` status (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `signed_profile_waiver_count` to the response with the `200` status (media type: application/json) * added the required property `memberships` to the response with the `200` status (media type: application/json) * added the required property `offering_types` to the response with the `200` status (media type: application/json) * added the required property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-retrieve) ### PATCH /waivers/{id} * endpoint added [View updated docs](/api-reference/endpoints/waivers-partial-update) ### PUT /waivers/{id} * endpoint added [View updated docs](/api-reference/endpoints/waivers-update) ### POST /waivers/{id}/archive * endpoint added [View updated docs](/api-reference/endpoints/waivers-archive-create) ### POST /waivers/{id}/archive-and-copy * endpoint added [View updated docs](/api-reference/endpoints/waivers-archive-and-copy-create) [ Newer post August 10, 2026 ](/changelog/2026/08/10)[ Older post July 22, 2026 ](/changelog/2026/07/22) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 10, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 10, 2026 =============== August 10, 2026 · 8 min read This release adds two new endpoints for sending customer forms and waivers, and introduces invitation\_url fields across customer and membership endpoints to enable customer invitation workflows. Additionally, provider endpoints now expose registration\_settings to help configure customer registration. * [POST /customer\_forms/{id}/send](/api-reference/endpoints/customer-forms-send-create) – New endpoint to send customer forms to recipients * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) – Now includes invitation URLs for each shared membership, enabling you to invite customers to access their memberships * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) – Returns invitation URLs when creating memberships, allowing immediate customer invitation * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) – Includes invitation URLs in responses when bulk editing membership prices * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) – Returns the invitation URL for the membership * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) – Includes invitation URL when canceling a membership * [GET /customers](/api-reference/endpoints/customers-list) – Now returns invitation URLs for each customer, enabling customer account invitations * [POST /customers](/api-reference/endpoints/customers-create) – Provides an invitation URL when creating new customers * [GET /customers/{id}](/api-reference/endpoints/customers-retrieve) – Returns the customer's invitation URL * [PATCH /customers/{id}](/api-reference/endpoints/customers-partial-update) – Includes invitation URL when partially updating customer details * [PUT /customers/{id}](/api-reference/endpoints/customers-update) – Returns invitation URL when updating customer information * [GET /customers/{id}/account\_status](/api-reference/endpoints/customers-account-status-retrieve) – Now includes the customer's invitation URL in account status responses * [POST /customers/{id}/add\_child](/api-reference/endpoints/customers-add-child-create) – Returns invitation URL when adding a child to a customer account * [POST /customers/{id}/change\_email](/api-reference/endpoints/customers-change-email-create) – Includes invitation URL when changing a customer's email * [POST /customers/{id}/change\_password](/api-reference/endpoints/customers-change-password-create) – Returns invitation URL after password changes * [PUT /customers/{id}/participation](/api-reference/endpoints/customers-participation-update) – Includes invitation URL when updating customer participation settings * [GET /providers](/api-reference/endpoints/providers-list) – Now exposes registration settings for each provider * [GET /providers/{id}](/api-reference/endpoints/providers-retrieve) – Returns the provider's registration settings * [POST /providers/{id}/register\_customer](/api-reference/endpoints/providers-register-customer-create) – Includes invitation URL when registering a new customer with a provider * [GET /providers/{id}/registration\_settings](/api-reference/endpoints/providers-registration-settings-retrieve) – New endpoint to retrieve provider registration configuration * [POST /waivers/{id}/send](/api-reference/endpoints/waivers-send-create) – New endpoint to send waivers to recipients ### POST /customer\_forms/{id}/send * endpoint added [View updated docs](/api-reference/endpoints/customer-forms-send-create) ### GET /customer\_memberships * added the required property `results/items/shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the required property `shared_with/items/invitation_url` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /customers * added the required property `results/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### POST /customers * added the required property `invitation_url` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-create) ### GET /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-retrieve) ### PATCH /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-partial-update) ### PUT /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-update) ### GET /customers/{id}/account\_status * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-account-status-retrieve) ### POST /customers/{id}/add\_child * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-add-child-create) ### POST /customers/{id}/change\_email * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-change-email-create) ### POST /customers/{id}/change\_password * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-change-password-create) ### PUT /customers/{id}/participation * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-participation-update) ### GET /providers * added the optional property `results/items/registration_settings` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /providers/{id} * added the optional property `registration_settings` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-retrieve) ### POST /providers/{id}/register\_customer * added the required property `customer/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-register-customer-create) ### GET /providers/{id}/registration\_settings * endpoint added [View updated docs](/api-reference/endpoints/providers-registration-settings-retrieve) ### POST /waivers/{id}/send * endpoint added [View updated docs](/api-reference/endpoints/waivers-send-create) [ Newer post August 12, 2026 ](/changelog/2026/08/12)[ Older post July 23, 2026 ](/changelog/2026/07/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 12, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 12, 2026 =============== August 12, 2026 · 2 min read This release enhances the customer prerequisites and registration eligibility workflows. The missing requisites endpoint now supports hypothetical scenarios to check requirements before membership changes, and both endpoints have been updated to better distinguish between immediate and deferred form/waiver requirements. * [GET /customers/{id}/missing\_requisites](/api-reference/endpoints/customers-missing-requisites-retrieve) now accepts hypothetical membership and offering type parameters, allowing you to check what forms and waivers a customer would need if they were to change memberships or register for different offering types. The response structure for missing forms and waivers has also been simplified. * [POST /registration\_eligibility/check](/api-reference/endpoints/registration-eligibility-check-create) now returns separate lists of deferred forms and deferred waivers in prerequisites, enabling you to distinguish between requirements that must be completed immediately versus those that can be completed later. ### GET /customers/{id}/missing\_requisites * the `missing_forms` response's property `type` changed from `array<object>` to `string` for status `200` (media type: application/json) * the `missing_waivers` response's property `type` changed from `array<object>` to `string` for status `200` (media type: application/json) * added the new optional `query` request parameter `hypothetical_membership` * added the new optional `query` request parameter `hypothetical_offering_type` [View updated docs](/api-reference/endpoints/customers-missing-requisites-retrieve) ### POST /registration\_eligibility/check * added the optional property `prerequisites/deferred_forms` to the response with the `200` status (media type: application/json) * added the optional property `prerequisites/deferred_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-eligibility-check-create) [ Newer post August 19, 2026 ](/changelog/2026/08/19)[ Older post August 10, 2026 ](/changelog/2026/08/10) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 19, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 19, 2026 =============== August 19, 2026 · 4 min read All waiver endpoints now return a `created_datetime` field in their responses, providing timestamp information about when each waiver was originally created. This enhancement applies uniformly across list, retrieve, create, update, and archive operations, giving API consumers consistent access to waiver creation timestamps for auditing and chronological tracking purposes. * [GET /waivers](/api-reference/endpoints/waivers-list) – Each waiver in the results now includes its creation timestamp, enabling chronological sorting and filtering of waivers * [POST /waivers](/api-reference/endpoints/waivers-create) – Newly created waivers now return their creation timestamp in the response * [GET /waivers/{id}](/api-reference/endpoints/waivers-retrieve) – Waiver retrieval now includes the creation timestamp for audit and tracking purposes * [PATCH /waivers/{id}](/api-reference/endpoints/waivers-partial-update) – Partial updates now return the waiver's original creation timestamp in the response * [PUT /waivers/{id}](/api-reference/endpoints/waivers-update) – Full updates now return the waiver's original creation timestamp in the response * [POST /waivers/{id}/archive](/api-reference/endpoints/waivers-archive-create) – Archiving a waiver now returns its creation timestamp for record-keeping * [POST /waivers/{id}/archive-and-copy](/api-reference/endpoints/waivers-archive-and-copy-create) – Archive-and-copy operations now include the creation timestamp for both the archived waiver and its copy ### GET /waivers * added the required property `results/items/created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### POST /waivers * added the required property `created_datetime` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-create) ### GET /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-retrieve) ### PATCH /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-partial-update) ### PUT /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-update) ### POST /waivers/{id}/archive * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-archive-create) ### POST /waivers/{id}/archive-and-copy * added the required property `waiver/allOf[subschema #1: WaiverRead]/created_datetime` to the response with the `201` status (media type: application/json) * added the required property `waiver/allOf[subschema #1: WaiverRead]/created_datetime` to the response with the `202` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-archive-and-copy-create) [ Newer post August 24, 2026 ](/changelog/2026/08/24)[ Older post August 12, 2026 ](/changelog/2026/08/12) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 24, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 24, 2026 =============== August 24, 2026 · One min read This release improves error handling documentation for the OAuth token refresh endpoint by documenting the 400 Bad Request response. Developers can now better understand and handle failed token refresh attempts in their applications. * [POST /auth/refresh\_access\_token](/api-reference/endpoints/auth-refresh-access-token-create) now documents the 400 Bad Request error response, allowing developers to handle invalid or expired refresh token errors more effectively ### POST /auth/refresh\_access\_token * added the non-success response with the status `400` [View updated docs](/api-reference/endpoints/auth-refresh-access-token-create) [ Newer post August 25, 2026 ](/changelog/2026/08/25)[ Older post August 19, 2026 ](/changelog/2026/08/19) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 25, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 25, 2026 =============== August 25, 2026 · 10 min read ### GET /crm/bulk\_status\_evaluations * endpoint added [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/bulk\_status\_evaluations/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-retrieve) ### GET /crm/customer\_segments * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-create) ### DELETE /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-destroy) ### GET /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-update) ### GET /crm/interactions * endpoint added [View updated docs](/api-reference/endpoints/crm-interactions-list) ### POST /crm/interactions * endpoint added [View updated docs](/api-reference/endpoints/crm-interactions-create) ### GET /crm/lead\_forms * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### POST /crm/lead\_forms * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-create) ### DELETE /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-destroy) ### GET /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-retrieve) ### PATCH /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-partial-update) ### PUT /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-update) ### POST /crm/lead\_forms/{id}/submit * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-submit-create) ### GET /crm/lead\_sources * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### POST /crm/lead\_sources * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-create) ### GET /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-retrieve) ### PATCH /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-partial-update) ### PUT /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-update) ### GET /crm/settings * endpoint added [View updated docs](/api-reference/endpoints/crm-settings-retrieve) ### PATCH /crm/settings * endpoint added [View updated docs](/api-reference/endpoints/crm-settings-partial-update) ### GET /crm/status\_changes * endpoint added [View updated docs](/api-reference/endpoints/crm-status-changes-list) ### GET /crm/status\_changes/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-status-changes-retrieve) ### GET /crm/statuses * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/statuses/{id}/defaults * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-defaults-retrieve) ### GET /crm/workflow\_action\_types/{type} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-action-types-retrieve) ### GET /crm/workflow\_actions * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### DELETE /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-destroy) ### GET /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflow\_triggers/{trigger} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-triggers-retrieve) ### GET /crm/workflows * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-update) [ Newer post August 28, 2026 ](/changelog/2026/08/28)[ Older post August 24, 2026 ](/changelog/2026/08/24) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 28, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 28, 2026 =============== August 28, 2026 · 6 min read This release adds comprehensive support for lead source tracking across customer segments and reporting endpoints, enabling developers to filter and segment customers based on how they were acquired. Additionally, four new referral program endpoints have been introduced, allowing API consumers to programmatically access referral codes, generate QR codes, retrieve program details, and list referrals. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns lead source information in customer segment queries, enabling you to see how customers in each segment were acquired * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts lead source as a query criterion when creating segments, allowing you to build segments based on customer acquisition channels * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now includes lead source in the segment query details returned * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns lead source information in the updated segment response * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns lead source information in the updated segment response * [GET /platform/referral\_code](/api-reference/endpoints/platform-referral-code-retrieve) is a new endpoint that retrieves your referral code for sharing with potential referrals * [GET /platform/referral\_code/qr\_code](/api-reference/endpoints/platform-referral-code-qr-code-retrieve) is a new endpoint that generates a QR code for your referral link, making it easy to share in print or mobile contexts * [GET /platform/referral\_program](/api-reference/endpoints/platform-referral-program-retrieve) is a new endpoint that retrieves details about the referral program, including terms and rewards * [GET /platform/referrals](/api-reference/endpoints/platform-referrals-list) is a new endpoint that lists all referrals you've made, allowing you to track referral status and rewards * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now supports filtering by lead source, enabling you to analyze grouped customer data by acquisition channel * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now accepts lead source as a filter when exporting grouped customer reports * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now supports filtering by lead source, allowing you to analyze customer data by how they were acquired * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now accepts lead source as a filter when exporting customer reports ### GET /crm/customer\_segments * added the optional property `results/items/query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * added the new optional request property `query/lead_source` (media type: application/json) * added the optional property `query/lead_source` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /platform/referral\_code * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-code-retrieve) ### GET /platform/referral\_code/qr\_code * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-code-qr-code-retrieve) ### GET /platform/referral\_program * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-program-retrieve) ### GET /platform/referrals * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referrals-list) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `lead_source` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `lead_source` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `lead_source` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `lead_source` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post August 31, 2026 ](/changelog/2026/08/31)[ Older post August 25, 2026 ](/changelog/2026/08/25) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. August 31, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) August 31, 2026 =============== August 31, 2026 · 4 min read This release enhances referral program tracking and invoice management capabilities. Developers can now access detailed referral statistics, retrieve invoice receipt URLs, and view enriched currency formatting information for referral rewards. Additionally, account status responses now include referee service fee discount information for billing transparency. * [GET /platform/referral\_code](/api-reference/endpoints/platform-referral-code-retrieve) now returns referral statistics, enabling developers to track referral performance metrics directly through the API * [GET /invoices](/api-reference/endpoints/invoices-list) now includes receipt URLs for each invoice in the list, allowing clients to provide direct download links to payment receipts * [GET /invoices/{id}](/api-reference/endpoints/invoices-retrieve) now includes a receipt URL, enabling clients to retrieve and display the payment receipt for a specific invoice * [GET /platform/referral\_program](/api-reference/endpoints/platform-referral-program-retrieve) now provides detailed currency formatting information for reward amounts, including symbol, position, decimal formatting, ISO code, and formatted string representation for proper localized display * [GET /providers/{id}/account\_status](/api-reference/endpoints/providers-account-status-retrieve) now exposes referee service fee discounts in the billing information, allowing developers to display discount details for referred providers ### GET /platform/referral\_code * the `share_url` response's property `format` changed from `uri` to `none` for status `200` (media type: application/json) * added the required property `stats` to the response with the `200` status (media type: application/json) * the response required property `code` became read-only for the status `200` (media type: application/json) * the response required property `share_url` became read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referral-code-retrieve) ### GET /invoices * added the required property `results/items/receipt_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /invoices/{id} * added the required property `receipt_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-retrieve) ### GET /platform/referral\_program * added the optional property `reward_amount/currency_symbol` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/currency_symbol_position` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/decimal` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/iso_currency_code` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/string` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referral-program-retrieve) ### GET /providers/{id}/account\_status * added the required property `teamup_billing/allOf[subschema #1: TeamUpBilling]/referee_service_fee_discount` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-account-status-retrieve) [ Newer post September 1, 2026 ](/changelog/2026/09/01)[ Older post August 28, 2026 ](/changelog/2026/08/28) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 1, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 1, 2026 ================= September 1, 2026 · One min read This release introduces the ability to partially update events, enabling developers to modify specific event fields without sending the entire event payload. This improves efficiency and simplifies workflows where only a subset of event properties need to be changed. * [PATCH /events/{id}](/api-reference/endpoints/events-partial-update) — Update specific fields of an existing event without replacing the entire event resource, allowing for more efficient and targeted modifications to event properties such as title, dates, or custom fields. ### PATCH /events/{id} * endpoint added [View updated docs](/api-reference/endpoints/events-partial-update) [ Newer post September 9, 2026 ](/changelog/2026/09/09)[ Older post August 31, 2026 ](/changelog/2026/08/31) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 9, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 9, 2026 ================= September 9, 2026 · 2 min read This release adds refresh token expiration information to all authentication endpoints. Clients can now see when refresh tokens will expire, enabling better session management and proactive token renewal before expiration. * [POST /auth/password\_login](/api-reference/endpoints/auth-password-login-create) now returns `refresh_token_expires_in` to indicate when the refresh token will expire, allowing clients to plan token renewal in advance. * [POST /auth/refresh\_access\_token](/api-reference/endpoints/auth-refresh-access-token-create) now includes `refresh_token_expires_in` in the response, enabling clients to track the new refresh token's expiration time. * [POST /providers/{id}/register\_customer](/api-reference/endpoints/providers-register-customer-create) now provides `refresh_token_expires_in` in the credentials object, giving clients visibility into refresh token lifetime for newly registered customers. ### POST /auth/password\_login * added the required property `oneOf[subschema #2: GetAccessTokenSuccess]/refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-password-login-create) ### POST /auth/refresh\_access\_token * added the required property `refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-refresh-access-token-create) ### POST /providers/{id}/register\_customer * added the required property `credentials/refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-register-customer-create) [ Newer post September 10, 2026 ](/changelog/2026/09/10)[ Older post September 1, 2026 ](/changelog/2026/09/01) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 10, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 10, 2026 ================== September 10, 2026 · One min read This release adds filtering capabilities to the invoices endpoint, enabling developers to narrow invoice queries by customer membership status. This makes it easier to retrieve invoices for specific customer segments without additional client-side filtering. * [GET /invoices](/api-reference/endpoints/invoices-list) now supports filtering invoices by customer membership status using the `customer_membership` query parameter ### GET /invoices * added the new optional `query` request parameter `customer_membership` [View updated docs](/api-reference/endpoints/invoices-list) [ Newer post September 14, 2026 ](/changelog/2026/09/14)[ Older post September 9, 2026 ](/changelog/2026/09/09) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 14, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 14, 2026 ================== September 14, 2026 · 4 min read This release adds two new endpoints and enhances CRM status condition capabilities. Clients can now preview discount codes before checkout and retrieve available membership plan change options for customers. Additionally, CRM status conditions now support lead source filtering and an existence check for completed membership packs. * [GET /crm/statuses](/api-reference/endpoints/crm-statuses-list) - CRM statuses can now include lead source conditions to filter by how leads were acquired, and can check whether a customer has completed a specific membership pack * [GET /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-retrieve) - CRM status retrieval now returns lead source conditions and completed membership pack existence checks * [PUT /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-update) - CRM statuses can now be configured with lead source conditions and completed membership pack existence checks when updating * [GET /crm/statuses/{id}/defaults](/api-reference/endpoints/crm-statuses-defaults-retrieve) - Default CRM status configurations now include lead source conditions and completed membership pack existence checks * [POST /checkouts/preview-discount-code](/api-reference/endpoints/checkouts-preview-discount-code-create) - Preview and validate discount codes before applying them to a checkout, allowing clients to show discount amounts and eligibility to customers upfront * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) - Retrieve available membership plan change options for a specific customer membership, enabling clients to present valid upgrade, downgrade, or plan switch choices ### GET /crm/statuses * added `subschema #9: LeadSourceCondition` to the `results/items/conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `results/items/conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the new optional request property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` (media type: application/json) * added `subschema #9: LeadSourceCondition` to the `conditions/items/` request property `oneOf` list (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/statuses/{id}/defaults * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-defaults-retrieve) ### POST /checkouts/preview-discount-code * endpoint added [View updated docs](/api-reference/endpoints/checkouts-preview-discount-code-create) ### GET /customer\_memberships/{id}/plan\_change\_options * endpoint added [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) [ Newer post September 16, 2026 ](/changelog/2026/09/16)[ Older post September 10, 2026 ](/changelog/2026/09/10) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 16, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 16, 2026 ================== September 16, 2026 · 4 min read This release adds membership-based filtering and segmentation across customer reporting and CRM endpoints. Developers can now filter customer data and define customer segments based on whether customers have an active membership, enabling more targeted marketing campaigns and analytics workflows. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns the `has_active_membership` query condition when listing customer segments * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts `has_active_membership` as a filter condition when creating new customer segments to target customers with active memberships * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now includes the `has_active_membership` query condition in customer segment details * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns the `has_active_membership` condition when partially updating customer segments * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns the `has_active_membership` condition when fully updating customer segments * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now supports filtering grouped customer report data by active membership status * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now allows exporting grouped customer reports filtered by active membership status * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now supports filtering customer report data by active membership status * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now allows exporting customer reports filtered by active membership status ### GET /crm/customer\_segments * added the optional property `results/items/query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * added the new optional request property `query/has_active_membership` (media type: application/json) * added the optional property `query/has_active_membership` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `has_active_membership` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `has_active_membership` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `has_active_membership` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `has_active_membership` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post September 17, 2026 ](/changelog/2026/09/17)[ Older post September 14, 2026 ](/changelog/2026/09/14) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 17, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 17, 2026 ================== September 17, 2026 · 3 min read This release adds usage tracking to customer memberships, enabling API consumers to monitor and analyze membership usage data across all customer membership endpoints. A billing period length field has also been added to plan change options for better visibility into subscription billing cycles. * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) now includes usage summary data for each membership in the list results, allowing you to track usage metrics across all customer memberships at once. * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) returns usage summary information when creating a new customer membership, giving you immediate visibility into the membership's usage tracking. * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) includes usage summary data in the response, enabling you to see usage information after bulk price updates. * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) now provides usage summary data when retrieving individual membership details, allowing you to monitor specific membership usage. * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) returns usage summary information when canceling a membership, helping you review usage data before or after cancellation. * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) now includes billing period length for each plan option, making it easier to compare billing cycles when evaluating plan changes. ### GET /customer\_memberships * added the optional property `results/items/usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `usage_summary` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /customer\_memberships/{id}/plan\_change\_options * added the required property `results/items/billing_period_length` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) [ Newer post September 21, 2026 ](/changelog/2026/09/21)[ Older post September 16, 2026 ](/changelog/2026/09/16) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 21, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 21, 2026 ================== September 21, 2026 · 4 min read This release adds spam detection capabilities to broadcast messages and streamlines the send endpoint. All broadcast message responses now include a spam score to help you assess message quality before sending. The send endpoint has been simplified by removing unnecessary query parameters and request body requirements. * [PUT /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-update) now accepts and returns a spam score for content quality assessment * [POST /communication/broadcast\_messages/{id}/send](/api-reference/endpoints/communication-broadcast-messages-send-create) has been simplified by removing the request body and query parameters, and now returns spam score information in successful responses * [GET /reports/discount\_code\_uses/data](/api-reference/endpoints/reports-discount-code-uses-data-get-data) now supports string IDs in addition to numeric IDs for the used\_for field in report rows * [POST /communication/broadcast\_messages](/api-reference/endpoints/communication-broadcast-messages-create) returns spam scores when creating messages and no longer accepts expand or fields query parameters * [GET /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-retrieve) now includes spam score information in message details * [PATCH /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-partial-update) returns spam score information when updating messages ### PUT /communication/broadcast\_messages/{id} * added the new required request property `content_check/spam_score` (media type: application/json) * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * removed the request body * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * added the non-success response with the status `400` * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-create) ### GET /reports/discount\_code\_uses/data * response property `rows/items/used_for/id` list-of-types was widened by adding types `string` to media type `application/json` of response `200` [View updated docs](/api-reference/endpoints/reports-discount-code-uses-data-get-data) ### POST /communication/broadcast\_messages * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * added the non-success response with the status `400` * added the required property `content_check/spam_score` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/{id} * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-partial-update) [ Newer post September 23, 2026 ](/changelog/2026/09/23)[ Older post September 17, 2026 ](/changelog/2026/09/17) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 23, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 23, 2026 ================== September 23, 2026 · 6 min read This release updates the CRM customer segments and reporting endpoints to allow the `is_claimed` field to accept and return null values, providing more flexibility when working with customer data where claimed status may be unknown or unset. Additionally, the CRM status endpoints now consistently return a required `color` property as read-only in all responses, removing previous length constraints. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns null values for `is_claimed` in query filters, allowing you to identify segments where claimed status is unset * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts and returns null for `is_claimed`, enabling you to create customer segments without specifying a claimed status * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now returns null for `is_claimed` when the claimed status is not set * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns null for `is_claimed` when updating segments without a defined claimed status * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns null for `is_claimed` when the claimed status is unset * [GET /crm/statuses](/api-reference/endpoints/crm-statuses-list) now always returns a required read-only `color` property without length constraints * [GET /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-retrieve) now always returns a required read-only `color` property without length constraints * [PUT /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-update) now always returns a required read-only `color` property without length constraints * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now accepts null for the `is_claimed` query parameter and returns null values in results, allowing you to include customers with unknown claimed status in grouped reports * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now accepts null for the `is_claimed` query parameter and returns null values in results, enabling reports that include customers with unset claimed status * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now accepts null for `is_claimed` when exporting grouped customer data * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now accepts null for `is_claimed` when exporting customer data ### GET /crm/customer\_segments * the response property `results/items/query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * the response property `query/is_claimed` became nullable for the status `201` (media type: application/json) * the request property `query/is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /crm/statuses * the `results/items/color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `results/items/color` became read-only for the status `200` (media type: application/json) * the response property `results/items/color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * the `color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `color` became read-only for the status `200` (media type: application/json) * the response property `color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * the `color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `color` became read-only for the status `200` (media type: application/json) * the response property `color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-update) ### GET /reports/customers.grouped/data * the response property `rows/items/is_claimed` became nullable for the status `200` * the `query` request parameter `is_claimed` became nullable [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### GET /reports/customers/data * the response property `rows/items/is_claimed` became nullable for the status `200` * the `query` request parameter `is_claimed` became nullable [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers.grouped/export * the request property `is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### POST /reports/customers/export * the request property `is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer post September 28, 2026 ](/changelog/2026/09/28)[ Older post September 21, 2026 ](/changelog/2026/09/21) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. September 28, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) September 28, 2026 ================== September 28, 2026 · 32 min read ### GET /customer\_fields * removed the enum value `learn_to_skate` from the `query` request parameter `applicable_scenario` * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /integrations/learn\_to\_skate/abandon\_membership * api path removed without deprecation ### GET /integrations/learn\_to\_skate/config * api path removed without deprecation ### PATCH /integrations/learn\_to\_skate/config * api path removed without deprecation ### PUT /integrations/learn\_to\_skate/config * api path removed without deprecation ### GET /integrations/learn\_to\_skate/current\_membership\_number * api path removed without deprecation ### GET /integrations/learn\_to\_skate/membership\_renew\_url/{membership\_number} * api path removed without deprecation ### POST /integrations/learn\_to\_skate/resend\_account\_link * api path removed without deprecation ### POST /integrations/learn\_to\_skate/verify\_membership * api path removed without deprecation ### GET /ai/business\_advisor\_reports * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/ai-business-advisor-reports-list) ### GET /applications * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/applications-list) ### GET /attendances * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/attendances-list) ### GET /auth/profiles * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /availability\_schedule\_offering\_types * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### GET /bulk\_actions/{id}/results * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/bulk-actions-results-list) ### GET /business\_closures * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/business-closures-list) ### GET /checkouts * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### GET /communication/notification\_types/membership\_penalty/messages * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-notification-types-membership-penalty-messages-list) ### GET /content * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content\_collections * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_filters * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-filters-list) ### GET /course\_session\_attendances * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-session-attendances-list) ### GET /course\_sessions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /courses * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/courses-list) ### GET /crm/bulk\_status\_evaluations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/customer\_segments * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### GET /crm/interactions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-interactions-list) ### GET /crm/lead\_forms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### GET /crm/lead\_sources * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### GET /crm/status\_changes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-status-changes-list) ### GET /crm/statuses * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/workflow\_actions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### GET /crm/workflows * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-list) ### GET /customer\_field\_values * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-field-values-list) ### GET /customer\_form\_submissions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-form-submissions-list) ### GET /customer\_forms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_issues * added the new optional `query` request parameter `provider_managed` * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-issues-list) ### GET /customer\_membership\_holds * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-list) ### GET /customer\_memberships * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### GET /customer\_memberships/{id}/plan\_change\_options * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) ### GET /customer\_registration\_blocks * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-registration-blocks-list) ### GET /customers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### GET /discount\_code\_applicabilities * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-applicabilities-list) ### GET /discount\_code\_groups * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-groups-list) ### GET /discount\_codes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-codes-list) ### GET /events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/events-list) ### GET /external\_calendars/accounts * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-accounts-list) ### GET /external\_calendars/events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-events-list) ### GET /external\_calendars/staff\_calendar\_settings * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-staff-calendar-settings-list) ### GET /family\_invites * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/family-invites-list) ### GET /instructor\_pay\_rates * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructor-pay-rates-list) ### GET /instructors * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### GET /integrations/kisi/groups * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-kisi-groups-list) ### GET /integrations/wellhub/venue\_mappings * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-wellhub-venue-mappings-list) ### GET /integrations/zoom/users * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-zoom-users-list) ### GET /invoices * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /joining\_fees * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_categories * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### GET /membership\_payment\_plans * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### GET /membership\_penalty\_systems * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-penalty-systems-list) ### GET /membership\_registration\_grants * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-registration-grants-list) ### GET /membership\_terms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-terms-list) ### GET /memberships * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_type\_categories * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/offering-type-categories-list) ### GET /offering\_types * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /payment\_methods * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### GET /payment\_processors * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-processors-list) ### GET /payment\_subscriptions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-subscriptions-list) ### GET /platform/referrals * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referrals-list) ### GET /policies * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policies-list) ### GET /policy\_agreements * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-list) ### GET /policy\_versions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policy-versions-list) ### GET /providers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /purchase\_fees * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /push\_notification\_tokens * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/push-notification-tokens-list) ### GET /recurring\_reservations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id}/unavailable\_upcoming\_events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-unavailable-upcoming-events-list) ### GET /registration\_options * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /registration\_timelines * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-timelines-list) ### GET /slots * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/slots-list) ### GET /staff * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### GET /store/inventory\_adjustments * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-inventory-adjustments-list) ### GET /store/order\_items * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-order-items-list) ### GET /store/orders * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-orders-list) ### GET /store/product\_attributes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-attributes-list) ### GET /store/product\_variants * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-variants-list) ### GET /store/products * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-products-list) ### GET /venue\_rooms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### GET /venues * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/venues-list) ### GET /waiver\_agreements * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waiver-agreements-list) ### GET /waivers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### GET /webhook\_destinations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) [ Newer post October 5, 2026 ](/changelog/2026/10/05)[ Older post September 23, 2026 ](/changelog/2026/09/23) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 5, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 5, 2026 =============== October 5, 2026 · 3 min read This release introduces new push notification settings endpoints and enriches membership data with commitment and count information. Developers can now programmatically manage push notification preferences and retrieve enhanced details about membership plan commitments and category usage across the platform. * [GET /communication/push\_settings](/api-reference/endpoints/communication-push-settings-retrieve) — retrieve the current push notification settings for communication preferences * [PATCH /communication/push\_settings](/api-reference/endpoints/communication-push-settings-partial-update) — update push notification settings to control communication delivery preferences * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) — now returns commitment expiration scheme and committed billing periods, enabling clients to understand the commitment terms and duration when evaluating plan change options * [GET /membership\_categories](/api-reference/endpoints/membership-categories-list) — now includes the count of memberships in each category, allowing clients to see how many members belong to each category * [POST /membership\_categories](/api-reference/endpoints/membership-categories-create) — newly created categories now return the membership count (initially zero) * [PATCH /membership\_categories/{id}](/api-reference/endpoints/membership-categories-partial-update) — updated categories now return the current membership count * [PUT /membership\_categories/{id}](/api-reference/endpoints/membership-categories-update) — updated categories now return the current membership count ### GET /communication/push\_settings * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-retrieve) ### PATCH /communication/push\_settings * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-partial-update) ### GET /customer\_memberships/{id}/plan\_change\_options * added the required property `results/items/commitment_expiration_scheme` to the response with the `200` status (media type: application/json) * added the required property `results/items/committed_billing_periods` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) ### GET /membership\_categories * added the required property `results/items/memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### POST /membership\_categories * added the required property `memberships_count` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-create) ### PATCH /membership\_categories/{id} * added the required property `memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-partial-update) ### PUT /membership\_categories/{id} * added the required property `memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-update) [ Newer post October 6, 2026 ](/changelog/2026/10/06)[ Older post September 28, 2026 ](/changelog/2026/09/28) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 6, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 6, 2026 =============== October 6, 2026 · 5 min read This release renames the `has_issues` parameter to `has_open_issues` across customer segmentation and reporting endpoints, providing more precise filtering by specifically targeting customers with open (unresolved) issues rather than any issues historically associated with the account. * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) - Create customer segments that filter by customers with open issues using the new `has_open_issues` query parameter * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) - Retrieve grouped customer report data filtered by customers with open issues * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) - Export grouped customer reports filtered by customers with open issues * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) - Retrieve customer report data filtered by customers with open issues * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) - Export customer reports filtered by customers with open issues * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) - List customer segments now returns the `has_open_issues` query filter in segment definitions * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) - Retrieve customer segment details now shows the `has_open_issues` query filter * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) - Partially update customer segments now returns the `has_open_issues` query filter * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) - Update customer segments now returns the `has_open_issues` query filter ### POST /crm/customer\_segments * removed the request property `query/has_issues` (media type: application/json) * added the new optional request property `query/has_open_issues` (media type: application/json) * added the optional property `query/has_open_issues` to the response with the `201` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-create) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `has_issues` * added the new optional `query` request parameter `has_open_issues` [View updated docs](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `has_issues` (media type: application/json) * added the new optional request property `has_open_issues` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `has_issues` * added the new optional `query` request parameter `has_open_issues` [View updated docs](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `has_issues` (media type: application/json) * added the new optional request property `has_open_issues` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-customers-export-export-data) ### GET /crm/customer\_segments * added the optional property `results/items/query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `results/items/query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### GET /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-update) [ Newer post October 7, 2026 ](/changelog/2026/10/07)[ Older post October 5, 2026 ](/changelog/2026/10/05) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 7, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 7, 2026 =============== October 7, 2026 · 3 min read This release adds the `applies_to` property to joining fees across all membership payment plan endpoints. This new required field indicates which members the joining fee applies to, providing more granular control and transparency around joining fee applicability rules. * [GET /joining\_fees](/api-reference/endpoints/joining-fees-list) now returns the `applies_to` field for each joining fee, indicating which members the fee applies to. * [GET /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-list) now includes the `applies_to` field in the nested `joining_fee` object for each payment plan. * [POST /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-create) now returns the `applies_to` field in the `joining_fee` object when creating a new payment plan. * [GET /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-retrieve) now includes the `applies_to` field in the `joining_fee` object when retrieving a specific payment plan. * [PATCH /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-partial-update) now returns the `applies_to` field in the `joining_fee` object when partially updating a payment plan. * [PUT /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-update) now returns the `applies_to` field in the `joining_fee` object when fully updating a payment plan. ### GET /joining\_fees * added the required property `results/items/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_payment\_plans * added the required property `results/items/joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### POST /membership\_payment\_plans * added the required property `joining_fee/applies_to` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-create) ### GET /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-retrieve) ### PATCH /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-partial-update) ### PUT /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-update) [ Newer post October 12, 2026 ](/changelog/2026/10/12)[ Older post October 6, 2026 ](/changelog/2026/10/06) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 12, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 12, 2026 ================ October 12, 2026 · 4 min read This release introduces course series support, enabling clients to group related course sessions together and retrieve series-level metadata. Two new endpoints for listing and retrieving course series have been added, and existing course session endpoints now include series identifiers and session numbering. Additionally, BoxMate integration support has been removed. * [GET /course\_sessions](/api-reference/endpoints/course-sessions-list) — Retrieve course sessions with new series filtering capability via the `series` query parameter. Responses now include series identifiers and session numbering (session\_number and session\_total) to show each session's position within its parent series. Attendance and occupancy fields are now optional. * [GET /course\_sessions/{id}](/api-reference/endpoints/course-sessions-retrieve) — Retrieve individual course sessions with new series metadata, including the series identifier and session numbering information. Attendance and occupancy fields are now optional. * [GET /course\_series](/api-reference/endpoints/course-series-list) — New endpoint to list all course series, enabling clients to browse and discover available course series. * [GET /course\_series/{id}](/api-reference/endpoints/course-series-retrieve) — New endpoint to retrieve detailed information about a specific course series by its identifier. * [GET /integrations/](/api-reference/endpoints/integrations-list) — BoxMate integration is no longer supported and has been removed from available integrations. ### GET /course\_sessions * the response property `results/items/attending_count` became optional for the status `200` (media type: application/json) * the response property `results/items/max_occupancy` became optional for the status `200` (media type: application/json) * added the new optional `query` request parameter `series` * added the required property `results/items/series` to the response with the `200` status (media type: application/json) * added the required property `results/items/session_number` to the response with the `200` status (media type: application/json) * added the required property `results/items/session_total` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /course\_sessions/{id} * the response property `attending_count` became optional for the status `200` (media type: application/json) * the response property `max_occupancy` became optional for the status `200` (media type: application/json) * added the required property `series` to the response with the `200` status (media type: application/json) * added the required property `session_number` to the response with the `200` status (media type: application/json) * added the required property `session_total` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-retrieve) ### GET /course\_series * endpoint added [View updated docs](/api-reference/endpoints/course-series-list) ### GET /course\_series/{id} * endpoint added [View updated docs](/api-reference/endpoints/course-series-retrieve) ### GET /integrations/ * removed `subschema #5: BoxMate` from the `items/` response property `oneOf` list for the response status `results` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-list) [ Newer post October 13, 2026 ](/changelog/2026/10/13)[ Older post October 7, 2026 ](/changelog/2026/10/07) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 13, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 13, 2026 ================ October 13, 2026 · 8 min read This release fixes a typo in the day-of-week enum value across multiple endpoints, correcting 'staturday' to 'saturday'. Additionally, push notification settings now support configuration for missing forms and waivers notifications. * [GET /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-list) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [POST /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-create) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' in both requests and responses * [GET /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-retrieve) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [PATCH /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-partial-update) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [PUT /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-update) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [GET /recurring\_reservations](/api-reference/endpoints/recurring-reservations-list) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [GET /recurring\_reservations/{id}](/api-reference/endpoints/recurring-reservations-retrieve) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [PATCH /recurring\_reservations/{id}](/api-reference/endpoints/recurring-reservations-partial-update) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [GET /registration\_options](/api-reference/endpoints/registration-options-list) – corrected the day-of-week enum value in time slots from 'staturday' to 'saturday' * [GET /reports/classes.grouped/data](/api-reference/endpoints/reports-classes-grouped-data-get-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [POST /reports/classes.grouped/export](/api-reference/endpoints/reports-classes-grouped-export-export-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [GET /reports/classes/data](/api-reference/endpoints/reports-classes-data-get-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [POST /reports/classes/export](/api-reference/endpoints/reports-classes-export-export-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [GET /communication/push\_settings](/api-reference/endpoints/communication-push-settings-retrieve) – now includes settings for missing forms and waivers notifications * [PATCH /communication/push\_settings](/api-reference/endpoints/communication-push-settings-partial-update) – now supports configuring push notifications for missing forms and waivers ### GET /membership\_payment\_plans * added the new `saturday` enum value to the `results/items/fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### POST /membership\_payment\_plans * removed the enum value `staturday` of the request property `fixed_billing_day_of_week` (media type: application/json) * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `201` (media type: application/json) * added the new `saturday` enum value to the request property `fixed_billing_day_of_week` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-create) ### GET /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-retrieve) ### PATCH /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-partial-update) ### PUT /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-update) ### GET /recurring\_reservations * added the new `saturday` enum value to the `results/items/day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id} * added the new `saturday` enum value to the `day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-retrieve) ### PATCH /recurring\_reservations/{id} * added the new `saturday` enum value to the `day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-partial-update) ### GET /registration\_options * added the new `saturday` enum value to the `results/items/time_slots/items/day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/time_slots/items/day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /reports/classes.grouped/data * removed the enum value `staturday` from the property `items/` of the `query` request parameter `day_of_week` * added the enum value `saturday` to the property `items/` of the `query` request parameter `day_of_week` [View updated docs](/api-reference/endpoints/reports-classes-grouped-data-get-data) ### POST /reports/classes.grouped/export * removed the enum value `staturday` of the request property `day_of_week/items/` (media type: application/json) * added the new `saturday` enum value to the request property `day_of_week/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-classes-grouped-export-export-data) ### GET /reports/classes/data * removed the enum value `staturday` from the property `items/` of the `query` request parameter `day_of_week` * added the enum value `saturday` to the property `items/` of the `query` request parameter `day_of_week` [View updated docs](/api-reference/endpoints/reports-classes-data-get-data) ### POST /reports/classes/export * removed the enum value `staturday` of the request property `day_of_week/items/` (media type: application/json) * added the new `saturday` enum value to the request property `day_of_week/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-classes-export-export-data) ### GET /communication/push\_settings * added the required property `missing_forms_and_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-push-settings-retrieve) ### PATCH /communication/push\_settings * added the new optional request property `missing_forms_and_waivers` (media type: application/json) * added the required property `missing_forms_and_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-push-settings-partial-update) [ Newer post October 14, 2026 ](/changelog/2026/10/14)[ Older post October 12, 2026 ](/changelog/2026/10/12) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 14, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 14, 2026 ================ October 14, 2026 · 4 min read This release introduces read-only access control for machine-to-machine tokens and exposes plan change options across customer membership endpoints. Developers can now create or update M2M tokens with read-only permissions to limit API access, and retrieve detailed plan change options when working with customer memberships. * [POST /auth/m2m\_tokens](/api-reference/endpoints/auth-m-2-m-tokens-create) now supports creating machine-to-machine tokens with read-only access restrictions * [PATCH /auth/m2m\_tokens/{id}](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) now allows updating tokens to read-only mode and returns the read-only status in responses * [PUT /auth/m2m\_tokens/{id}](/api-reference/endpoints/auth-m-2-m-tokens-update) now supports setting read-only access when fully replacing a token * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) now returns available plan change options for each membership in the list * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) now includes plan change options in the response when creating a new membership * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) now returns plan change options after bulk price updates * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) now provides plan change options when retrieving a specific membership * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) now returns plan change options when canceling a membership ### POST /auth/m2m\_tokens * added the new optional request property `is_read_only` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new optional request property `is_read_only` (media type: application/json) * added the required property `is_read_only` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new optional request property `is_read_only` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /customer\_memberships * added the optional property `results/items/plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `plan_change_options` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) [ Newer post October 21, 2026 ](/changelog/2026/10/21)[ Older post October 13, 2026 ](/changelog/2026/10/13) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 21, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 21, 2026 ================ October 21, 2026 · 11 min read ### GET /checkouts * added the optional property `results/items/checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `results/items/checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `results/items/checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### POST /checkouts * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-create) ### POST /checkouts/preview-discount-code * added the new optional request property `item/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `item/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `item/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-preview-discount-code-create) ### GET /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-retrieve) ### PATCH /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-partial-update) ### PUT /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-update) ### POST /checkouts/{id}/add\_item * added the new optional request property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-add-item-create) ### POST /checkouts/{id}/cancel * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-cancel-create) ### GET /checkouts/{id}/items/{item\_id}/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-retrieve) ### POST /checkouts/{id}/items/{item\_id}/price/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-price-create) ### POST /checkouts/{id}/items/{item\_id}/quantity/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-quantity-create) ### GET /communication/push\_settings/class\_reminders * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-list) ### POST /communication/push\_settings/class\_reminders * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-create) ### DELETE /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-destroy) ### GET /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-retrieve) ### PATCH /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-partial-update) ### PUT /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-update) ### GET /customer\_memberships * added the required property `results/items/renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the required property `renew_from` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /invoices * added the enum value `-id` to the property `items/` of the `query` request parameter `sort` * added the enum value `id` to the property `items/` of the `query` request parameter `sort` [View updated docs](/api-reference/endpoints/invoices-list) [ Newer post October 22, 2026 ](/changelog/2026/10/22)[ Older post October 14, 2026 ](/changelog/2026/10/14) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 22, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 22, 2026 ================ October 22, 2026 · 3 min read This release introduces comprehensive embed widget management capabilities, allowing developers to programmatically create, retrieve, update, and delete calendar embed widgets through the API. Additionally, membership filtering has been enhanced to support course registration scenarios. * [GET /embed/bootstrap](/api-reference/endpoints/embed-bootstrap-retrieve) – Retrieve bootstrap configuration data for calendar embeds * [GET /embed\_widgets](/api-reference/endpoints/embed-widgets-list) – List all embed widgets configured for your calendar * [POST /embed\_widgets](/api-reference/endpoints/embed-widgets-create) – Create new embed widgets to display your calendar on external websites * [GET /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-retrieve) – Retrieve details of a specific embed widget * [PUT /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-update) – Update an existing embed widget configuration * [PATCH /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-partial-update) – Partially update specific fields of an embed widget * [DELETE /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-destroy) – Delete an embed widget * [GET /memberships](/api-reference/endpoints/memberships-list) – Filter memberships by those that permit registration for a specific course ### GET /embed/bootstrap * endpoint added [View updated docs](/api-reference/endpoints/embed-bootstrap-retrieve) ### GET /embed\_widgets * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-list) ### POST /embed\_widgets * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-create) ### DELETE /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-destroy) ### GET /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-retrieve) ### PATCH /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-partial-update) ### PUT /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-update) ### GET /memberships * added the new optional `query` request parameter `permits_registration_for_course` [View updated docs](/api-reference/endpoints/memberships-list) [ Newer post October 26, 2026 ](/changelog/2026/10/26)[ Older post October 21, 2026 ](/changelog/2026/10/21) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. October 26, 2026 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) October 26, 2026 ================ October 26, 2026 · 3 min read This release introduces comprehensive push notification management capabilities to the API, allowing developers to retrieve, mark as read, and delete push notifications. Additionally, customer notification preferences have been extended to include push notification settings, giving users granular control over how they receive notifications. * [GET /customers/{id}/notification\_preferences](/api-reference/endpoints/customers-notification-preferences-retrieve) – Retrieve customer notification preferences, now including a `push_enabled` flag to determine whether push notifications are enabled for the customer. * [PATCH /customers/{id}/notification\_preferences/{notification\_preference\_id}](/api-reference/endpoints/customers-notification-preferences-partial-update) – Update customer notification preferences with the ability to enable or disable push notifications via the new `push_enabled` field. * [GET /push\_notifications](/api-reference/endpoints/push-notifications-list) – Retrieve a list of push notifications for the authenticated user. * [POST /push\_notifications/mark\_all\_read](/api-reference/endpoints/push-notifications-mark-all-read-create) – Mark all push notifications as read in a single operation. * [DELETE /push\_notifications/{id}](/api-reference/endpoints/push-notifications-destroy) – Delete a specific push notification. * [POST /push\_notifications/{id}/mark\_read](/api-reference/endpoints/push-notifications-mark-read-create) – Mark a specific push notification as read. ### GET /customers/{id}/notification\_preferences * the response property `id` became nullable for the status `200` (media type: application/json) * added the optional property `push_enabled` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-notification-preferences-retrieve) ### PATCH /customers/{id}/notification\_preferences/{notification\_preference\_id} * the response property `id` became nullable for the status `200` (media type: application/json) * added the new optional request property `push_enabled` (media type: application/json) * removed the pattern `^\d+$` from the `path` request parameter `notification_preference_id` * added the optional property `push_enabled` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-notification-preferences-partial-update) ### GET /push\_notifications * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-list) ### POST /push\_notifications/mark\_all\_read * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-mark-all-read-create) ### DELETE /push\_notifications/{id} * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-destroy) ### POST /push\_notifications/{id}/mark\_read * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-mark-read-create) [ Older post October 22, 2026 ](/changelog/2026/10/22) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Archive | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Archive ======= Archive ### 2026[​](#2026 "Direct link to 2026") * [January 13 - January 13, 2026](/changelog/2026/01/13) * [January 17 - January 17, 2026](/changelog/2026/01/17) * [January 23 - January 23, 2026](/changelog/2026/01/23) * [January 27 - January 27, 2026](/changelog/2026/01/27) * [February 3 - February 3, 2026](/changelog/2026/02/03) * [February 13 - February 13, 2026](/changelog/2026/02/13) * [February 24 - February 24, 2026](/changelog/2026/02/24) * [February 27 - February 27, 2026](/changelog/2026/02/27) * [March 12 - March 12, 2026](/changelog/2026/03/12) * [March 18 - March 18, 2026](/changelog/2026/03/18) * [March 23 - March 23, 2026](/changelog/2026/03/23) * [March 24 - March 24, 2026](/changelog/2026/03/24) * [March 26 - March 26, 2026](/changelog/2026/03/26) * [March 31 - March 31, 2026](/changelog/2026/03/31) * [April 1 - April 1, 2026](/changelog/2026/04/01) * [April 7 - April 7, 2026](/changelog/2026/04/07) * [April 14 - April 14, 2026](/changelog/2026/04/14) * [April 16 - April 16, 2026](/changelog/2026/04/16) * [April 20 - April 20, 2026](/changelog/2026/04/20) * [April 22 - April 22, 2026](/changelog/2026/04/22) * [April 23 - April 23, 2026](/changelog/2026/04/23) * [April 28 - April 28, 2026](/changelog/2026/04/28) * [April 30 - April 30, 2026](/changelog/2026/04/30) * [May 4 - May 4, 2026](/changelog/2026/05/04) * [May 7 - May 7, 2026](/changelog/2026/05/07) * [May 11 - May 11, 2026](/changelog/2026/05/11) * [May 13 - May 13, 2026](/changelog/2026/05/13) * [May 14 - May 14, 2026](/changelog/2026/05/14) * [May 18 - May 18, 2026](/changelog/2026/05/18) * [May 20 - May 20, 2026](/changelog/2026/05/20) * [May 26 - May 26, 2026](/changelog/2026/05/26) * [May 29 - May 29, 2026](/changelog/2026/05/29) * [June 4 - June 4, 2026](/changelog/2026/06/04) * [June 8 - June 8, 2026](/changelog/2026/06/08) * [June 9 - June 9, 2026](/changelog/2026/06/09) * [June 11 - June 11, 2026](/changelog/2026/06/11) * [June 16 - June 16, 2026](/changelog/2026/06/16) * [June 22 - June 22, 2026](/changelog/2026/06/22) * [June 23 - June 23, 2026](/changelog/2026/06/23) * [June 24 - June 24, 2026](/changelog/2026/06/24) * [June 29 - June 29, 2026](/changelog/2026/06/29) * [July 7 - July 7, 2026](/changelog/2026/07/07) * [July 9 - July 9, 2026](/changelog/2026/07/09) * [July 13 - July 13, 2026](/changelog/2026/07/13) * [July 14 - July 14, 2026](/changelog/2026/07/14) * [July 15 - July 15, 2026](/changelog/2026/07/15) * [July 17 - July 17, 2026](/changelog/2026/07/17) * [July 22 - July 22, 2026](/changelog/2026/07/22) * [July 23 - July 23, 2026](/changelog/2026/07/23) * [August 10 - August 10, 2026](/changelog/2026/08/10) * [August 12 - August 12, 2026](/changelog/2026/08/12) * [August 19 - August 19, 2026](/changelog/2026/08/19) * [August 24 - August 24, 2026](/changelog/2026/08/24) * [August 25 - August 25, 2026](/changelog/2026/08/25) * [August 28 - August 28, 2026](/changelog/2026/08/28) * [August 31 - August 31, 2026](/changelog/2026/08/31) * [September 1 - September 1, 2026](/changelog/2026/09/01) * [September 9 - September 9, 2026](/changelog/2026/09/09) * [September 10 - September 10, 2026](/changelog/2026/09/10) * [September 14 - September 14, 2026](/changelog/2026/09/14) * [September 16 - September 16, 2026](/changelog/2026/09/16) * [September 17 - September 17, 2026](/changelog/2026/09/17) * [September 21 - September 21, 2026](/changelog/2026/09/21) * [September 23 - September 23, 2026](/changelog/2026/09/23) * [September 28 - September 28, 2026](/changelog/2026/09/28) * [October 5 - October 5, 2026](/changelog/2026/10/05) * [October 6 - October 6, 2026](/changelog/2026/10/06) * [October 7 - October 7, 2026](/changelog/2026/10/07) * [October 12 - October 12, 2026](/changelog/2026/10/12) * [October 13 - October 13, 2026](/changelog/2026/10/13) * [October 14 - October 14, 2026](/changelog/2026/10/14) * [October 21 - October 21, 2026](/changelog/2026/10/21) * [October 22 - October 22, 2026](/changelog/2026/10/22) * [October 26 - October 26, 2026](/changelog/2026/10/26) ### 2025[​](#2025 "Direct link to 2025") * [November 24 - November 24, 2025](/changelog/2025/11/24) * [December 15 - December 15, 2025](/changelog/2025/12/15) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [September 23, 2026](/changelog/2026/09/23) ------------------------------------------- September 23, 2026 · 6 min read This release updates the CRM customer segments and reporting endpoints to allow the `is_claimed` field to accept and return null values, providing more flexibility when working with customer data where claimed status may be unknown or unset. Additionally, the CRM status endpoints now consistently return a required `color` property as read-only in all responses, removing previous length constraints. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns null values for `is_claimed` in query filters, allowing you to identify segments where claimed status is unset * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts and returns null for `is_claimed`, enabling you to create customer segments without specifying a claimed status * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now returns null for `is_claimed` when the claimed status is not set * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns null for `is_claimed` when updating segments without a defined claimed status * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns null for `is_claimed` when the claimed status is unset * [GET /crm/statuses](/api-reference/endpoints/crm-statuses-list) now always returns a required read-only `color` property without length constraints * [GET /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-retrieve) now always returns a required read-only `color` property without length constraints * [PUT /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-update) now always returns a required read-only `color` property without length constraints * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now accepts null for the `is_claimed` query parameter and returns null values in results, allowing you to include customers with unknown claimed status in grouped reports * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now accepts null for the `is_claimed` query parameter and returns null values in results, enabling reports that include customers with unset claimed status * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now accepts null for `is_claimed` when exporting grouped customer data * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now accepts null for `is_claimed` when exporting customer data ### GET /crm/customer\_segments * the response property `results/items/query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * the response property `query/is_claimed` became nullable for the status `201` (media type: application/json) * the request property `query/is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * the response property `query/is_claimed` became nullable for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /crm/statuses * the `results/items/color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `results/items/color` became read-only for the status `200` (media type: application/json) * the response property `results/items/color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * the `color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `color` became read-only for the status `200` (media type: application/json) * the response property `color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * the `color` response property's maxLength was unset from `6` for the response status `200` (media type: application/json) * the response optional property `color` became read-only for the status `200` (media type: application/json) * the response property `color` became required for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-statuses-update) ### GET /reports/customers.grouped/data * the response property `rows/items/is_claimed` became nullable for the status `200` * the `query` request parameter `is_claimed` became nullable [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### GET /reports/customers/data * the response property `rows/items/is_claimed` became nullable for the status `200` * the `query` request parameter `is_claimed` became nullable [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers.grouped/export * the request property `is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### POST /reports/customers/export * the request property `is_claimed` became nullable (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [September 21, 2026](/changelog/2026/09/21) ------------------------------------------- September 21, 2026 · 4 min read This release adds spam detection capabilities to broadcast messages and streamlines the send endpoint. All broadcast message responses now include a spam score to help you assess message quality before sending. The send endpoint has been simplified by removing unnecessary query parameters and request body requirements. * [PUT /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-update) now accepts and returns a spam score for content quality assessment * [POST /communication/broadcast\_messages/{id}/send](/api-reference/endpoints/communication-broadcast-messages-send-create) has been simplified by removing the request body and query parameters, and now returns spam score information in successful responses * [GET /reports/discount\_code\_uses/data](/api-reference/endpoints/reports-discount-code-uses-data-get-data) now supports string IDs in addition to numeric IDs for the used\_for field in report rows * [POST /communication/broadcast\_messages](/api-reference/endpoints/communication-broadcast-messages-create) returns spam scores when creating messages and no longer accepts expand or fields query parameters * [GET /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-retrieve) now includes spam score information in message details * [PATCH /communication/broadcast\_messages/{id}](/api-reference/endpoints/communication-broadcast-messages-partial-update) returns spam score information when updating messages ### PUT /communication/broadcast\_messages/{id} * added the new required request property `content_check/spam_score` (media type: application/json) * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * removed the request body * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * added the non-success response with the status `400` * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-create) ### GET /reports/discount\_code\_uses/data * response property `rows/items/used_for/id` list-of-types was widened by adding types `string` to media type `application/json` of response `200` [View updated docs](/api-reference/endpoints/reports-discount-code-uses-data-get-data) ### POST /communication/broadcast\_messages * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * added the non-success response with the status `400` * added the required property `content_check/spam_score` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/{id} * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the required property `content_check/spam_score` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-partial-update) [September 17, 2026](/changelog/2026/09/17) ------------------------------------------- September 17, 2026 · 3 min read This release adds usage tracking to customer memberships, enabling API consumers to monitor and analyze membership usage data across all customer membership endpoints. A billing period length field has also been added to plan change options for better visibility into subscription billing cycles. * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) now includes usage summary data for each membership in the list results, allowing you to track usage metrics across all customer memberships at once. * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) returns usage summary information when creating a new customer membership, giving you immediate visibility into the membership's usage tracking. * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) includes usage summary data in the response, enabling you to see usage information after bulk price updates. * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) now provides usage summary data when retrieving individual membership details, allowing you to monitor specific membership usage. * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) returns usage summary information when canceling a membership, helping you review usage data before or after cancellation. * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) now includes billing period length for each plan option, making it easier to compare billing cycles when evaluating plan changes. ### GET /customer\_memberships * added the optional property `results/items/usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `usage_summary` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `usage_summary` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /customer\_memberships/{id}/plan\_change\_options * added the required property `results/items/billing_period_length` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) [September 16, 2026](/changelog/2026/09/16) ------------------------------------------- September 16, 2026 · 4 min read This release adds membership-based filtering and segmentation across customer reporting and CRM endpoints. Developers can now filter customer data and define customer segments based on whether customers have an active membership, enabling more targeted marketing campaigns and analytics workflows. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns the `has_active_membership` query condition when listing customer segments * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts `has_active_membership` as a filter condition when creating new customer segments to target customers with active memberships * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now includes the `has_active_membership` query condition in customer segment details * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns the `has_active_membership` condition when partially updating customer segments * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns the `has_active_membership` condition when fully updating customer segments * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now supports filtering grouped customer report data by active membership status * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now allows exporting grouped customer reports filtered by active membership status * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now supports filtering customer report data by active membership status * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now allows exporting customer reports filtered by active membership status ### GET /crm/customer\_segments * added the optional property `results/items/query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * added the new optional request property `query/has_active_membership` (media type: application/json) * added the optional property `query/has_active_membership` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/has_active_membership` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `has_active_membership` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `has_active_membership` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `has_active_membership` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `has_active_membership` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [September 14, 2026](/changelog/2026/09/14) ------------------------------------------- September 14, 2026 · 4 min read This release adds two new endpoints and enhances CRM status condition capabilities. Clients can now preview discount codes before checkout and retrieve available membership plan change options for customers. Additionally, CRM status conditions now support lead source filtering and an existence check for completed membership packs. * [GET /crm/statuses](/api-reference/endpoints/crm-statuses-list) - CRM statuses can now include lead source conditions to filter by how leads were acquired, and can check whether a customer has completed a specific membership pack * [GET /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-retrieve) - CRM status retrieval now returns lead source conditions and completed membership pack existence checks * [PUT /crm/statuses/{id}](/api-reference/endpoints/crm-statuses-update) - CRM statuses can now be configured with lead source conditions and completed membership pack existence checks when updating * [GET /crm/statuses/{id}/defaults](/api-reference/endpoints/crm-statuses-defaults-retrieve) - Default CRM status configurations now include lead source conditions and completed membership pack existence checks * [POST /checkouts/preview-discount-code](/api-reference/endpoints/checkouts-preview-discount-code-create) - Preview and validate discount codes before applying them to a checkout, allowing clients to show discount amounts and eligibility to customers upfront * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) - Retrieve available membership plan change options for a specific customer membership, enabling clients to present valid upgrade, downgrade, or plan switch choices ### GET /crm/statuses * added `subschema #9: LeadSourceCondition` to the `results/items/conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `results/items/conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the new optional request property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` (media type: application/json) * added `subschema #9: LeadSourceCondition` to the `conditions/items/` request property `oneOf` list (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/statuses/{id}/defaults * added `subschema #9: LeadSourceCondition` to the `conditions/items/` response property `oneOf` list for the response status `200` (media type: application/json) * added the optional property `conditions/items/oneOf[subschema #8: CompletedMembershipPackExistsCondition]/exists` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-defaults-retrieve) ### POST /checkouts/preview-discount-code * endpoint added [View updated docs](/api-reference/endpoints/checkouts-preview-discount-code-create) ### GET /customer\_memberships/{id}/plan\_change\_options * endpoint added [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) [September 10, 2026](/changelog/2026/09/10) ------------------------------------------- September 10, 2026 · One min read This release adds filtering capabilities to the invoices endpoint, enabling developers to narrow invoice queries by customer membership status. This makes it easier to retrieve invoices for specific customer segments without additional client-side filtering. * [GET /invoices](/api-reference/endpoints/invoices-list) now supports filtering invoices by customer membership status using the `customer_membership` query parameter ### GET /invoices * added the new optional `query` request parameter `customer_membership` [View updated docs](/api-reference/endpoints/invoices-list) [September 9, 2026](/changelog/2026/09/09) ------------------------------------------ September 9, 2026 · 2 min read This release adds refresh token expiration information to all authentication endpoints. Clients can now see when refresh tokens will expire, enabling better session management and proactive token renewal before expiration. * [POST /auth/password\_login](/api-reference/endpoints/auth-password-login-create) now returns `refresh_token_expires_in` to indicate when the refresh token will expire, allowing clients to plan token renewal in advance. * [POST /auth/refresh\_access\_token](/api-reference/endpoints/auth-refresh-access-token-create) now includes `refresh_token_expires_in` in the response, enabling clients to track the new refresh token's expiration time. * [POST /providers/{id}/register\_customer](/api-reference/endpoints/providers-register-customer-create) now provides `refresh_token_expires_in` in the credentials object, giving clients visibility into refresh token lifetime for newly registered customers. ### POST /auth/password\_login * added the required property `oneOf[subschema #2: GetAccessTokenSuccess]/refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-password-login-create) ### POST /auth/refresh\_access\_token * added the required property `refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-refresh-access-token-create) ### POST /providers/{id}/register\_customer * added the required property `credentials/refresh_token_expires_in` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-register-customer-create) [September 1, 2026](/changelog/2026/09/01) ------------------------------------------ September 1, 2026 · One min read This release introduces the ability to partially update events, enabling developers to modify specific event fields without sending the entire event payload. This improves efficiency and simplifies workflows where only a subset of event properties need to be changed. * [PATCH /events/{id}](/api-reference/endpoints/events-partial-update) — Update specific fields of an existing event without replacing the entire event resource, allowing for more efficient and targeted modifications to event properties such as title, dates, or custom fields. ### PATCH /events/{id} * endpoint added [View updated docs](/api-reference/endpoints/events-partial-update) [August 31, 2026](/changelog/2026/08/31) ---------------------------------------- August 31, 2026 · 4 min read This release enhances referral program tracking and invoice management capabilities. Developers can now access detailed referral statistics, retrieve invoice receipt URLs, and view enriched currency formatting information for referral rewards. Additionally, account status responses now include referee service fee discount information for billing transparency. * [GET /platform/referral\_code](/api-reference/endpoints/platform-referral-code-retrieve) now returns referral statistics, enabling developers to track referral performance metrics directly through the API * [GET /invoices](/api-reference/endpoints/invoices-list) now includes receipt URLs for each invoice in the list, allowing clients to provide direct download links to payment receipts * [GET /invoices/{id}](/api-reference/endpoints/invoices-retrieve) now includes a receipt URL, enabling clients to retrieve and display the payment receipt for a specific invoice * [GET /platform/referral\_program](/api-reference/endpoints/platform-referral-program-retrieve) now provides detailed currency formatting information for reward amounts, including symbol, position, decimal formatting, ISO code, and formatted string representation for proper localized display * [GET /providers/{id}/account\_status](/api-reference/endpoints/providers-account-status-retrieve) now exposes referee service fee discounts in the billing information, allowing developers to display discount details for referred providers ### GET /platform/referral\_code * the `share_url` response's property `format` changed from `uri` to `none` for status `200` (media type: application/json) * added the required property `stats` to the response with the `200` status (media type: application/json) * the response required property `code` became read-only for the status `200` (media type: application/json) * the response required property `share_url` became read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referral-code-retrieve) ### GET /invoices * added the required property `results/items/receipt_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /invoices/{id} * added the required property `receipt_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-retrieve) ### GET /platform/referral\_program * added the optional property `reward_amount/currency_symbol` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/currency_symbol_position` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/decimal` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/iso_currency_code` to the response with the `200` status (media type: application/json) * added the optional property `reward_amount/string` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referral-program-retrieve) ### GET /providers/{id}/account\_status * added the required property `teamup_billing/allOf[subschema #1: TeamUpBilling]/referee_service_fee_discount` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-account-status-retrieve) [August 28, 2026](/changelog/2026/08/28) ---------------------------------------- August 28, 2026 · 6 min read This release adds comprehensive support for lead source tracking across customer segments and reporting endpoints, enabling developers to filter and segment customers based on how they were acquired. Additionally, four new referral program endpoints have been introduced, allowing API consumers to programmatically access referral codes, generate QR codes, retrieve program details, and list referrals. * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) now returns lead source information in customer segment queries, enabling you to see how customers in each segment were acquired * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) now accepts lead source as a query criterion when creating segments, allowing you to build segments based on customer acquisition channels * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) now includes lead source in the segment query details returned * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) now returns lead source information in the updated segment response * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) now returns lead source information in the updated segment response * [GET /platform/referral\_code](/api-reference/endpoints/platform-referral-code-retrieve) is a new endpoint that retrieves your referral code for sharing with potential referrals * [GET /platform/referral\_code/qr\_code](/api-reference/endpoints/platform-referral-code-qr-code-retrieve) is a new endpoint that generates a QR code for your referral link, making it easy to share in print or mobile contexts * [GET /platform/referral\_program](/api-reference/endpoints/platform-referral-program-retrieve) is a new endpoint that retrieves details about the referral program, including terms and rewards * [GET /platform/referrals](/api-reference/endpoints/platform-referrals-list) is a new endpoint that lists all referrals you've made, allowing you to track referral status and rewards * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) now supports filtering by lead source, enabling you to analyze grouped customer data by acquisition channel * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) now accepts lead source as a filter when exporting grouped customer reports * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) now supports filtering by lead source, allowing you to analyze customer data by how they were acquired * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) now accepts lead source as a filter when exporting customer reports ### GET /crm/customer\_segments * added the optional property `results/items/query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * added the new optional request property `query/lead_source` (media type: application/json) * added the optional property `query/lead_source` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-create) ### GET /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/lead_source` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/crm-customer-segments-update) ### GET /platform/referral\_code * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-code-retrieve) ### GET /platform/referral\_code/qr\_code * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-code-qr-code-retrieve) ### GET /platform/referral\_program * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referral-program-retrieve) ### GET /platform/referrals * endpoint added [ View updated docs ](/api-reference/endpoints/platform-referrals-list) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `lead_source` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `lead_source` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `lead_source` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `lead_source` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer entries ](/changelog)[ Older entries ](/changelog/page/3) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [August 25, 2026](/changelog/2026/08/25) ---------------------------------------- August 25, 2026 · 10 min read ### GET /crm/bulk\_status\_evaluations * endpoint added [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/bulk\_status\_evaluations/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-retrieve) ### GET /crm/customer\_segments * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### POST /crm/customer\_segments * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-create) ### DELETE /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-destroy) ### GET /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-customer-segments-update) ### GET /crm/interactions * endpoint added [View updated docs](/api-reference/endpoints/crm-interactions-list) ### POST /crm/interactions * endpoint added [View updated docs](/api-reference/endpoints/crm-interactions-create) ### GET /crm/lead\_forms * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### POST /crm/lead\_forms * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-create) ### DELETE /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-destroy) ### GET /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-retrieve) ### PATCH /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-partial-update) ### PUT /crm/lead\_forms/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-update) ### POST /crm/lead\_forms/{id}/submit * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-forms-submit-create) ### GET /crm/lead\_sources * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### POST /crm/lead\_sources * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-create) ### GET /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-retrieve) ### PATCH /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-partial-update) ### PUT /crm/lead\_sources/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-lead-sources-update) ### GET /crm/settings * endpoint added [View updated docs](/api-reference/endpoints/crm-settings-retrieve) ### PATCH /crm/settings * endpoint added [View updated docs](/api-reference/endpoints/crm-settings-partial-update) ### GET /crm/status\_changes * endpoint added [View updated docs](/api-reference/endpoints/crm-status-changes-list) ### GET /crm/status\_changes/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-status-changes-retrieve) ### GET /crm/statuses * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/statuses/{id}/defaults * endpoint added [View updated docs](/api-reference/endpoints/crm-statuses-defaults-retrieve) ### GET /crm/workflow\_action\_types/{type} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-action-types-retrieve) ### GET /crm/workflow\_actions * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### DELETE /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-destroy) ### GET /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflow\_triggers/{trigger} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflow-triggers-retrieve) ### GET /crm/workflows * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * endpoint added [View updated docs](/api-reference/endpoints/crm-workflows-update) [August 24, 2026](/changelog/2026/08/24) ---------------------------------------- August 24, 2026 · One min read This release improves error handling documentation for the OAuth token refresh endpoint by documenting the 400 Bad Request response. Developers can now better understand and handle failed token refresh attempts in their applications. * [POST /auth/refresh\_access\_token](/api-reference/endpoints/auth-refresh-access-token-create) now documents the 400 Bad Request error response, allowing developers to handle invalid or expired refresh token errors more effectively ### POST /auth/refresh\_access\_token * added the non-success response with the status `400` [View updated docs](/api-reference/endpoints/auth-refresh-access-token-create) [August 19, 2026](/changelog/2026/08/19) ---------------------------------------- August 19, 2026 · 4 min read All waiver endpoints now return a `created_datetime` field in their responses, providing timestamp information about when each waiver was originally created. This enhancement applies uniformly across list, retrieve, create, update, and archive operations, giving API consumers consistent access to waiver creation timestamps for auditing and chronological tracking purposes. * [GET /waivers](/api-reference/endpoints/waivers-list) – Each waiver in the results now includes its creation timestamp, enabling chronological sorting and filtering of waivers * [POST /waivers](/api-reference/endpoints/waivers-create) – Newly created waivers now return their creation timestamp in the response * [GET /waivers/{id}](/api-reference/endpoints/waivers-retrieve) – Waiver retrieval now includes the creation timestamp for audit and tracking purposes * [PATCH /waivers/{id}](/api-reference/endpoints/waivers-partial-update) – Partial updates now return the waiver's original creation timestamp in the response * [PUT /waivers/{id}](/api-reference/endpoints/waivers-update) – Full updates now return the waiver's original creation timestamp in the response * [POST /waivers/{id}/archive](/api-reference/endpoints/waivers-archive-create) – Archiving a waiver now returns its creation timestamp for record-keeping * [POST /waivers/{id}/archive-and-copy](/api-reference/endpoints/waivers-archive-and-copy-create) – Archive-and-copy operations now include the creation timestamp for both the archived waiver and its copy ### GET /waivers * added the required property `results/items/created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### POST /waivers * added the required property `created_datetime` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-create) ### GET /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-retrieve) ### PATCH /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-partial-update) ### PUT /waivers/{id} * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-update) ### POST /waivers/{id}/archive * added the required property `created_datetime` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-archive-create) ### POST /waivers/{id}/archive-and-copy * added the required property `waiver/allOf[subschema #1: WaiverRead]/created_datetime` to the response with the `201` status (media type: application/json) * added the required property `waiver/allOf[subschema #1: WaiverRead]/created_datetime` to the response with the `202` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-archive-and-copy-create) [August 12, 2026](/changelog/2026/08/12) ---------------------------------------- August 12, 2026 · 2 min read This release enhances the customer prerequisites and registration eligibility workflows. The missing requisites endpoint now supports hypothetical scenarios to check requirements before membership changes, and both endpoints have been updated to better distinguish between immediate and deferred form/waiver requirements. * [GET /customers/{id}/missing\_requisites](/api-reference/endpoints/customers-missing-requisites-retrieve) now accepts hypothetical membership and offering type parameters, allowing you to check what forms and waivers a customer would need if they were to change memberships or register for different offering types. The response structure for missing forms and waivers has also been simplified. * [POST /registration\_eligibility/check](/api-reference/endpoints/registration-eligibility-check-create) now returns separate lists of deferred forms and deferred waivers in prerequisites, enabling you to distinguish between requirements that must be completed immediately versus those that can be completed later. ### GET /customers/{id}/missing\_requisites * the `missing_forms` response's property `type` changed from `array<object>` to `string` for status `200` (media type: application/json) * the `missing_waivers` response's property `type` changed from `array<object>` to `string` for status `200` (media type: application/json) * added the new optional `query` request parameter `hypothetical_membership` * added the new optional `query` request parameter `hypothetical_offering_type` [View updated docs](/api-reference/endpoints/customers-missing-requisites-retrieve) ### POST /registration\_eligibility/check * added the optional property `prerequisites/deferred_forms` to the response with the `200` status (media type: application/json) * added the optional property `prerequisites/deferred_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-eligibility-check-create) [August 10, 2026](/changelog/2026/08/10) ---------------------------------------- August 10, 2026 · 8 min read This release adds two new endpoints for sending customer forms and waivers, and introduces invitation\_url fields across customer and membership endpoints to enable customer invitation workflows. Additionally, provider endpoints now expose registration\_settings to help configure customer registration. * [POST /customer\_forms/{id}/send](/api-reference/endpoints/customer-forms-send-create) – New endpoint to send customer forms to recipients * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) – Now includes invitation URLs for each shared membership, enabling you to invite customers to access their memberships * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) – Returns invitation URLs when creating memberships, allowing immediate customer invitation * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) – Includes invitation URLs in responses when bulk editing membership prices * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) – Returns the invitation URL for the membership * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) – Includes invitation URL when canceling a membership * [GET /customers](/api-reference/endpoints/customers-list) – Now returns invitation URLs for each customer, enabling customer account invitations * [POST /customers](/api-reference/endpoints/customers-create) – Provides an invitation URL when creating new customers * [GET /customers/{id}](/api-reference/endpoints/customers-retrieve) – Returns the customer's invitation URL * [PATCH /customers/{id}](/api-reference/endpoints/customers-partial-update) – Includes invitation URL when partially updating customer details * [PUT /customers/{id}](/api-reference/endpoints/customers-update) – Returns invitation URL when updating customer information * [GET /customers/{id}/account\_status](/api-reference/endpoints/customers-account-status-retrieve) – Now includes the customer's invitation URL in account status responses * [POST /customers/{id}/add\_child](/api-reference/endpoints/customers-add-child-create) – Returns invitation URL when adding a child to a customer account * [POST /customers/{id}/change\_email](/api-reference/endpoints/customers-change-email-create) – Includes invitation URL when changing a customer's email * [POST /customers/{id}/change\_password](/api-reference/endpoints/customers-change-password-create) – Returns invitation URL after password changes * [PUT /customers/{id}/participation](/api-reference/endpoints/customers-participation-update) – Includes invitation URL when updating customer participation settings * [GET /providers](/api-reference/endpoints/providers-list) – Now exposes registration settings for each provider * [GET /providers/{id}](/api-reference/endpoints/providers-retrieve) – Returns the provider's registration settings * [POST /providers/{id}/register\_customer](/api-reference/endpoints/providers-register-customer-create) – Includes invitation URL when registering a new customer with a provider * [GET /providers/{id}/registration\_settings](/api-reference/endpoints/providers-registration-settings-retrieve) – New endpoint to retrieve provider registration configuration * [POST /waivers/{id}/send](/api-reference/endpoints/waivers-send-create) – New endpoint to send waivers to recipients ### POST /customer\_forms/{id}/send * endpoint added [View updated docs](/api-reference/endpoints/customer-forms-send-create) ### GET /customer\_memberships * added the required property `results/items/shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the required property `shared_with/items/invitation_url` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the required property `shared_with/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /customers * added the required property `results/items/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### POST /customers * added the required property `invitation_url` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-create) ### GET /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-retrieve) ### PATCH /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-partial-update) ### PUT /customers/{id} * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-update) ### GET /customers/{id}/account\_status * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-account-status-retrieve) ### POST /customers/{id}/add\_child * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-add-child-create) ### POST /customers/{id}/change\_email * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-change-email-create) ### POST /customers/{id}/change\_password * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-change-password-create) ### PUT /customers/{id}/participation * added the required property `invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-participation-update) ### GET /providers * added the optional property `results/items/registration_settings` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /providers/{id} * added the optional property `registration_settings` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-retrieve) ### POST /providers/{id}/register\_customer * added the required property `customer/invitation_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-register-customer-create) ### GET /providers/{id}/registration\_settings * endpoint added [View updated docs](/api-reference/endpoints/providers-registration-settings-retrieve) ### POST /waivers/{id}/send * endpoint added [View updated docs](/api-reference/endpoints/waivers-send-create) [July 23, 2026](/changelog/2026/07/23) -------------------------------------- July 23, 2026 · 7 min read ### GET /customer\_forms * added the optional property `results/items/membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/offering_type_settings` to the response with the `200` status (media type: application/json) * added the required property `results/items/timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### POST /customer\_forms * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `201` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `201` status (media type: application/json) * added the optional property `timing_mode` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-create) ### GET /customer\_forms/{id} * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the required property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) ### PATCH /customer\_forms/{id} * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-partial-update) ### PUT /customer\_forms/{id} * added the new optional request property `membership_settings` (media type: application/json) * added the new optional request property `offering_type_settings` (media type: application/json) * added the new optional request property `timing_mode` (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-update) ### GET /memberships * added the new optional `query` request parameter `waivers` [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_types * added the new optional `query` request parameter `waivers` [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /waivers * added the optional property `results/items/can_edit` to the response with the `200` status (media type: application/json) * added the optional property `results/items/membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `results/items/signed_profile_waiver_count` to the response with the `200` status (media type: application/json) * added the required property `results/items/memberships` to the response with the `200` status (media type: application/json) * added the required property `results/items/offering_types` to the response with the `200` status (media type: application/json) * added the required property `results/items/timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### POST /waivers * endpoint added [View updated docs](/api-reference/endpoints/waivers-create) ### GET /waivers/{id} * added the optional property `can_edit` to the response with the `200` status (media type: application/json) * added the optional property `membership_settings` to the response with the `200` status (media type: application/json) * added the optional property `offering_type_settings` to the response with the `200` status (media type: application/json) * added the optional property `signed_profile_waiver_count` to the response with the `200` status (media type: application/json) * added the required property `memberships` to the response with the `200` status (media type: application/json) * added the required property `offering_types` to the response with the `200` status (media type: application/json) * added the required property `timing_mode` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-retrieve) ### PATCH /waivers/{id} * endpoint added [View updated docs](/api-reference/endpoints/waivers-partial-update) ### PUT /waivers/{id} * endpoint added [View updated docs](/api-reference/endpoints/waivers-update) ### POST /waivers/{id}/archive * endpoint added [View updated docs](/api-reference/endpoints/waivers-archive-create) ### POST /waivers/{id}/archive-and-copy * endpoint added [View updated docs](/api-reference/endpoints/waivers-archive-and-copy-create) [July 22, 2026](/changelog/2026/07/22) -------------------------------------- July 22, 2026 · One min read ### GET /customer\_memberships * added the new optional `query` request parameter `owned_or_shared_with_family` [View updated docs](/api-reference/endpoints/customer-memberships-list) ### PATCH /waivers/ordering * endpoint added [View updated docs](/api-reference/endpoints/waivers-ordering-partial-update) [July 17, 2026](/changelog/2026/07/17) -------------------------------------- July 17, 2026 · 3 min read ### POST /customers/{id}/send\_missing\_forms\_email * removed the request body * removed the required property `created_at` from the response with the `200` status (media type: application/json) * removed the required property `email` from the response with the `200` status (media type: application/json) * removed the required property `family_role` from the response with the `200` status (media type: application/json) * removed the required property `id` from the response with the `200` status (media type: application/json) * removed the required property `image` from the response with the `200` status (media type: application/json) * removed the required property `is_lead` from the response with the `200` status (media type: application/json) * removed the required property `is_status_locked` from the response with the `200` status (media type: application/json) * removed the required property `object` from the response with the `200` status (media type: application/json) * removed the required property `participating` from the response with the `200` status (media type: application/json) * removed the required property `provider` from the response with the `200` status (media type: application/json) * removed the required property `referral_code` from the response with the `200` status (media type: application/json) * removed the required property `status` from the response with the `200` status (media type: application/json) * removed the required property `visibility` from the response with the `200` status (media type: application/json) * deleted the `query` request parameter `expand` * deleted the `query` request parameter `fields` * removed the optional property `credit_balance` from the response with the `200` status (media type: application/json) * removed the optional property `customer_venue` from the response with the `200` status (media type: application/json) * removed the optional property `family` from the response with the `200` status (media type: application/json) * removed the optional property `field_values` from the response with the `200` status (media type: application/json) * removed the optional property `first_name` from the response with the `200` status (media type: application/json) * removed the optional property `is_opted_into_broadcast_messages` from the response with the `200` status (media type: application/json) * removed the optional property `is_opted_into_sms_marketing` from the response with the `200` status (media type: application/json) * removed the optional property `last_name` from the response with the `200` status (media type: application/json) * removed the optional property `lead_source` from the response with the `200` status (media type: application/json) * removed the optional property `sms_account` from the response with the `200` status (media type: application/json) * removed the optional property `staff_assignments` from the response with the `200` status (media type: application/json) * added the required property `message` to the response with the `200` status (media type: application/json) * added the required property `reason` to the response with the `200` status (media type: application/json) * added the required property `success` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-send-missing-forms-email-create) [July 15, 2026](/changelog/2026/07/15) -------------------------------------- July 15, 2026 · 5 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_month` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_year` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * added the required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #2: BankAccountRead -> subschema #5: BankAccountRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #3: PaypalRead -> subschema #1: PaypalRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #4: MandateRead -> subschema #3: MandateRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #5: OfflinePaymentRead -> subschema #6: OfflinePaymentRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #6: PayFastRead -> subschema #4: PayFastRead]/label` to the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_month` became read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #1: CreditCardRead -> subschema #2: CreditCardRead]/expiration_year` became read-only for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/payment-methods-list) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `last_broadcast_at_gte` * added the new optional `query` request parameter `last_broadcast_at_lte` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `last_broadcast_at_gte` (media type: application/json) * added the new optional request property `last_broadcast_at_lte` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `last_broadcast_at_gte` * added the new optional `query` request parameter `last_broadcast_at_lte` * added the new optional `query` request parameter `segment` * added the enum value `last_broadcast_at` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/last_broadcast_at` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `last_broadcast_at_gte` (media type: application/json) * added the new optional request property `last_broadcast_at_lte` (media type: application/json) * added the new optional request property `segment` (media type: application/json) * added the new `last_broadcast_at` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### PATCH /payment\_methods/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/payment-methods-partial-update) ### GET /providers/{id}/entitlements * added the new optional `query` request parameter `expand` * added the new optional `query` request parameter `fields` [ View updated docs ](/api-reference/endpoints/providers-entitlements-retrieve) [July 14, 2026](/changelog/2026/07/14) -------------------------------------- July 14, 2026 · 4 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_month` response's property `type` changed from `string` to `integer` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_year` response's property `type` changed from `string` to `integer` for status `200` (media type: application/json) * removed the required property `results/items/oneOf[subschema #1: MandateRead -> subschema #4: MandateRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #2: PaypalRead -> subschema #3: PaypalRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #3: OfflinePaymentRead -> subschema #5: OfflinePaymentRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #5: PayFastRead -> subschema #6: PayFastRead]/label` from the response with the `200` status (media type: application/json) * removed the required property `results/items/oneOf[subschema #6: BankAccountRead -> subschema #2: BankAccountRead]/label` from the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_month` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead -> subschema #1: CreditCardRead]/expiration_year` became not read-only for the status `200` (media type: application/json) [ View updated docs ](/api-reference/endpoints/payment-methods-list) ### PATCH /payment\_methods/{id} * api removed without deprecation [ View updated docs ](/api-reference/endpoints/payment-methods-partial-update) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `segment` * added the new optional `query` request parameter `extra_customer_fields` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `segment` (media type: application/json) * added the new optional request property `extra_customer_fields` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `segment` * added the new optional `query` request parameter `extra_customer_fields` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `segment` (media type: application/json) * added the new optional request property `extra_customer_fields` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [ Newer entries ](/changelog/page/2)[ Older entries ](/changelog/page/4) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [July 13, 2026](/changelog/2026/07/13) -------------------------------------- July 13, 2026 · 2 min read ### GET /payment\_methods * the `results/items/oneOf[subschema #4: CreditCardRead]/expiration_month` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * the `results/items/oneOf[subschema #4: CreditCardRead]/expiration_year` response's property `type` changed from `integer` to `string` for status `200` (media type: application/json) * added the required property `results/items/oneOf[subschema #1: PaypalRead -> subschema #2: PaypalRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #2: MandateRead -> subschema #1: MandateRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #3: BankAccountRead -> subschema #6: BankAccountRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #4: CreditCardRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #5: PayFastRead]/label` to the response with the `200` status (media type: application/json) * added the required property `results/items/oneOf[subschema #6: OfflinePaymentRead -> subschema #3: OfflinePaymentRead]/label` to the response with the `200` status (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead]/expiration_month` became read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #4: CreditCardRead]/expiration_year` became read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### PATCH /payment\_methods/{id} * endpoint added [View updated docs](/api-reference/endpoints/payment-methods-partial-update) [July 9, 2026](/changelog/2026/07/09) ------------------------------------- July 9, 2026 · 2 min read ### PATCH /communication/notification\_types/missing\_forms\_waivers * the request property `resend_interval_days` became not nullable (media type: application/json) * added the new optional request property `frequency` (media type: application/json) * added the required property `frequency` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-partial-update) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `extra_customer_fields` * added the new optional `query` request parameter `segment` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `extra_customer_fields` (media type: application/json) * added the new optional request property `segment` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /communication/notification\_types/missing\_forms\_waivers * added the required property `frequency` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-retrieve) [July 7, 2026](/changelog/2026/07/07) ------------------------------------- July 7, 2026 · 9 min read ### PUT /communication/broadcast\_messages/{id} * added the new required request property `content_check` (media type: application/json) * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * removed the request property `channel` (media type: application/json) * removed the request property `is_sent` (media type: application/json) * removed the request property `message` (media type: application/json) * removed the request property `scheduled_at` (media type: application/json) * removed the request property `sent_at` (media type: application/json) * removed the request property `sent_by` (media type: application/json) * removed the request property `subject` (media type: application/json) * removed the request property `use_case` (media type: application/json) * added the new optional request property `acknowledge_content_warning` (media type: application/json) * request body became optional * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-send-create) ### POST /auth/m2m\_tokens * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new `perform_by_boxmate` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #2: StaffProfile]/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-profiles-list) ### POST /communication/broadcast\_messages * added the required property `content_check` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/{id} * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the required property `content_check` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/communication-broadcast-messages-partial-update) ### GET /content * added the optional property `results/items/instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-remove-favorite-create) ### GET /customer\_forms * added the required property `results/items/is_deletable` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-retrieve) ### GET /instructors * added the optional property `results/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /integrations/marketing\_suite/config * endpoint added [ View updated docs ](/api-reference/endpoints/integrations-marketing-suite-config-retrieve) ### POST /integrations/marketing\_suite/launch\_sso * endpoint added [ View updated docs ](/api-reference/endpoints/integrations-marketing-suite-launch-sso-create) ### GET /providers/{id}/entitlements * added the required property `marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/providers-entitlements-retrieve) ### GET /staff * added the optional property `results/items/permissions/perform_by_boxmate` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/perform_by_boxmate` (media type: application/json) * added the optional property `permissions/perform_by_boxmate` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-create) [June 29, 2026](/changelog/2026/06/29) -------------------------------------- June 29, 2026 · 11 min read ### POST /auth/m2m\_tokens * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new `marketing_suite` enum value to the request property `permissions/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #2: StaffProfile -> subschema #1: StaffProfile]/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/auth-profiles-list) ### GET /content * added the optional property `results/items/instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/content-remove-favorite-create) ### GET /customer\_forms * added the optional property `results/items/stale_submissions_count` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the optional property `stale_submissions_count` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/customer-forms-retrieve) ### GET /instructors * added the optional property `results/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /providers/{id}/platform\_subscription * endpoint added [ View updated docs ](/api-reference/endpoints/providers-platform-subscription-retrieve) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `last_registration_starts_at_gte` * added the new optional `query` request parameter `last_registration_starts_at_lte` * added the new optional `query` request parameter `next_registration_starts_at_gte` * added the new optional `query` request parameter `next_registration_starts_at_lte` * added the new optional `query` request parameter `query` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `last_registration_starts_at_gte` (media type: application/json) * added the new optional request property `last_registration_starts_at_lte` (media type: application/json) * added the new optional request property `next_registration_starts_at_gte` (media type: application/json) * added the new optional request property `next_registration_starts_at_lte` (media type: application/json) * added the new optional request property `query` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `last_registration_starts_at_gte` * added the new optional `query` request parameter `last_registration_starts_at_lte` * added the new optional `query` request parameter `next_registration_starts_at_gte` * added the new optional `query` request parameter `next_registration_starts_at_lte` * added the new optional `query` request parameter `query` * added the enum value `last_registration` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.id` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration.type` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_id` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `last_registration_type` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.id` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration.type` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_id` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_starts_at` to the property `items/` of the `query` request parameter `columns` * added the enum value `next_registration_type` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/last_registration` to the response with the `200` status * added the optional property `rows/items/next_registration` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `last_registration_starts_at_gte` (media type: application/json) * added the new optional request property `last_registration_starts_at_lte` (media type: application/json) * added the new optional request property `next_registration_starts_at_gte` (media type: application/json) * added the new optional request property `next_registration_starts_at_lte` (media type: application/json) * added the new optional request property `query` (media type: application/json) * added the new `last_registration` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.id` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration.type` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_id` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `last_registration_type` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.id` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration.type` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_id` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_starts_at` enum value to the request property `columns/items/` (media type: application/json) * added the new `next_registration_type` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /staff * added the optional property `results/items/permissions/marketing_suite` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/marketing_suite` (media type: application/json) * added the optional property `permissions/marketing_suite` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/staff-create) [June 24, 2026](/changelog/2026/06/24) -------------------------------------- June 24, 2026 · 2 min read ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `registered_and_attended_count_gte` * added the new optional `query` request parameter `registered_and_attended_count_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `registered_and_attended_count_gte` (media type: application/json) * added the new optional request property `registered_and_attended_count_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `registered_and_attended_count_gte` * added the new optional `query` request parameter `registered_and_attended_count_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `registered_and_attended_count_gte` (media type: application/json) * added the new optional request property `registered_and_attended_count_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [June 23, 2026](/changelog/2026/06/23) -------------------------------------- June 23, 2026 · 2 min read ### GET /auth/oidc/userinfo * endpoint added [View updated docs](/api-reference/endpoints/auth-oidc-userinfo-retrieve) ### GET /customer\_memberships * added the optional property `results/items/shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `shared_with` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `shared_with` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) [June 22, 2026](/changelog/2026/06/22) -------------------------------------- June 22, 2026 · 4 min read ### PUT /communication/broadcast\_messages/{id} * added the new required request property `channel` (media type: application/json) * added the new required request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-update) ### POST /communication/broadcast\_messages/{id}/send * added the new required request property `channel` (media type: application/json) * added the new required request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-create) ### POST /communication/broadcast\_messages * added the new optional request property `channel` (media type: application/json) * added the new optional request property `defer_sending` (media type: application/json) * added the new optional request property `subject` (media type: application/json) * added the required property `channel` to the response with the `201` status (media type: application/json) * added the required property `subject` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-create) ### GET /communication/broadcast\_messages/email\_quota * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-email-quota-retrieve) ### POST /communication/broadcast\_messages/recipients\_preview * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-recipients-preview-create) ### POST /communication/broadcast\_messages/send\_test\_email * endpoint added [View updated docs](/api-reference/endpoints/communication-broadcast-messages-send-test-email-create) ### GET /communication/broadcast\_messages/{id} * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-retrieve) ### PATCH /communication/broadcast\_messages/{id} * added the new optional request property `subject` (media type: application/json) * added the required property `channel` to the response with the `200` status (media type: application/json) * added the required property `subject` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-broadcast-messages-partial-update) [June 16, 2026](/changelog/2026/06/16) -------------------------------------- June 16, 2026 · 71 min read ### GET /availability\_schedule\_offering\_types * response property `results/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### POST /availability\_schedules * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-create) ### GET /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-retrieve) ### PATCH /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-partial-update) ### PUT /availability\_schedules/{id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-update) ### DELETE /availability\_schedules/{id}/offering\_types/{offering\_type\_id} * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #1: RoomRentalAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `oneOf[subschema #2: InstructorAvailabilitySchedule]/offering_types/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-offering-types-destroy) ### GET /content * response property `results/items/instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `results/items/instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content/{id} * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `instructors/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `instructors/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-remove-favorite-create) ### GET /content\_collections * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_collections/{id} * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-retrieve) ### GET /instructors * response property `results/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `results/items/availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `results/items/availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### POST /instructors * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `201` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/instructor` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedules/items/venue` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * added the optional property `availability_schedules/items/availability_schedule_offering_types` to the response with the `200` status (media type: application/json) * added the optional property `availability_schedules/items/offering_types` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /memberships * response property `results/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### POST /memberships * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `plans` became not read-only for the status `201` (media type: application/json) * the response required property `terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-create) ### GET /memberships/{id} * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `plans` became not read-only for the status `200` (media type: application/json) * the response required property `terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-retrieve) ### PUT /memberships/{id} * response property `category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `plans` became not read-only for the status `200` (media type: application/json) * the response required property `terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-update) ### GET /offering\_types * response property `results/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `results/items/memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `results/items/memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `results/items/memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### POST /offering\_types * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `201` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `201` * the response required property `memberships/items/plans` became not read-only for the status `201` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-create) ### GET /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-retrieve) ### PATCH /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-partial-update) ### PUT /offering\_types/{id} * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/availability_schedule` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/offering_type` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `availability_schedule_offering_types/items/venue_rooms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/category` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/penalty_system` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/plans` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/json` of response `200` * response property `memberships/items/terms` list-of-types was widened by adding types `object` to media type `application/xml` of response `200` * the response required property `memberships/items/plans` became not read-only for the status `200` (media type: application/json) * the response required property `memberships/items/terms` became not read-only for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-update) ### GET /customer\_fields * added the required property `results/items/forms` to the response with the `200` status (media type: application/json) * added the required property `results/items/is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `201` status (media type: application/json) * added the required property `is_deletable` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the new optional request property `forms` (media type: application/json) * added the required property `forms` to the response with the `200` status (media type: application/json) * added the required property `is_deletable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /customers/{id}/send\_missing\_forms\_email * endpoint added [View updated docs](/api-reference/endpoints/customers-send-missing-forms-email-create) [June 11, 2026](/changelog/2026/06/11) -------------------------------------- June 11, 2026 · One min read ### GET /providers/{id}/entitlements * added the required property `teamup_perform` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-entitlements-retrieve) [June 9, 2026](/changelog/2026/06/09) ------------------------------------- June 9, 2026 · 3 min read ### POST /customers/{id}/resend\_invite * endpoint added [ View updated docs ](/api-reference/endpoints/customers-resend-invite-create) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `last_payment_amount_gte` * added the new optional `query` request parameter `last_payment_amount_lte` * added the new optional `query` request parameter `total_spend_amount_gte` * added the new optional `query` request parameter `total_spend_amount_lte` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `last_payment_amount_gte` (media type: application/json) * added the new optional request property `last_payment_amount_lte` (media type: application/json) * added the new optional request property `total_spend_amount_gte` (media type: application/json) * added the new optional request property `total_spend_amount_lte` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `last_payment_amount_gte` * added the new optional `query` request parameter `last_payment_amount_lte` * added the new optional `query` request parameter `total_spend_amount_gte` * added the new optional `query` request parameter `total_spend_amount_lte` * added the enum value `total_spend_amount` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/total_spend_amount` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `last_payment_amount_gte` (media type: application/json) * added the new optional request property `last_payment_amount_lte` (media type: application/json) * added the new optional request property `total_spend_amount_gte` (media type: application/json) * added the new optional request property `total_spend_amount_lte` (media type: application/json) * added the new `total_spend_amount` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) ### GET /staff/{id}/ui\_settings * endpoint added [ View updated docs ](/api-reference/endpoints/staff-ui-settings-retrieve) ### PATCH /staff/{id}/ui\_settings * endpoint added [ View updated docs ](/api-reference/endpoints/staff-ui-settings-partial-update) [ Newer entries ](/changelog/page/3)[ Older entries ](/changelog/page/5) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [June 8, 2026](/changelog/2026/06/08) ------------------------------------- June 8, 2026 · One min read ### GET /communication/notification\_types/missing\_forms\_waivers * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-retrieve) ### PATCH /communication/notification\_types/missing\_forms\_waivers * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-partial-update) ### GET /communication/notification\_types/missing\_forms\_waivers/metadata * endpoint added [View updated docs](/api-reference/endpoints/communication-notification-types-missing-forms-waivers-metadata-retrieve) [June 4, 2026](/changelog/2026/06/04) ------------------------------------- June 4, 2026 · 4 min read ### GET /events * added the required property `results/items/active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-list) ### POST /events * added the required property `active_registration_status/cancellation_closes_at` to the response with the `201` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-create) ### PUT /events/external\_id:{external\_id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-external-id-update) ### GET /events/{id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-retrieve) ### PUT /events/{id} * added the required property `active_registration_status/cancellation_closes_at` to the response with the `200` status (media type: application/json) [ View updated docs ](/api-reference/endpoints/events-update) ### GET /reports/customers.grouped/data * added the new optional `query` request parameter `assigned_staff` * added the new optional `query` request parameter `has_failed_payments` * added the new optional `query` request parameter `has_issues` * added the new optional `query` request parameter `status` [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * added the new optional request property `assigned_staff` (media type: application/json) * added the new optional request property `has_failed_payments` (media type: application/json) * added the new optional request property `has_issues` (media type: application/json) * added the new optional request property `status` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * added the new optional `query` request parameter `assigned_staff` * added the new optional `query` request parameter `has_failed_payments` * added the new optional `query` request parameter `has_issues` * added the new optional `query` request parameter `status` * added the enum value `issues` to the property `items/` of the `query` request parameter `columns` * added the enum value `status` to the property `items/` of the `query` request parameter `columns` * added the enum value `status.slug` to the property `items/` of the `query` request parameter `columns` * added the enum value `status_slug` to the property `items/` of the `query` request parameter `columns` * added the optional property `rows/items/issues` to the response with the `200` status * added the optional property `rows/items/status` to the response with the `200` status [ View updated docs ](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * added the new optional request property `assigned_staff` (media type: application/json) * added the new optional request property `has_failed_payments` (media type: application/json) * added the new optional request property `has_issues` (media type: application/json) * added the new optional request property `status` (media type: application/json) * added the new `issues` enum value to the request property `columns/items/` (media type: application/json) * added the new `status` enum value to the request property `columns/items/` (media type: application/json) * added the new `status.slug` enum value to the request property `columns/items/` (media type: application/json) * added the new `status_slug` enum value to the request property `columns/items/` (media type: application/json) [ View updated docs ](/api-reference/endpoints/reports-customers-export-export-data) [May 29, 2026](/changelog/2026/05/29) ------------------------------------- May 29, 2026 · One min read ### POST /registration\_eligibility/check * added the optional property `open_checkout_url` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-eligibility-check-create) ### GET /store/products * added the new optional `query` request parameter `id` [View updated docs](/api-reference/endpoints/store-products-list) [May 26, 2026](/changelog/2026/05/26) ------------------------------------- May 26, 2026 · 2 min read ### GET /webhook\_destinations * added the new optional `query` request parameter `application` * added the optional property `results/items/status` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new optional request property `status` (media type: application/json) * added the optional property `status` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) ### DELETE /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-destroy) ### GET /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-retrieve) ### PATCH /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-partial-update) ### PUT /webhook\_destinations/{id} * endpoint added [View updated docs](/api-reference/endpoints/webhook-destinations-update) [May 20, 2026](/changelog/2026/05/20) ------------------------------------- May 20, 2026 · One min read ### POST /checkouts/{id}/cancel * endpoint added [View updated docs](/api-reference/endpoints/checkouts-cancel-create) [May 18, 2026](/changelog/2026/05/18) ------------------------------------- May 18, 2026 · One min read ### GET /customers * for the `query` request parameter `status`, the type/format was changed from `string`/ ``to `array`/`` [View updated docs](/api-reference/endpoints/customers-list) [May 14, 2026](/changelog/2026/05/14) ------------------------------------- May 14, 2026 · One min read ### PATCH /customers/{id} * removed the request body [View updated docs](/api-reference/endpoints/customers-partial-update) ### PUT /customers/{id} * removed the request body [View updated docs](/api-reference/endpoints/customers-update) [May 13, 2026](/changelog/2026/05/13) ------------------------------------- May 13, 2026 · One min read ### GET /reports/customer\_crm\_progression/data * endpoint added [View updated docs](/api-reference/endpoints/reports-customer-crm-progression-data-get-data) ### POST /reports/customer\_crm\_progression/export * endpoint added [View updated docs](/api-reference/endpoints/reports-customer-crm-progression-export-export-data) [May 11, 2026](/changelog/2026/05/11) ------------------------------------- May 11, 2026 · One min read ### GET /customers/{id}/missing\_requisites * endpoint added [View updated docs](/api-reference/endpoints/customers-missing-requisites-retrieve) [May 7, 2026](/changelog/2026/05/07) ------------------------------------ May 7, 2026 · 27 min read ### GET /customer\_fields * the response property `results/items/created_at` became nullable for the status `200` (media type: application/json) * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * the response property `created_at` became nullable for the status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * the response property `created_at` became nullable for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /offering\_types * removed the request body [View updated docs](/api-reference/endpoints/offering-types-create) ### GET /ai/business\_advisor\_reports * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/ai-business-advisor-reports-list) ### GET /applications * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/applications-list) ### GET /attendances * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/attendances-list) ### GET /auth/profiles * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /availability\_schedule\_offering\_types * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### GET /bulk\_actions/{id}/results * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/bulk-actions-results-list) ### GET /business\_closures * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/business-closures-list) ### GET /checkouts * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### GET /communication/notification\_types/membership\_penalty/messages * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/communication-notification-types-membership-penalty-messages-list) ### GET /content * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content\_collections * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_filters * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/content-filters-list) ### GET /course\_session\_attendances * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/course-session-attendances-list) ### GET /course\_sessions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /courses * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/courses-list) ### GET /customer\_field\_values * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-field-values-list) ### GET /customer\_form\_submissions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-form-submissions-list) ### GET /customer\_forms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_issues * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-issues-list) ### GET /customer\_membership\_holds * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-list) ### GET /customer\_memberships * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### GET /customer\_registration\_blocks * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-registration-blocks-list) ### GET /customers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### POST /customers/bulk\_delete * added the new optional request property `cancel_active_memberships` (media type: application/json) * added the new optional request property `cancel_pending_payments` (media type: application/json) [View updated docs](/api-reference/endpoints/customers-bulk-delete-create) ### GET /discount\_code\_applicabilities * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-applicabilities-list) ### GET /discount\_code\_groups * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-groups-list) ### GET /discount\_codes * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/discount-codes-list) ### GET /events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/events-list) ### GET /external\_calendars/accounts * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-accounts-list) ### GET /external\_calendars/events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-events-list) ### GET /external\_calendars/staff\_calendar\_settings * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-staff-calendar-settings-list) ### GET /family\_invites * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/family-invites-list) ### GET /instructor\_pay\_rates * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/instructor-pay-rates-list) ### GET /instructors * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### GET /integrations/kisi/groups * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-kisi-groups-list) ### GET /integrations/wellhub/venue\_mappings * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-wellhub-venue-mappings-list) ### GET /integrations/zoom/users * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-zoom-users-list) ### GET /invoices * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /joining\_fees * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_categories * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### GET /membership\_payment\_plans * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### GET /membership\_penalty\_systems * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-penalty-systems-list) ### GET /membership\_registration\_grants * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-registration-grants-list) ### GET /membership\_terms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-terms-list) ### GET /memberships * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_type\_categories * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-type-categories-list) ### GET /offering\_types * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /payment\_methods * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### GET /payment\_processors * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) * added the required property `results/items/is_offline` to the response with the `200` status (media type: application/json) * added the required property `results/items/is_usable` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-processors-list) ### GET /payment\_subscriptions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/payment-subscriptions-list) ### GET /policies * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policies-list) ### GET /policy\_agreements * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-list) ### GET /policy\_versions * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/policy-versions-list) ### GET /providers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /purchase\_fees * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /push\_notification\_tokens * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/push-notification-tokens-list) ### GET /recurring\_reservations * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id}/unavailable\_upcoming\_events * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-unavailable-upcoming-events-list) ### GET /registration\_options * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /registration\_timelines * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-timelines-list) ### GET /slots * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/slots-list) ### GET /staff * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### GET /store/inventory\_adjustments * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-inventory-adjustments-list) ### GET /store/order\_items * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-order-items-list) ### GET /store/orders * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-orders-list) ### GET /store/product\_attributes * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-attributes-list) ### GET /store/product\_variants * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-variants-list) ### GET /store/products * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/store-products-list) ### GET /venue\_rooms * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### GET /venues * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/venues-list) ### GET /waiver\_agreements * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/waiver-agreements-list) ### GET /waivers * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### GET /webhook\_destinations * the response property `count` became required for the status `200` (media type: application/json) * the response property `results` became required for the status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) [ Newer entries ](/changelog/page/4)[ Older entries ](/changelog/page/6) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [May 4, 2026](/changelog/2026/05/04) ------------------------------------ May 4, 2026 · 2 min read ### GET /auth/m2m\_tokens * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-retrieve) ### POST /auth/m2m\_tokens * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-create) ### DELETE /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-destroy) ### PATCH /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * endpoint added [ View updated docs ](/api-reference/endpoints/auth-m-2-m-tokens-update) [April 30, 2026](/changelog/2026/04/30) --------------------------------------- April 30, 2026 · One min read ### GET /webhook\_destinations * added the new `event.cancelled` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new `event.cancelled` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `event.cancelled` enum value to the request property `feed_item_types/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [April 28, 2026](/changelog/2026/04/28) --------------------------------------- April 28, 2026 · 2 min read ### GET /customer\_forms * removed the optional property `results/items/required_fields` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * removed the optional property `required_fields` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) ### POST /customer\_fields * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### PATCH /customer\_fields/{id} * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the new optional request property `is_required` (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) [April 23, 2026](/changelog/2026/04/23) --------------------------------------- April 23, 2026 · One min read ### POST /events/bulk\_uncancel * endpoint added [View updated docs](/api-reference/endpoints/events-bulk-uncancel-create) [April 22, 2026](/changelog/2026/04/22) --------------------------------------- April 22, 2026 · 2 min read ### GET /webhook\_destinations * added the new `crm_email.sent` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) * added the new `crm_interaction.created` enum value to the `results/items/feed_item_types/items/` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new `crm_email.sent` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `crm_interaction.created` enum value to the `feed_item_types/items/` response property for the response status `201` (media type: application/json) * added the new `crm_email.sent` enum value to the request property `feed_item_types/items/` (media type: application/json) * added the new `crm_interaction.created` enum value to the request property `feed_item_types/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [April 20, 2026](/changelog/2026/04/20) --------------------------------------- April 20, 2026 · One min read ### GET /venue\_rooms * added the new optional `query` request parameter `sort` [View updated docs](/api-reference/endpoints/venue-rooms-list) [April 16, 2026](/changelog/2026/04/16) --------------------------------------- April 16, 2026 · 8 min read ### GET /auth/profiles * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/oneOf[subschema #1: StaffProfile -> subschema #2: StaffProfile]/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /content * added the optional property `results/items/instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content/{id} * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-retrieve) ### POST /content/{id}/add\_favorite * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-add-favorite-create) ### POST /content/{id}/remove\_favorite * added the optional property `instructors/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `instructors/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-remove-favorite-create) ### GET /instructors * added the optional property `results/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### POST /instructors * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-create) ### GET /instructors/{id} * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-retrieve) ### GET /instructors/{id}/availability * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-availability-retrieve) ### GET /instructors/{id}/blocked\_times * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-retrieve) ### PATCH /instructors/{id}/blocked\_times * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-blocked-times-partial-update) ### GET /staff * added the optional property `results/items/permissions/crm_all_customer_records` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_lifecycle_status_admin` to the response with the `200` status (media type: application/json) * added the optional property `results/items/permissions/crm_own_customer_records` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### POST /staff * added the new optional request property `permissions/crm_all_customer_records` (media type: application/json) * added the new optional request property `permissions/crm_lifecycle_status_admin` (media type: application/json) * added the new optional request property `permissions/crm_own_customer_records` (media type: application/json) * added the optional property `permissions/crm_all_customer_records` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_lifecycle_status_admin` to the response with the `201` status (media type: application/json) * added the optional property `permissions/crm_own_customer_records` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-create) [April 14, 2026](/changelog/2026/04/14) --------------------------------------- April 14, 2026 · One min read ### GET /ai/business\_advisor\_config * endpoint added [View updated docs](/api-reference/endpoints/ai-business-advisor-config-retrieve) ### PATCH /ai/business\_advisor\_config * endpoint added [View updated docs](/api-reference/endpoints/ai-business-advisor-config-partial-update) ### GET /memberships * added the new optional `query` request parameter `name_contains` [View updated docs](/api-reference/endpoints/memberships-list) [April 7, 2026](/changelog/2026/04/07) -------------------------------------- April 7, 2026 · One min read ### POST /auth/logout * endpoint added [View updated docs](/api-reference/endpoints/auth-logout-create) [April 1, 2026](/changelog/2026/04/01) -------------------------------------- April 1, 2026 · 2 min read ### GET /venue\_rooms * added the optional property 'results/items/sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### POST /venue\_rooms * added the optional property 'sequence' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-create) ### PATCH /venue\_rooms/ordering * endpoint added [View updated docs](/api-reference/endpoints/venue-rooms-ordering-partial-update) ### GET /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-retrieve) ### PATCH /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-partial-update) ### PUT /venue\_rooms/{id} * added the optional property 'sequence' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-update) [ Newer entries ](/changelog/page/5)[ Older entries ](/changelog/page/7) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [March 31, 2026](/changelog/2026/03/31) --------------------------------------- March 31, 2026 · 2 min read ### POST /events/{id}/noshow\_attendance * api path removed without deprecation [View updated docs](/api-reference/endpoints/events-noshow-attendance-create) ### GET /customers * added the new optional 'query' request parameter 'status' [View updated docs](/api-reference/endpoints/customers-list) ### POST /events/{id}/mark\_no\_show * endpoint added [View updated docs](/api-reference/endpoints/events-mark-no-show-create) ### POST /events/{id}/register * added the new optional request property 'comped' (media type: application/json) [View updated docs](/api-reference/endpoints/events-register-create) ### GET /policy\_agreements * added the new optional 'query' request parameter 'customer' [View updated docs](/api-reference/endpoints/policy-agreements-list) ### POST /policy\_agreements * added the new optional request property 'customer' (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-create) [March 26, 2026](/changelog/2026/03/26) --------------------------------------- March 26, 2026 · 2 min read ### GET /customer\_fields * added the optional property 'results/items/is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /customer\_fields * added the optional property 'is\_required' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-create) ### GET /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-retrieve) ### PATCH /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-partial-update) ### PUT /customer\_fields/{id} * added the optional property 'is\_required' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-update) ### POST /events/{id}/noshow\_attendance * endpoint added [View updated docs](/api-reference/endpoints/events-noshow-attendance-create) [March 24, 2026](/changelog/2026/03/24) --------------------------------------- March 24, 2026 · One min read ### GET /customer\_forms * added the optional property 'results/items/required\_fields' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_forms/{id} * added the optional property 'required\_fields' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-retrieve) [March 23, 2026](/changelog/2026/03/23) --------------------------------------- March 23, 2026 · One min read ### GET /customer\_membership\_holds/{id}/payment\_resolution * the response property 'resolution' became nullable for the status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-payment-resolution-retrieve) [March 18, 2026](/changelog/2026/03/18) --------------------------------------- March 18, 2026 · 8 min read ### GET /crm/bulk\_status\_evaluations * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/bulk\_status\_evaluations/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-retrieve) ### GET /crm/lead\_forms * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### POST /crm/lead\_forms * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-create) ### DELETE /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-destroy) ### GET /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-retrieve) ### PATCH /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-partial-update) ### PUT /crm/lead\_forms/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-update) ### POST /crm/lead\_forms/{id}/submit * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-forms-submit-create) ### GET /crm/lead\_sources * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### POST /crm/lead\_sources * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-create) ### GET /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-retrieve) ### PATCH /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-partial-update) ### PUT /crm/lead\_sources/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-lead-sources-update) ### GET /crm/settings * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-settings-retrieve) ### PATCH /crm/settings * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-settings-partial-update) ### GET /crm/statuses * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/statuses/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-retrieve) ### PUT /crm/statuses/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-statuses-update) ### GET /crm/workflow\_action\_types/{type} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-action-types-retrieve) ### GET /crm/workflow\_actions * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### DELETE /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-destroy) ### GET /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflow\_triggers/{trigger} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflow-triggers-retrieve) ### GET /crm/workflows * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * api path removed without deprecation [View updated docs](/api-reference/endpoints/crm-workflows-update) [March 12, 2026](/changelog/2026/03/12) --------------------------------------- March 12, 2026 · One min read ### POST /events/{id}/register * removed the request property 'event' (media type: application/json) [View updated docs](/api-reference/endpoints/events-register-create) ### POST /events/{id}/confirm\_attendance * endpoint added [View updated docs](/api-reference/endpoints/events-confirm-attendance-create) [February 27, 2026](/changelog/2026/02/27) ------------------------------------------ February 27, 2026 · 5 min read ### GET /crm/workflow\_actions * added the new 'crm\_status\_change' enum value to the 'results/items/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new enum value 'customer\_status.changed' to the 'query' request parameter 'workflow\_trigger' [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### POST /crm/workflow\_actions * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '201' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-create) ### GET /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-retrieve) ### PATCH /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-partial-update) ### PUT /crm/workflow\_actions/{id} * added the new 'crm\_status\_change' enum value to the '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' response property for the response status '200' (media type: application/json) * added the new 'crm\_status\_change' enum value to the request property '/oneOf\[subschema #1: EmailCustomerAction\]/conditions/items/oneOf\[subschema #1: CustomerLabelCondition\]/condition\_type' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-update) ### GET /crm/workflows * added the new 'customer\_status.changed' enum value to the 'results/items/trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-list) ### POST /crm/workflows * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '201' (media type: application/json) * added the new 'customer\_status.changed' enum value to the request property 'trigger' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-create) ### GET /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-retrieve) ### PATCH /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-partial-update) ### PUT /crm/workflows/{id} * added the new 'customer\_status.changed' enum value to the 'trigger' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-update) ### GET /webhook\_destinations * added the new 'customer\_status.changed' enum value to the 'results/items/feed\_item\_types/items/' response property for the response status '200' (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) ### POST /webhook\_destinations * added the new 'customer\_status.changed' enum value to the 'feed\_item\_types/items/' response property for the response status '201' (media type: application/json) * added the new 'customer\_status.changed' enum value to the request property 'feed\_item\_types/items/' (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-create) [February 24, 2026](/changelog/2026/02/24) ------------------------------------------ February 24, 2026 · One min read ### GET /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-retrieve) ### PATCH /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-partial-update) ### PUT /terminologies/{id} * added the new enum value 'rental' to the 'path' request parameter 'id' [View updated docs](/api-reference/endpoints/terminologies-update) [February 13, 2026](/changelog/2026/02/13) ------------------------------------------ February 13, 2026 · One min read ### GET /staff * added the optional property 'results/items/user' to the response with the '200' status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### POST /staff * added the optional property 'user' to the response with the '201' status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-create) [February 3, 2026](/changelog/2026/02/03) ----------------------------------------- February 3, 2026 · One min read ### POST /applications * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-create) ### PATCH /applications/{id} * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-partial-update) ### PUT /applications/{id} * added the new optional request property 'type' [View updated docs](/api-reference/endpoints/applications-update) [ Newer entries ](/changelog/page/6)[ Older entries ](/changelog/page/8) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [January 27, 2026](/changelog/2026/01/27) ----------------------------------------- January 27, 2026 · One min read ### POST /membership\_payment\_plans * the 'billing\_period\_length' request property's min was set to '1.00' [View updated docs](/api-reference/endpoints/membership-payment-plans-create) [January 23, 2026](/changelog/2026/01/23) ----------------------------------------- January 23, 2026 · 5 min read ### GET /customer\_membership\_holds/{id}/payment\_resolution * the 'reactivation\_billing\_period' response's property type/format changed from 'object'/'' to ''/'' for status '200' * the 'resolution' response's property type/format changed from 'object'/'' to ''/'' for status '200' * the 'start\_billing\_period' response's property type/format changed from 'object'/'' to ''/'' for status '200' * added the new 'days' enum value to the 'prorate\_strategy' response property for the response status '200' * added the new 'usage' enum value to the 'prorate\_strategy' response property for the response status '200' * the response optional property 'prorate\_strategy' became read-only for the status '200' * the response optional property 'reactivation\_billing\_period' became read-only for the status '200' * the response optional property 'resolution' became read-only for the status '200' * the response optional property 'start\_billing\_period' became read-only for the status '200' * added '#/components/schemas/ReactivationBillingPeriod' to the 'reactivation\_billing\_period' response property 'allOf' list for the response status '200' * added '#/components/schemas/Resolution' to the 'resolution' response property 'allOf' list for the response status '200' * added '#/components/schemas/StartBillingPeriod' to the 'start\_billing\_period' response property 'allOf' list for the response status '200' * the response property 'prorate\_strategy' became required for the status '200' * the response property 'reactivation\_billing\_period' became required for the status '200' * the response property 'resolution' became required for the status '200' * the response property 'start\_billing\_period' became required for the status '200' [View updated docs](/api-reference/endpoints/customer-membership-holds-payment-resolution-retrieve) ### POST /fees\_calculator * removed the required property 'results' from the response with the '200' status * added the required property 'fee\_line\_items' to the response with the '200' status * added the required property 'post\_tax\_price' to the response with the '200' status * added the required property 'pre\_tax\_price' to the response with the '200' status [View updated docs](/api-reference/endpoints/fees-calculator-create) ### GET /checkouts * added the optional property 'results/items/fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-list) ### POST /checkouts * added the optional property 'fee\_line\_items' to the response with the '201' status [View updated docs](/api-reference/endpoints/checkouts-create) ### GET /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-retrieve) ### PATCH /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-partial-update) ### PUT /checkouts/{id} * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-update) ### POST /checkouts/{id}/add\_item * added the optional property 'fee\_line\_items' to the response with the '200' status [View updated docs](/api-reference/endpoints/checkouts-add-item-create) ### GET /purchase\_fees * added the required property 'results/items/id' to the response with the '200' status [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /purchase\_fees/{id} * added the required property 'id' to the response with the '200' status [View updated docs](/api-reference/endpoints/purchase-fees-retrieve) [January 17, 2026](/changelog/2026/01/17) ----------------------------------------- January 17, 2026 · 2 min read ### GET /store/orders * added the optional property 'results/items/locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-list) ### POST /store/orders * added the optional property 'locked\_at' to the response with the '201' status [View updated docs](/api-reference/endpoints/store-orders-create) ### GET /store/orders/current\_order * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-current-order-retrieve) ### GET /store/orders/{id} * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-retrieve) ### POST /store/orders/{id}/cancel * added the new optional request property 'locked\_at' * added the optional property 'locked\_at' to the response with the '200' status [View updated docs](/api-reference/endpoints/store-orders-cancel-create) [January 13, 2026](/changelog/2026/01/13) ----------------------------------------- January 13, 2026 · 2 min read ### GET /applications * removed the required property 'results/items/type' from the response with the '200' status [View updated docs](/api-reference/endpoints/applications-list) ### POST /applications * removed the required property 'type' from the response with the '201' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-create) ### GET /applications/{id} * removed the required property 'type' from the response with the '200' status [View updated docs](/api-reference/endpoints/applications-retrieve) ### PATCH /applications/{id} * removed the required property 'type' from the response with the '200' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-partial-update) ### PUT /applications/{id} * removed the required property 'type' from the response with the '200' status * removed the request property 'type' [View updated docs](/api-reference/endpoints/applications-update) [December 15, 2025](/changelog/2025/12/15) ------------------------------------------ December 15, 2025 · 2 min read ### GET /events * added the required property 'results/items/is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-list) ### POST /events * added the required property 'is\_full' to the response with the '201' status [ View updated docs ](/api-reference/endpoints/events-create) ### PUT /events/external\_id:{external\_id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-external-id-update) ### GET /events/{id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-retrieve) ### PUT /events/{id} * added the required property 'is\_full' to the response with the '200' status [ View updated docs ](/api-reference/endpoints/events-update) [November 24, 2025](/changelog/2025/11/24) ------------------------------------------ November 24, 2025 · One min read We'll automatically update this area of the site when the TeamUp API changes. [ Newer entries ](/changelog/page/7) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Changelog | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [October 26, 2026](/changelog/2026/10/26) * [October 22, 2026](/changelog/2026/10/22) * [October 21, 2026](/changelog/2026/10/21) * [October 14, 2026](/changelog/2026/10/14) * [October 13, 2026](/changelog/2026/10/13) * [October 12, 2026](/changelog/2026/10/12) * [October 7, 2026](/changelog/2026/10/07) * [October 6, 2026](/changelog/2026/10/06) * [October 5, 2026](/changelog/2026/10/05) * [September 28, 2026](/changelog/2026/09/28) * [September 23, 2026](/changelog/2026/09/23) * [September 21, 2026](/changelog/2026/09/21) * [September 17, 2026](/changelog/2026/09/17) * [September 16, 2026](/changelog/2026/09/16) * [September 14, 2026](/changelog/2026/09/14) [October 26, 2026](/changelog/2026/10/26) ----------------------------------------- October 26, 2026 · 3 min read This release introduces comprehensive push notification management capabilities to the API, allowing developers to retrieve, mark as read, and delete push notifications. Additionally, customer notification preferences have been extended to include push notification settings, giving users granular control over how they receive notifications. * [GET /customers/{id}/notification\_preferences](/api-reference/endpoints/customers-notification-preferences-retrieve) – Retrieve customer notification preferences, now including a `push_enabled` flag to determine whether push notifications are enabled for the customer. * [PATCH /customers/{id}/notification\_preferences/{notification\_preference\_id}](/api-reference/endpoints/customers-notification-preferences-partial-update) – Update customer notification preferences with the ability to enable or disable push notifications via the new `push_enabled` field. * [GET /push\_notifications](/api-reference/endpoints/push-notifications-list) – Retrieve a list of push notifications for the authenticated user. * [POST /push\_notifications/mark\_all\_read](/api-reference/endpoints/push-notifications-mark-all-read-create) – Mark all push notifications as read in a single operation. * [DELETE /push\_notifications/{id}](/api-reference/endpoints/push-notifications-destroy) – Delete a specific push notification. * [POST /push\_notifications/{id}/mark\_read](/api-reference/endpoints/push-notifications-mark-read-create) – Mark a specific push notification as read. ### GET /customers/{id}/notification\_preferences * the response property `id` became nullable for the status `200` (media type: application/json) * added the optional property `push_enabled` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-notification-preferences-retrieve) ### PATCH /customers/{id}/notification\_preferences/{notification\_preference\_id} * the response property `id` became nullable for the status `200` (media type: application/json) * added the new optional request property `push_enabled` (media type: application/json) * removed the pattern `^\d+$` from the `path` request parameter `notification_preference_id` * added the optional property `push_enabled` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-notification-preferences-partial-update) ### GET /push\_notifications * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-list) ### POST /push\_notifications/mark\_all\_read * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-mark-all-read-create) ### DELETE /push\_notifications/{id} * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-destroy) ### POST /push\_notifications/{id}/mark\_read * endpoint added [View updated docs](/api-reference/endpoints/push-notifications-mark-read-create) [October 22, 2026](/changelog/2026/10/22) ----------------------------------------- October 22, 2026 · 3 min read This release introduces comprehensive embed widget management capabilities, allowing developers to programmatically create, retrieve, update, and delete calendar embed widgets through the API. Additionally, membership filtering has been enhanced to support course registration scenarios. * [GET /embed/bootstrap](/api-reference/endpoints/embed-bootstrap-retrieve) – Retrieve bootstrap configuration data for calendar embeds * [GET /embed\_widgets](/api-reference/endpoints/embed-widgets-list) – List all embed widgets configured for your calendar * [POST /embed\_widgets](/api-reference/endpoints/embed-widgets-create) – Create new embed widgets to display your calendar on external websites * [GET /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-retrieve) – Retrieve details of a specific embed widget * [PUT /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-update) – Update an existing embed widget configuration * [PATCH /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-partial-update) – Partially update specific fields of an embed widget * [DELETE /embed\_widgets/{id}](/api-reference/endpoints/embed-widgets-destroy) – Delete an embed widget * [GET /memberships](/api-reference/endpoints/memberships-list) – Filter memberships by those that permit registration for a specific course ### GET /embed/bootstrap * endpoint added [View updated docs](/api-reference/endpoints/embed-bootstrap-retrieve) ### GET /embed\_widgets * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-list) ### POST /embed\_widgets * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-create) ### DELETE /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-destroy) ### GET /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-retrieve) ### PATCH /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-partial-update) ### PUT /embed\_widgets/{id} * endpoint added [View updated docs](/api-reference/endpoints/embed-widgets-update) ### GET /memberships * added the new optional `query` request parameter `permits_registration_for_course` [View updated docs](/api-reference/endpoints/memberships-list) [October 21, 2026](/changelog/2026/10/21) ----------------------------------------- October 21, 2026 · 11 min read ### GET /checkouts * added the optional property `results/items/checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `results/items/checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `results/items/checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### POST /checkouts * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-create) ### POST /checkouts/preview-discount-code * added the new optional request property `item/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `item/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `item/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-preview-discount-code-create) ### GET /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-retrieve) ### PATCH /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-partial-update) ### PUT /checkouts/{id} * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-update) ### POST /checkouts/{id}/add\_item * added the new optional request property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the new optional request property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-add-item-create) ### POST /checkouts/{id}/cancel * added the optional property `checkout_items/items/oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `checkout_items/items/oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-cancel-create) ### GET /checkouts/{id}/items/{item\_id}/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-retrieve) ### POST /checkouts/{id}/items/{item\_id}/price/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-price-create) ### POST /checkouts/{id}/items/{item\_id}/quantity/ * added the optional property `oneOf[subschema #13: PrepaidMembershipCheckoutItem -> subschema #12: PrepaidMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #18: PackMembershipCheckoutItem -> subschema #2: PackMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) * added the optional property `oneOf[subschema #9: RecurringMembershipCheckoutItem -> subschema #16: RecurringMembershipCheckoutItem]/renew_from_customer_membership` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-items-quantity-create) ### GET /communication/push\_settings/class\_reminders * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-list) ### POST /communication/push\_settings/class\_reminders * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-create) ### DELETE /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-destroy) ### GET /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-retrieve) ### PATCH /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-partial-update) ### PUT /communication/push\_settings/class\_reminders/{id} * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-class-reminders-update) ### GET /customer\_memberships * added the required property `results/items/renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the required property `renew_from` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the required property `renew_from` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) ### GET /invoices * added the enum value `-id` to the property `items/` of the `query` request parameter `sort` * added the enum value `id` to the property `items/` of the `query` request parameter `sort` [View updated docs](/api-reference/endpoints/invoices-list) [October 14, 2026](/changelog/2026/10/14) ----------------------------------------- October 14, 2026 · 4 min read This release introduces read-only access control for machine-to-machine tokens and exposes plan change options across customer membership endpoints. Developers can now create or update M2M tokens with read-only permissions to limit API access, and retrieve detailed plan change options when working with customer memberships. * [POST /auth/m2m\_tokens](/api-reference/endpoints/auth-m-2-m-tokens-create) now supports creating machine-to-machine tokens with read-only access restrictions * [PATCH /auth/m2m\_tokens/{id}](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) now allows updating tokens to read-only mode and returns the read-only status in responses * [PUT /auth/m2m\_tokens/{id}](/api-reference/endpoints/auth-m-2-m-tokens-update) now supports setting read-only access when fully replacing a token * [GET /customer\_memberships](/api-reference/endpoints/customer-memberships-list) now returns available plan change options for each membership in the list * [POST /customer\_memberships](/api-reference/endpoints/customer-memberships-create) now includes plan change options in the response when creating a new membership * [POST /customer\_memberships/bulk\_edit\_prices](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) now returns plan change options after bulk price updates * [GET /customer\_memberships/{id}](/api-reference/endpoints/customer-memberships-retrieve) now provides plan change options when retrieving a specific membership * [POST /customer\_memberships/{id}/cancel](/api-reference/endpoints/customer-memberships-cancel-create) now returns plan change options when canceling a membership ### POST /auth/m2m\_tokens * added the new optional request property `is_read_only` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-create) ### PATCH /auth/m2m\_tokens/{id} * added the new optional request property `is_read_only` (media type: application/json) * added the required property `is_read_only` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * added the new optional request property `is_read_only` (media type: application/json) [View updated docs](/api-reference/endpoints/auth-m-2-m-tokens-update) ### GET /customer\_memberships * added the optional property `results/items/plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### POST /customer\_memberships * added the optional property `plan_change_options` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-create) ### POST /customer\_memberships/bulk\_edit\_prices * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-bulk-edit-prices-create) ### GET /customer\_memberships/{id} * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-retrieve) ### POST /customer\_memberships/{id}/cancel * added the optional property `plan_change_options` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-cancel-create) [October 13, 2026](/changelog/2026/10/13) ----------------------------------------- October 13, 2026 · 8 min read This release fixes a typo in the day-of-week enum value across multiple endpoints, correcting 'staturday' to 'saturday'. Additionally, push notification settings now support configuration for missing forms and waivers notifications. * [GET /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-list) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [POST /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-create) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' in both requests and responses * [GET /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-retrieve) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [PATCH /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-partial-update) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [PUT /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-update) – corrected the day-of-week enum value for fixed billing days from 'staturday' to 'saturday' * [GET /recurring\_reservations](/api-reference/endpoints/recurring-reservations-list) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [GET /recurring\_reservations/{id}](/api-reference/endpoints/recurring-reservations-retrieve) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [PATCH /recurring\_reservations/{id}](/api-reference/endpoints/recurring-reservations-partial-update) – corrected the day-of-week enum value from 'staturday' to 'saturday' * [GET /registration\_options](/api-reference/endpoints/registration-options-list) – corrected the day-of-week enum value in time slots from 'staturday' to 'saturday' * [GET /reports/classes.grouped/data](/api-reference/endpoints/reports-classes-grouped-data-get-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [POST /reports/classes.grouped/export](/api-reference/endpoints/reports-classes-grouped-export-export-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [GET /reports/classes/data](/api-reference/endpoints/reports-classes-data-get-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [POST /reports/classes/export](/api-reference/endpoints/reports-classes-export-export-data) – corrected the day-of-week filter value from 'staturday' to 'saturday' * [GET /communication/push\_settings](/api-reference/endpoints/communication-push-settings-retrieve) – now includes settings for missing forms and waivers notifications * [PATCH /communication/push\_settings](/api-reference/endpoints/communication-push-settings-partial-update) – now supports configuring push notifications for missing forms and waivers ### GET /membership\_payment\_plans * added the new `saturday` enum value to the `results/items/fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### POST /membership\_payment\_plans * removed the enum value `staturday` of the request property `fixed_billing_day_of_week` (media type: application/json) * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `201` (media type: application/json) * added the new `saturday` enum value to the request property `fixed_billing_day_of_week` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `201` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-create) ### GET /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-retrieve) ### PATCH /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-partial-update) ### PUT /membership\_payment\_plans/{id} * added the new `saturday` enum value to the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `fixed_billing_day_of_week` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-update) ### GET /recurring\_reservations * added the new `saturday` enum value to the `results/items/day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id} * added the new `saturday` enum value to the `day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-retrieve) ### PATCH /recurring\_reservations/{id} * added the new `saturday` enum value to the `day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-partial-update) ### GET /registration\_options * added the new `saturday` enum value to the `results/items/time_slots/items/day` response property for the response status `200` (media type: application/json) * removed the `staturday` enum value from the `results/items/time_slots/items/day` response property for the response status `200` (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /reports/classes.grouped/data * removed the enum value `staturday` from the property `items/` of the `query` request parameter `day_of_week` * added the enum value `saturday` to the property `items/` of the `query` request parameter `day_of_week` [View updated docs](/api-reference/endpoints/reports-classes-grouped-data-get-data) ### POST /reports/classes.grouped/export * removed the enum value `staturday` of the request property `day_of_week/items/` (media type: application/json) * added the new `saturday` enum value to the request property `day_of_week/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-classes-grouped-export-export-data) ### GET /reports/classes/data * removed the enum value `staturday` from the property `items/` of the `query` request parameter `day_of_week` * added the enum value `saturday` to the property `items/` of the `query` request parameter `day_of_week` [View updated docs](/api-reference/endpoints/reports-classes-data-get-data) ### POST /reports/classes/export * removed the enum value `staturday` of the request property `day_of_week/items/` (media type: application/json) * added the new `saturday` enum value to the request property `day_of_week/items/` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-classes-export-export-data) ### GET /communication/push\_settings * added the required property `missing_forms_and_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-push-settings-retrieve) ### PATCH /communication/push\_settings * added the new optional request property `missing_forms_and_waivers` (media type: application/json) * added the required property `missing_forms_and_waivers` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-push-settings-partial-update) [October 12, 2026](/changelog/2026/10/12) ----------------------------------------- October 12, 2026 · 4 min read This release introduces course series support, enabling clients to group related course sessions together and retrieve series-level metadata. Two new endpoints for listing and retrieving course series have been added, and existing course session endpoints now include series identifiers and session numbering. Additionally, BoxMate integration support has been removed. * [GET /course\_sessions](/api-reference/endpoints/course-sessions-list) — Retrieve course sessions with new series filtering capability via the `series` query parameter. Responses now include series identifiers and session numbering (session\_number and session\_total) to show each session's position within its parent series. Attendance and occupancy fields are now optional. * [GET /course\_sessions/{id}](/api-reference/endpoints/course-sessions-retrieve) — Retrieve individual course sessions with new series metadata, including the series identifier and session numbering information. Attendance and occupancy fields are now optional. * [GET /course\_series](/api-reference/endpoints/course-series-list) — New endpoint to list all course series, enabling clients to browse and discover available course series. * [GET /course\_series/{id}](/api-reference/endpoints/course-series-retrieve) — New endpoint to retrieve detailed information about a specific course series by its identifier. * [GET /integrations/](/api-reference/endpoints/integrations-list) — BoxMate integration is no longer supported and has been removed from available integrations. ### GET /course\_sessions * the response property `results/items/attending_count` became optional for the status `200` (media type: application/json) * the response property `results/items/max_occupancy` became optional for the status `200` (media type: application/json) * added the new optional `query` request parameter `series` * added the required property `results/items/series` to the response with the `200` status (media type: application/json) * added the required property `results/items/session_number` to the response with the `200` status (media type: application/json) * added the required property `results/items/session_total` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /course\_sessions/{id} * the response property `attending_count` became optional for the status `200` (media type: application/json) * the response property `max_occupancy` became optional for the status `200` (media type: application/json) * added the required property `series` to the response with the `200` status (media type: application/json) * added the required property `session_number` to the response with the `200` status (media type: application/json) * added the required property `session_total` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-retrieve) ### GET /course\_series * endpoint added [View updated docs](/api-reference/endpoints/course-series-list) ### GET /course\_series/{id} * endpoint added [View updated docs](/api-reference/endpoints/course-series-retrieve) ### GET /integrations/ * removed `subschema #5: BoxMate` from the `items/` response property `oneOf` list for the response status `results` (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-list) [October 7, 2026](/changelog/2026/10/07) ---------------------------------------- October 7, 2026 · 3 min read This release adds the `applies_to` property to joining fees across all membership payment plan endpoints. This new required field indicates which members the joining fee applies to, providing more granular control and transparency around joining fee applicability rules. * [GET /joining\_fees](/api-reference/endpoints/joining-fees-list) now returns the `applies_to` field for each joining fee, indicating which members the fee applies to. * [GET /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-list) now includes the `applies_to` field in the nested `joining_fee` object for each payment plan. * [POST /membership\_payment\_plans](/api-reference/endpoints/membership-payment-plans-create) now returns the `applies_to` field in the `joining_fee` object when creating a new payment plan. * [GET /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-retrieve) now includes the `applies_to` field in the `joining_fee` object when retrieving a specific payment plan. * [PATCH /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-partial-update) now returns the `applies_to` field in the `joining_fee` object when partially updating a payment plan. * [PUT /membership\_payment\_plans/{id}](/api-reference/endpoints/membership-payment-plans-update) now returns the `applies_to` field in the `joining_fee` object when fully updating a payment plan. ### GET /joining\_fees * added the required property `results/items/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_payment\_plans * added the required property `results/items/joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### POST /membership\_payment\_plans * added the required property `joining_fee/applies_to` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-create) ### GET /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-retrieve) ### PATCH /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-partial-update) ### PUT /membership\_payment\_plans/{id} * added the required property `joining_fee/applies_to` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-update) [October 6, 2026](/changelog/2026/10/06) ---------------------------------------- October 6, 2026 · 5 min read This release renames the `has_issues` parameter to `has_open_issues` across customer segmentation and reporting endpoints, providing more precise filtering by specifically targeting customers with open (unresolved) issues rather than any issues historically associated with the account. * [POST /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-create) - Create customer segments that filter by customers with open issues using the new `has_open_issues` query parameter * [GET /reports/customers.grouped/data](/api-reference/endpoints/reports-customers-grouped-data-get-data) - Retrieve grouped customer report data filtered by customers with open issues * [POST /reports/customers.grouped/export](/api-reference/endpoints/reports-customers-grouped-export-export-data) - Export grouped customer reports filtered by customers with open issues * [GET /reports/customers/data](/api-reference/endpoints/reports-customers-data-get-data) - Retrieve customer report data filtered by customers with open issues * [POST /reports/customers/export](/api-reference/endpoints/reports-customers-export-export-data) - Export customer reports filtered by customers with open issues * [GET /crm/customer\_segments](/api-reference/endpoints/crm-customer-segments-list) - List customer segments now returns the `has_open_issues` query filter in segment definitions * [GET /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-retrieve) - Retrieve customer segment details now shows the `has_open_issues` query filter * [PATCH /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-partial-update) - Partially update customer segments now returns the `has_open_issues` query filter * [PUT /crm/customer\_segments/{id}](/api-reference/endpoints/crm-customer-segments-update) - Update customer segments now returns the `has_open_issues` query filter ### POST /crm/customer\_segments * removed the request property `query/has_issues` (media type: application/json) * added the new optional request property `query/has_open_issues` (media type: application/json) * added the optional property `query/has_open_issues` to the response with the `201` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-create) ### GET /reports/customers.grouped/data * deleted the `query` request parameter `has_issues` * added the new optional `query` request parameter `has_open_issues` [View updated docs](/api-reference/endpoints/reports-customers-grouped-data-get-data) ### POST /reports/customers.grouped/export * removed the request property `has_issues` (media type: application/json) * added the new optional request property `has_open_issues` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-customers-grouped-export-export-data) ### GET /reports/customers/data * deleted the `query` request parameter `has_issues` * added the new optional `query` request parameter `has_open_issues` [View updated docs](/api-reference/endpoints/reports-customers-data-get-data) ### POST /reports/customers/export * removed the request property `has_issues` (media type: application/json) * added the new optional request property `has_open_issues` (media type: application/json) [View updated docs](/api-reference/endpoints/reports-customers-export-export-data) ### GET /crm/customer\_segments * added the optional property `results/items/query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `results/items/query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### GET /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-retrieve) ### PATCH /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-partial-update) ### PUT /crm/customer\_segments/{id} * added the optional property `query/has_open_issues` to the response with the `200` status (media type: application/json) * removed the optional property `query/has_issues` from the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-update) [October 5, 2026](/changelog/2026/10/05) ---------------------------------------- October 5, 2026 · 3 min read This release introduces new push notification settings endpoints and enriches membership data with commitment and count information. Developers can now programmatically manage push notification preferences and retrieve enhanced details about membership plan commitments and category usage across the platform. * [GET /communication/push\_settings](/api-reference/endpoints/communication-push-settings-retrieve) — retrieve the current push notification settings for communication preferences * [PATCH /communication/push\_settings](/api-reference/endpoints/communication-push-settings-partial-update) — update push notification settings to control communication delivery preferences * [GET /customer\_memberships/{id}/plan\_change\_options](/api-reference/endpoints/customer-memberships-plan-change-options-list) — now returns commitment expiration scheme and committed billing periods, enabling clients to understand the commitment terms and duration when evaluating plan change options * [GET /membership\_categories](/api-reference/endpoints/membership-categories-list) — now includes the count of memberships in each category, allowing clients to see how many members belong to each category * [POST /membership\_categories](/api-reference/endpoints/membership-categories-create) — newly created categories now return the membership count (initially zero) * [PATCH /membership\_categories/{id}](/api-reference/endpoints/membership-categories-partial-update) — updated categories now return the current membership count * [PUT /membership\_categories/{id}](/api-reference/endpoints/membership-categories-update) — updated categories now return the current membership count ### GET /communication/push\_settings * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-retrieve) ### PATCH /communication/push\_settings * endpoint added [View updated docs](/api-reference/endpoints/communication-push-settings-partial-update) ### GET /customer\_memberships/{id}/plan\_change\_options * added the required property `results/items/commitment_expiration_scheme` to the response with the `200` status (media type: application/json) * added the required property `results/items/committed_billing_periods` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) ### GET /membership\_categories * added the required property `results/items/memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### POST /membership\_categories * added the required property `memberships_count` to the response with the `201` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-create) ### PATCH /membership\_categories/{id} * added the required property `memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-partial-update) ### PUT /membership\_categories/{id} * added the required property `memberships_count` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-update) [September 28, 2026](/changelog/2026/09/28) ------------------------------------------- September 28, 2026 · 32 min read ### GET /customer\_fields * removed the enum value `learn_to_skate` from the `query` request parameter `applicable_scenario` * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-fields-list) ### POST /integrations/learn\_to\_skate/abandon\_membership * api path removed without deprecation ### GET /integrations/learn\_to\_skate/config * api path removed without deprecation ### PATCH /integrations/learn\_to\_skate/config * api path removed without deprecation ### PUT /integrations/learn\_to\_skate/config * api path removed without deprecation ### GET /integrations/learn\_to\_skate/current\_membership\_number * api path removed without deprecation ### GET /integrations/learn\_to\_skate/membership\_renew\_url/{membership\_number} * api path removed without deprecation ### POST /integrations/learn\_to\_skate/resend\_account\_link * api path removed without deprecation ### POST /integrations/learn\_to\_skate/verify\_membership * api path removed without deprecation ### GET /ai/business\_advisor\_reports * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/ai-business-advisor-reports-list) ### GET /applications * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/applications-list) ### GET /attendances * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/attendances-list) ### GET /auth/profiles * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/auth-profiles-list) ### GET /availability\_schedule\_offering\_types * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedule-offering-types-list) ### GET /availability\_schedules * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/availability-schedules-list) ### GET /bulk\_actions/{id}/results * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/bulk-actions-results-list) ### GET /business\_closures * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/business-closures-list) ### GET /checkouts * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/checkouts-list) ### GET /communication/notification\_types/membership\_penalty/messages * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/communication-notification-types-membership-penalty-messages-list) ### GET /content * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-list) ### GET /content\_collections * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-collections-list) ### GET /content\_filters * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/content-filters-list) ### GET /course\_session\_attendances * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-session-attendances-list) ### GET /course\_sessions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/course-sessions-list) ### GET /courses * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/courses-list) ### GET /crm/bulk\_status\_evaluations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-bulk-status-evaluations-list) ### GET /crm/customer\_segments * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-customer-segments-list) ### GET /crm/interactions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-interactions-list) ### GET /crm/lead\_forms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-lead-forms-list) ### GET /crm/lead\_sources * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-lead-sources-list) ### GET /crm/status\_changes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-status-changes-list) ### GET /crm/statuses * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-statuses-list) ### GET /crm/workflow\_actions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflow-actions-list) ### GET /crm/workflows * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/crm-workflows-list) ### GET /customer\_field\_values * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-field-values-list) ### GET /customer\_form\_submissions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-form-submissions-list) ### GET /customer\_forms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-forms-list) ### GET /customer\_issues * added the new optional `query` request parameter `provider_managed` * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-issues-list) ### GET /customer\_membership\_holds * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-membership-holds-list) ### GET /customer\_memberships * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-list) ### GET /customer\_memberships/{id}/plan\_change\_options * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-memberships-plan-change-options-list) ### GET /customer\_registration\_blocks * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customer-registration-blocks-list) ### GET /customers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/customers-list) ### GET /discount\_code\_applicabilities * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-applicabilities-list) ### GET /discount\_code\_groups * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-code-groups-list) ### GET /discount\_codes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/discount-codes-list) ### GET /events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/events-list) ### GET /external\_calendars/accounts * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-accounts-list) ### GET /external\_calendars/events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-events-list) ### GET /external\_calendars/staff\_calendar\_settings * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/external-calendars-staff-calendar-settings-list) ### GET /family\_invites * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/family-invites-list) ### GET /instructor\_pay\_rates * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructor-pay-rates-list) ### GET /instructors * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/instructors-list) ### GET /integrations/kisi/groups * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-kisi-groups-list) ### GET /integrations/wellhub/venue\_mappings * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-wellhub-venue-mappings-list) ### GET /integrations/zoom/users * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/integrations-zoom-users-list) ### GET /invoices * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/invoices-list) ### GET /joining\_fees * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/joining-fees-list) ### GET /membership\_categories * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-categories-list) ### GET /membership\_payment\_plans * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-payment-plans-list) ### GET /membership\_penalty\_systems * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-penalty-systems-list) ### GET /membership\_registration\_grants * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-registration-grants-list) ### GET /membership\_terms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/membership-terms-list) ### GET /memberships * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/memberships-list) ### GET /offering\_type\_categories * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/offering-type-categories-list) ### GET /offering\_types * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/offering-types-list) ### GET /payment\_methods * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-methods-list) ### GET /payment\_processors * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-processors-list) ### GET /payment\_subscriptions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/payment-subscriptions-list) ### GET /platform/referrals * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/platform-referrals-list) ### GET /policies * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policies-list) ### GET /policy\_agreements * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policy-agreements-list) ### GET /policy\_versions * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/policy-versions-list) ### GET /providers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/providers-list) ### GET /purchase\_fees * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/purchase-fees-list) ### GET /push\_notification\_tokens * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/push-notification-tokens-list) ### GET /recurring\_reservations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-list) ### GET /recurring\_reservations/{id}/unavailable\_upcoming\_events * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/recurring-reservations-unavailable-upcoming-events-list) ### GET /registration\_options * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-options-list) ### GET /registration\_timelines * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/registration-timelines-list) ### GET /slots * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/slots-list) ### GET /staff * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/staff-list) ### GET /store/inventory\_adjustments * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-inventory-adjustments-list) ### GET /store/order\_items * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-order-items-list) ### GET /store/orders * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-orders-list) ### GET /store/product\_attributes * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-attributes-list) ### GET /store/product\_variants * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-product-variants-list) ### GET /store/products * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/store-products-list) ### GET /venue\_rooms * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/venue-rooms-list) ### GET /venues * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/venues-list) ### GET /waiver\_agreements * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waiver-agreements-list) ### GET /waivers * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/waivers-list) ### GET /webhook\_destinations * added the optional property `page` to the response with the `200` status (media type: application/json) * added the optional property `page_size` to the response with the `200` status (media type: application/json) [View updated docs](/api-reference/endpoints/webhook-destinations-list) [ Older entries ](/changelog/page/2) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Getting Started | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Getting Started](/guides/getting-started) * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [Migrating from v1](/guides/migrating-from-v1) * [](/) * Getting Started On this page Getting Started =============== The TeamUp API is a REST API for interacting with your TeamUp business. It accepts and returns JSON, uses standard HTTP response codes, and can power custom websites, mobile apps, and back office automations. This guide covers the essentials: the base URL, how authentication works, and how to make your first request. * * * Base URL[​](#base-url "Direct link to Base URL") ------------------------------------------------ All API endpoints are relative to: https://goteamup.com/api/v2 For example, the [List Events](/api-reference/endpoints/events-list) endpoint documented as `GET /events` is called as `https://goteamup.com/api/v2/events`. * * * Create an Application[​](#create-an-application "Direct link to Create an Application") --------------------------------------------------------------------------------------- The first step is to create an API Application, which represents the system you're integrating with TeamUp. You can create one directly in the business dashboard — see the [help guide](https://support.goteamup.com/en/articles/9333589-the-teamup-business-api-integration) for the steps. * * * Authentication[​](#authentication "Direct link to Authentication") ------------------------------------------------------------------ The API supports three authentication methods, covered in detail on the [Authentication](/api-reference/authentication) page: * **OAuth (recommended)** — your app acts on behalf of an end user (a customer or staff member) using an access token obtained through the [OAuth flow](/guides/oauth). Sent as `Authorization: Bearer `. * **M2M tokens** — your app acts on behalf of the business itself, with no user login involved. Ideal for server-to-server and background integrations. Sent as `Authorization: Bearer `. * **Direct Authentication** — a fully branded login experience where your app handles user passwords directly. Only enabled after TeamUp reviews your use case. * * * Your First Request[​](#your-first-request "Direct link to Your First Request") ------------------------------------------------------------------------------ The quickest way to make an authenticated request is with an M2M token, which you can create from your business dashboard (see [Creating a Machine-to-Machine (M2M) Token](https://support.goteamup.com/en/articles/14819895-creating-a-machine-to-machine-m2m-token)). List the next few events at your business: curl "https://goteamup.com/api/v2/events?page_size=5" \ -H "Authorization: Bearer " A successful response returns a JSON object containing a list of event objects. Two request headers are worth knowing about as you go further: * `TeamUp-Request-Mode` — only required when using OAuth tokens where the underlying identity is linked to both a customer and a staff member; clarifies whether the request acts as a `provider` (staff) or `customer`. M2M tokens always act in provider mode. * `TeamUp-Provider-ID` — specifies which business the request acts on when your credentials can access more than one. Both are explained on the [Authentication](/api-reference/authentication) page. * * * Next Steps[​](#next-steps "Direct link to Next Steps") ------------------------------------------------------ * Browse the [API reference](/api-reference/introduction) for all available endpoints. * Set up the [OAuth flow](/guides/oauth) if your integration acts on behalf of users. * Receive event notifications with [Webhooks](/guides/webhooks). * Review [Errors](/api-reference/errors) and [Rate Limits](/api-reference/rate-limits) before going to production. Getting Help[​](#getting-help "Direct link to Getting Help") ------------------------------------------------------------ Check the [FAQ](/support/faq) for answers to common questions. For anything else, visit the [TeamUp help center](https://support.goteamup.com/). [ Next OAuth ](/guides/oauth) * [Base URL](#base-url) * [Create an Application](#create-an-application) * [Authentication](#authentication) * [Your First Request](#your-first-request) * [Next Steps](#next-steps) * [Getting Help](#getting-help) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Migrating from v1 to v2 | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Getting Started](/guides/getting-started) * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [Migrating from v1](/guides/migrating-from-v1) * [](/) * Migrating from v1 On this page Migrating from v1 to v2 ======================= TeamUp's original developer APIs — the parallel **Business API** and **Customer API**, collectively referred to as "v1" — have been replaced by a single unified **v2 API**. v1 is deprecated and closed to new integrations: all new API Applications receive v2 credentials only. This guide explains what changed, how authentication moved, and how to recognize the errors that migrating integrations most often run into. * * * What Changed Conceptually[​](#what-changed-conceptually "Direct link to What Changed Conceptually") --------------------------------------------------------------------------------------------------- In v1 you had to decide up front whether you were calling the Business API or the Customer API, even though both operated on the same underlying objects. In v2 there is **one set of endpoints and one data model**, and the **identity behind your credentials** (business staff vs. customer) determines what you can see and do. See [What happened to the Business and Customer APIs?](/support/faq#what-happened-to-the-business-and-customer-apis) in the FAQ for the full explanation of this model. v1 v2 **Endpoints** Two parallel APIs: `/api/business/v1/…` and `/api/customer/v1/…` One unified API: `https://goteamup.com/api/v2/…` **Permissions** Determined by which API you called Determined by the authenticated identity, plus the [`TeamUp-Request-Mode` header](/api-reference/authentication#request-modes) **Business selection** `Business-ID` header [`TeamUp-Provider-ID` header](/api-reference/authentication#explicit-provider) **Documentation** Deprecated — no longer available docs.goteamup.com Each v2 endpoint's reference page lists which request modes (Provider, Customer, Unregistered Customer) can perform which actions, so "which API do I call?" becomes "which identity am I authenticated as?" * * * Authentication Changes[​](#authentication-changes "Direct link to Authentication Changes") ------------------------------------------------------------------------------------------ ### The OAuth endpoints moved[​](#the-oauth-endpoints-moved "Direct link to The OAuth endpoints moved") The v1 OAuth endpoints were replaced by new URLs under `/api/v2/`: Step v1 (legacy) v2 **Authorization** `https://goteamup.com/api/auth/authorize` `https://goteamup.com/api/v2/auth/oauth/authorize` **Token exchange** `https://goteamup.com/api/auth/access_token` `https://goteamup.com/api/v2/auth/oauth/token` **Token refresh** Not available (v1 tokens were long-lived) `https://goteamup.com/api/v2/auth/refresh_access_token` The legacy URLs still exist, but they only serve legacy v1 Applications. A v2 Application's `client_id` is not recognized there — requests fail in confusing ways (see [Common Migration Errors](#common-migration-errors-and-what-they-mean)) rather than redirecting you to the right place. Follow the [OAuth Integration Guide](/guides/oauth) for the complete v2 flow, including PKCE and refresh-token rotation. Note that v2 access tokens expire after 2 hours and must be refreshed — unlike long-lived v1 tokens, so a stored-token strategy that worked on v1 will not work unchanged on v2. The v2 token endpoint supports the `authorization_code` grant type only. There is no `client_credentials` grant and no static API key — for server-to-server integrations, use an M2M token instead. ### M2M tokens work on v2 only[​](#m2m-tokens-work-on-v2-only "Direct link to M2M tokens work on v2 only") [Machine-to-machine (M2M) tokens](/api-reference/authentication#m2m-tokens) are the v2 replacement for server-to-server access. They authenticate requests to `/api/v2/` endpoints **only**: v1 endpoints reject M2M tokens with `403` permission errors, no matter how valid the token is. If your integration still calls v1 endpoints, migrate those calls to their v2 equivalents before switching to an M2M token. ### Request headers[​](#request-headers "Direct link to Request headers") v2 requests use different headers than v1 — see [Making Requests](/api-reference/authentication#making-requests) for details: * `Authorization: Bearer ` for both OAuth access tokens and M2M tokens. * `TeamUp-Request-Mode: provider` or `customer` to disambiguate when one user holds both roles. * `TeamUp-Provider-ID: ` replaces the v1 `Business-ID` header for selecting a business. * * * Common Migration Errors and What They Mean[​](#common-migration-errors-and-what-they-mean "Direct link to Common Migration Errors and What They Mean") ------------------------------------------------------------------------------------------------------------------------------------------------------ Symptom What it means Fix `404 Not Found` from `/api/auth/…` variants or guessed URLs like `/oauth/authorize` You are using a stale link or a guessed OAuth URL. Use the v2 URLs from the [OAuth guide](/guides/oauth). A CloudFront-branded `403`/`400` error page (HTML, not the API's JSON error format) The URL you requested doesn't exist on v2 — a retired v1 path, or an invented host (for example, `api.goteamup.com` has never existed). The base URL is `https://goteamup.com/api/v2/`. Check every URL against the endpoint reference. The authorization page renders but shows **"This field is required"** and no business to select You sent a v2 Application's `client_id` to the legacy `/api/auth/authorize` endpoint, which doesn't recognize it. Use `https://goteamup.com/api/v2/auth/oauth/authorize`. Token endpoint returns field errors when sent `grant_type=client_credentials` v2 supports the `authorization_code` grant only. Use an [M2M token](/api-reference/authentication#m2m-tokens) for server-to-server access. `403` on every v1 endpoint despite a freshly issued M2M token M2M tokens are not valid on v1. Call the v2 equivalents of those endpoints. Errors about a missing or invalid `Business-ID` header You are calling a v1 endpoint, or sending v1 headers to v2. On v2, use `TeamUp-Provider-ID` (and `TeamUp-Request-Mode`) instead. As a general rule: if an error response is not JSON in the [documented error format](/api-reference/errors), you are probably not talking to the v2 API at all — recheck the URL before debugging anything else. * * * Is Everything from v1 in v2?[​](#is-everything-from-v1-in-v2 "Direct link to Is Everything from v1 in v2?") ----------------------------------------------------------------------------------------------------------- v2 covers nearly all customer-facing use cases and is the only API that receives new features. A small number of provider-side v1 capabilities arrived in v2 later or initially behaved differently, and remaining differences are treated as gaps to close rather than intentional omissions. If your v1 integration relies on something you can't find in v2: 1. Check the endpoint reference — every v2 endpoint documents which request modes can perform which actions, and the capability may exist under a different resource name. 2. If it's genuinely missing, report it (see below) so it can be prioritized. * * * Where to Get Help[​](#where-to-get-help "Direct link to Where to Get Help") --------------------------------------------------------------------------- * For how to create and configure an API Application, see the [help guide](https://support.goteamup.com/en/articles/9327305-the-teamup-api). * For questions or to report a v1 capability missing from v2, contact TeamUp support through the [help center](https://support.goteamup.com) or your usual support channel. [ Previous Webhooks ](/guides/webhooks) * [What Changed Conceptually](#what-changed-conceptually) * [Authentication Changes](#authentication-changes) * [The OAuth endpoints moved](#the-oauth-endpoints-moved) * [M2M tokens work on v2 only](#m2m-tokens-work-on-v2-only) * [Request headers](#request-headers) * [Common Migration Errors and What They Mean](#common-migration-errors-and-what-they-mean) * [Is Everything from v1 in v2?](#is-everything-from-v1-in-v2) * [Where to Get Help](#where-to-get-help) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. OAuth Integration Guide | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Getting Started](/guides/getting-started) * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [Migrating from v1](/guides/migrating-from-v1) * [](/) * OAuth On this page OAuth Integration Guide ======================= This guide explains how to connect your application to TeamUp using OAuth 2.0. Whether you're a gym owner setting up an integration or a developer implementing it, this document walks you each step of prompting a user to authorize your Application and obtaining an access token that can make API requests on their behalf. * * * 1\. Authorization[​](#1-authorization "Direct link to 1. Authorization") ------------------------------------------------------------------------ To begin the OAuth flow, make a **GET** request to: https://goteamup.com/api/v2/auth/oauth/authorize ### Query Parameters[​](#query-parameters "Direct link to Query Parameters") Parameter Description **client\_id** The unique ID of your application. **redirect\_uri** The URL users should be redirected to after they complete authorization. Must match one of the redirect URIs configured for your app. **scope** Always include `read_write`. If your Application can access multiple businesses, specify a `provider:` scope. Scopes are space-delimited, e.g.:`read_write provider:6` **response\_type** Set to `code`. **state** (optional) A value you can pass to maintain state between the request and callback (e.g., for CSRF protection or to persist app data). **code\_challenge** The PKCE code challenge derived from your `code_verifier`. Required for mobile or public clients that can’t securely store a client secret. **login\_hint** (optional) Prefills the user’s email in the login form. ### Notes[​](#notes "Direct link to Notes") * If your app is a **first-party application**, users won’t be asked to confirm access permissions. * Users who aren’t logged in will be prompted to do so before being redirected to your `redirect_uri`. * * * 2\. Token Exchange[​](#2-token-exchange "Direct link to 2. Token Exchange") --------------------------------------------------------------------------- After the user grants permission, they’ll be redirected to your `redirect_uri` with two query parameters: `code` and optionally `state`. Exchange this authorization code for tokens by sending a **POST** request to: https://goteamup.com/api/v2/auth/oauth/token ### Request Details[​](#request-details "Direct link to Request Details") * **Content Type:** `application/x-www-form-urlencoded` Parameter Description **client\_id** Your application’s client ID. **code** The authorization code returned in the redirect. **redirect\_uri** Must match the one used in the original request. **grant\_type** Set to `authorization_code`. **code\_verifier** The PKCE code verifier used to create the `code_challenge`. **client\_secret** Optional — include this only if your app can securely store secrets (e.g., a backend service). ### Successful Response[​](#successful-response "Direct link to Successful Response") You’ll receive a JSON payload containing access and refresh tokens: { "access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", "refresh_token": "asdfasdfasdfas32423423424jadsfkjadfs"} ### Example JWT Payload[​](#example-jwt-payload "Direct link to Example JWT Payload") { "sub": "1234567890", "name": "John Doe", "email": "johndoe@hotmail.com", "app_id": 123, "scope": "read_write provider:6", "iat": 1516239022, "exp": 1516249022, "auth_time": 1516239022} * `iat`: Token issue time * `exp`: Expiration time (2 hours after issue) * `auth_time`: When the user originally authenticated * * * 3\. Refreshing Tokens[​](#3-refreshing-tokens "Direct link to 3. Refreshing Tokens") ------------------------------------------------------------------------------------ Access tokens expire after **2 hours**. To obtain a new one without re-authenticating the user, make a **POST** request to: https://goteamup.com/api/v2/auth/refresh_access_token ### Request Details[​](#request-details-1 "Direct link to Request Details") * **Content Type:** `application/json` Parameter Description **refresh\_token** The refresh token obtained from the token exchange step. **scope** (optional) Accepts a provider scope (e.g. `provider:`) if you'd like to access a different provider. Omit to continue accessing the original provider. ### Response Schema[​](#response-schema "Direct link to Response Schema") A successful refresh request returns a new set of tokens in JSON format: { "access_token": "string", "expires_in": 7200, "refresh_token": "string"} Field Type Description **access\_token** string The new access token used for API requests. **expires\_in** integer Time (in seconds) until the new access token expires. **refresh\_token** string The new refresh token to use for future refresh requests. ### Important Notes[​](#important-notes "Direct link to Important Notes") * Once a refresh request succeeds, **the refresh token that made the request is immediately invalidated**. To keep your integration working, always store the **new refresh token** returned in the response. * Access tokens typically expire after **2 hours**, so plan to use the refresh token regularly to maintain a seamless connection without requiring the user to reauthorize. * * * 4\. PKCE (Proof Key for Code Exchange)[​](#4-pkce-proof-key-for-code-exchange "Direct link to 4. PKCE (Proof Key for Code Exchange)") ------------------------------------------------------------------------------------------------------------------------------------- ### What is PKCE?[​](#what-is-pkce "Direct link to What is PKCE?") **PKCE (Proof Key for Code Exchange)** is an extension to OAuth 2.0 designed to make authorization more secure for mobile and single-page applications (SPAs) that **cannot safely store a client secret**. In a traditional OAuth flow, an attacker who intercepts the authorization code could exchange it for tokens if they know the client’s credentials. PKCE prevents this by introducing a **proof key** mechanism that ties the authorization request and token exchange together. ### How It Works[​](#how-it-works "Direct link to How It Works") 1. **Client generates a code verifier** — a random string that acts like a secret known only to the client. 2. **Client creates a code challenge** — a hashed and Base64 URL–encoded version of the verifier. 3. The **authorization request** includes the `code_challenge` and specifies the `S256` hashing method. 4. When the authorization server returns the authorization code, it remembers the challenge. 5. The **token request** must include the original `code_verifier`. 6. The server hashes the verifier again and compares it to the stored challenge. If they match, the token exchange succeeds. This means that even if a malicious actor intercepts the authorization code, they **can’t complete the flow** without the original verifier. ### Why PKCE is Important[​](#why-pkce-is-important "Direct link to Why PKCE is Important") * **Security for public clients:** Mobile and web apps can’t keep a `client_secret` hidden. PKCE ensures they remain secure without one. * **Mitigates interception attacks:** Prevents attackers from using stolen authorization codes to obtain tokens. * **Now standard best practice:** PKCE is recommended for all OAuth clients, including those that do have client secrets, because it adds an extra layer of protection. ### Example Implementation in Python[​](#example-implementation-in-python "Direct link to Example Implementation in Python") import base64import hashlibimport secretsdef generate_pkce_code_challenge(verifier: str) -> str: challenge = hashlib.sha256(verifier.encode("utf-8")).digest() challenge = base64.urlsafe_b64encode(challenge).decode("utf-8") return challenge.replace("=", "")def generate_pkce_code_verifier() -> str: return secrets.token_urlsafe(96)[:70] Equivalent functionality exists in JavaScript and other languages — many OAuth libraries support PKCE natively. * * * Summary[​](#summary "Direct link to Summary") --------------------------------------------- 1. **Authorize:** Direct users to the `/authorize` URL. 2. **Exchange:** Swap the returned `code` for tokens. 3. **Refresh:** Use the refresh token to keep access active. 4. **PKCE:** Required security for public or mobile clients. [ Previous Getting Started ](/guides/getting-started)[ Next Webhooks ](/guides/webhooks) * [1\. Authorization](#1-authorization) * [Query Parameters](#query-parameters) * [Notes](#notes) * [2\. Token Exchange](#2-token-exchange) * [Request Details](#request-details) * [Successful Response](#successful-response) * [Example JWT Payload](#example-jwt-payload) * [3\. Refreshing Tokens](#3-refreshing-tokens) * [Request Details](#request-details-1) * [Response Schema](#response-schema) * [Important Notes](#important-notes) * [4\. PKCE (Proof Key for Code Exchange)](#4-pkce-proof-key-for-code-exchange) * [What is PKCE?](#what-is-pkce) * [How It Works](#how-it-works) * [Why PKCE is Important](#why-pkce-is-important) * [Example Implementation in Python](#example-implementation-in-python) * [Summary](#summary) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Webhooks | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [Getting Started](/guides/getting-started) * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [Migrating from v1](/guides/migrating-from-v1) * [](/) * Webhooks On this page Webhooks ======== Overview[​](#overview "Direct link to Overview") ------------------------------------------------ Feed Item objects are created when significant events occur in your account, such as class registrations, customer signups, and payments. These Feed Items can be delivered to your integration through Webhooks. Webhooks notify integrations about new Feed Item objects by sending an HTTP `POST` request to a Webhook Destination (a configured URL). The request payload includes one or more Feed Item objects. This document outlines the general concepts of Feed Items and Webhooks. Webhook Delivery[​](#webhook-delivery "Direct link to Webhook Delivery") ------------------------------------------------------------------------ Webhooks are delivered as HTTP `POST` requests to the URL defined in the Webhook Destination. Your server must respond with a `2xx` status code (e.g., `200 OK` or `204 No Content`) within **10 seconds**. You may also respond with a `410 Gone` status to indicate that no further Webhooks should be sent to this destination. We attempt delivery **up to 5 times** at increasing intervals (see [Webhook Retries](#webhook-retries)). ### Key Notes[​](#key-notes "Direct link to Key Notes") * Webhooks may be delivered out of order. * Deliveries will not follow redirects. Responses such as `301` or `302` will be treated as failed delivery attempts. ### Headers[​](#headers "Direct link to Headers") Each webhook `POST` request includes a `TEAMUP-WEBHOOK-ID` header containing a unique identifier for that webhook. This ID remains the same across delivery attempts, making it useful for deduplication. ### Webhook Retries[​](#webhook-retries "Direct link to Webhook Retries") If your server does not respond with a `2xx` or `410` status within 10 seconds, we retry delivery four more times at the following intervals: 1. 1 minute 2. 3 minutes 3. 10 minutes 4. 30 minutes After the fifth attempt, no further delivery attempts are made. ### Disabling a Webhook Destination[​](#disabling-a-webhook-destination "Direct link to Disabling a Webhook Destination") Responding with `410 Gone` disables the Webhook Destination permanently. Once received, no further webhooks will be delivered to that destination. ### Payload[​](#payload "Direct link to Payload") The payload of a Webhook is a JSON object containing a list of [Feed Item objects](#the-feed-item-object). Currently, webhooks contain a single feed item, but in the future, multiple items may be included. **Sample payload:** { "feed_items": [ { "object": "feed_item", "id": 13553027, "timestamp": "2019-04-27T21:52.45", "type": "event_registration.created", "source": "standalone", "resources": { "customer": 818974, "event": 14947247, "business": 285151 } } ]} Webhook Destinations[​](#webhook-destinations "Direct link to Webhook Destinations") ------------------------------------------------------------------------------------ Webhook Destinations define where webhooks are sent. Destinations can be configured to receive all or only specific Feed Item types that occur within a provider's account. ### The Webhook Destination Object[​](#the-webhook-destination-object "Direct link to The Webhook Destination Object") Attribute Description `object` Always `"webhook_destination"`. `id` Unique identifier for the object. `url` The URL to which webhooks are delivered. `feed_item_types` A list of Feed Item types to be notified about. The value `*` represents all types. `application` The Application that the destination is associated with. **Example:** { "object": "webhook_destination", "id": 53583, "url": "https://example.com/receiver", "feed_item_types": ["*"], "application": 533} Setting Up a Webhook Destination[​](#setting-up-a-webhook-destination "Direct link to Setting Up a Webhook Destination") ------------------------------------------------------------------------------------------------------------------------ Webhook Destinations belong to an API Application, so you need an Application first. You can create and manage destinations in two ways: from the TeamUp business dashboard, or via the API. In both cases you need full admin access to the business. ### From the Business Dashboard[​](#from-the-business-dashboard "Direct link to From the Business Dashboard") 1. In your TeamUp business dashboard, go to **Settings → Integrations → API Integration**. 2. Open the Application the destination should belong to (or create one). 3. In the **Webhook Destinations** section, click **Add Webhook Destination**. 4. Enter the **URL** webhooks should be delivered to, and choose whether to receive **all event types** or only specific ones. 5. Save the destination. It becomes active immediately. ### Via the API[​](#via-the-api "Direct link to Via the API") Destinations can also be managed programmatically through the [Webhook Destinations endpoints](/api-reference/endpoints/webhook-destinations-list). To create one, send an authenticated `POST` request to `/webhook_destinations`: { "url": "https://example.com/receiver", "feed_item_types": ["*"], "application": 533} Use `["*"]` to receive all Feed Item types, or list specific types (e.g. `["customer.created", "event_registration.created"]`). See [Authentication](/api-reference/authentication) for how to authenticate API requests. ### Before You Go Live[​](#before-you-go-live "Direct link to Before You Go Live") * The destination URL must be publicly reachable and able to accept `POST` requests with a JSON body. If your framework applies CSRF protection to incoming requests, exempt the webhook route. * The URL must respond directly with a `2xx` — redirects are treated as failed deliveries. * Only new activity is delivered. Creating a destination does not send historical Feed Items. Verifying Deliveries[​](#verifying-deliveries "Direct link to Verifying Deliveries") ------------------------------------------------------------------------------------ **TeamUp webhooks are not signed.** Delivery requests do not include a signature header, HMAC, or shared secret, so there is no built-in way to cryptographically verify that a request genuinely came from TeamUp. (Some third-party guides mention a `teamup-signature` header — no such header exists.) Instead, we recommend the following pattern: 1. **Treat the payload as a notification, not as a source of truth.** Use the webhook only as a signal that something changed. 2. **Re-fetch the referenced resources through the API.** Each Feed Item's `resources` object contains the IDs of the related resources (customer, event, etc.). Fetch the current state of those resources with an authenticated API request before acting on the change. Since API requests are authenticated, a forged webhook cannot feed you false data — at worst it triggers an unnecessary lookup. 3. **Use an unguessable receiver URL.** Include a hard-to-guess path segment or query-string token in the destination URL, and reject requests that do not match it. 4. **Deduplicate using the `TEAMUP-WEBHOOK-ID` header** so a replayed or retried request is not processed twice. Troubleshooting Missed Deliveries[​](#troubleshooting-missed-deliveries "Direct link to Troubleshooting Missed Deliveries") --------------------------------------------------------------------------------------------------------------------------- If your integration is not receiving webhooks (or is missing some), work through this checklist: 1. **Check the destination's status.** A destination that has responded with `410 Gone` — even once — is disabled and receives no further deliveries. Check the status in the dashboard (**Settings → Integrations → API Integration**, under the Application's **Webhook Destinations** section) or by [retrieving the destination](/api-reference/endpoints/webhook-destinations-retrieve) via the API. A disabled destination can be re-enabled by setting its status back to `active`, but webhooks that occurred while it was disabled are not delivered retroactively. 2. **Check the destination's `feed_item_types`.** The destination only receives the listed types (or all types when set to `*`). A missing type means those Feed Items are never sent to it. 3. **Respond fast.** Your server must return a `2xx` within **10 seconds** or the attempt counts as failed. Do any real processing asynchronously: acknowledge first, process after. 4. **Return a `2xx` directly.** Redirects (`301`, `302`, etc.) are not followed and count as failed attempts — configure the destination with the final URL (including any `http` → `https` or trailing-slash redirects your server performs). Any non-`2xx`, non-`410` response also counts as a failure. 5. **Never return `410` unintentionally.** `410 Gone` permanently disables the destination. Make sure error paths in your receiver (or your framework's default responses for unknown routes) cannot return it. 6. **Accept the request format.** Deliveries are `POST` requests with a JSON body. Endpoints that reject `POST`, require CSRF tokens, or block unknown user agents will fail every attempt. 7. **Know the retry window.** Failed deliveries are retried up to 4 more times (5 attempts total) at 1, 3, 10, and 30 minute intervals — roughly 44 minutes end to end. After the fifth failed attempt the webhook is marked failed and **there is no redelivery mechanism**, manual or automatic. 8. **Recovering after an outage.** Because missed webhooks cannot be replayed, recover by re-fetching the current state of the resources you care about through the API once your receiver is healthy again. 9. **Handle ordering and duplicates.** Webhooks may arrive out of order, and retries can occasionally cause duplicates. Use the `TEAMUP-WEBHOOK-ID` header (stable across retry attempts) to deduplicate, and rely on API re-fetches rather than payload order to determine current state. * * * Feed Items[​](#feed-items "Direct link to Feed Items") ------------------------------------------------------ ### The Feed Item Object[​](#the-feed-item-object "Direct link to The Feed Item Object") Attribute Description `object` Always `"feed_item"`. `id` Unique identifier for the object. `timestamp` ISO 8601 timestamp when the activity occurred. `type` The type of Feed Item (see [Feed Item Types](#feed-item-types)). `source` Identifies a more specific trigger for event registration changes, such as enrolling from a waitlist or being removed due to a class cancellation. `resources` Object containing references to related resources. **Example:** { "object": "feed_item", "id": 13553027, "timestamp": "2019-04-27T21:52.45", "type": "event_registration.created", "source": "standalone", "resources": { "customer": 818974, "event": 14947247, "business": 285151 }} Feed Item Types[​](#feed-item-types "Direct link to Feed Item Types") --------------------------------------------------------------------- This section lists all Feed Item types. ### `course_session.ended`[​](#course_sessionended "Direct link to course_sessionended") Created when a course session ends. Resources: * course\_session * business ### `customer.created`[​](#customercreated "Direct link to customercreated") Created when a new customer is created. Resources: * customer * business ### `customer.invited`[​](#customerinvited "Direct link to customerinvited") Created when a customer is invited to join a business (in addition to `customer.created`). Resources: * customer * business ### `customer.signed_up`[​](#customersigned_up "Direct link to customersigned_up") Created when a customer completes the signup process. Resources: * customer * business ### `customer.updated`[​](#customerupdated "Direct link to customerupdated") Created when a customer’s details (name, email, field values, etc.) are updated. Resources: * customer * business ### `customer.deleted`[​](#customerdeleted "Direct link to customerdeleted") Created when a customer is deleted. Resources: * customer * business ### `customer_membership.created`[​](#customer_membershipcreated "Direct link to customer_membershipcreated") Created when a customer membership is added (via purchase or manually from the business dashboard). Resources: * customer * business * customer\_membership ### `customer_membership.started`[​](#customer_membershipstarted "Direct link to customer_membershipstarted") Created when a membership becomes valid (for future start dates, this occurs on the start date). Resources * customer * business * customer\_membership ### `customer_membership.ended`[​](#customer_membershipended "Direct link to customer_membershipended") Created when a customer membership ends. Applies only to recurring and prepaid plans. Resources: * customer * business * customer\_membership ### `customer_membership.cancelled`[​](#customer_membershipcancelled "Direct link to customer_membershipcancelled") Created when a customer cancels a membership. Applies only to recurring plans.. This occurs when a user clicks _Cancel_ in TeamUp. Cancellation sets an expiration date, which will later trigger a `customer_membership.ended` Feed Item. Resources: * customer * business * customer\_membership ### `customer_membership.completed`[​](#customer_membershipcompleted "Direct link to customer_membershipcompleted") Created when a pack membership has reached its usage limit. Resources: * customer * customer\_membership * business ### `customer_referral.created`[​](#customer_referralcreated "Direct link to customer_referralcreated") Created when a customer signs up using a referral. Resources: * customer * business * referrer ### `customer_referral.confirmed`[​](#customer_referralconfirmed "Direct link to customer_referralconfirmed") Created when a referred customer completes the necessary steps to confirm the referral. Resources: * customer * business * referrer ### `event.ended`[​](#eventended "Direct link to eventended") Created when a class/appointment/rental ends. Resources: * event * business ### `event_registration.created`[​](#event_registrationcreated "Direct link to event_registrationcreated") Created when a customer registers for an event. Includes various sources indicating how the registration occurred. Sources: * `standalone`: Not associated with any of the below. * Resources: event, customer, business * `waitlist`: Automatically from the waitlist. * Resources: event, customer, business * `reservation`: As part of a recurring reservation. * Resources: event, customer, reservation, business * `block_booking`: As part of a block booking. * Resources: event, customer, business ### `event_registration.removed`[​](#event_registrationremoved "Direct link to event_registrationremoved") Created when a customer is removed from an event. Sources: * `standalone`: Not associated with any of the below. * Resources: event, customer, business * `event_cancelled`: Automatically from the waitlist. * Resources: event, customer, business ### `event_registration.late_cancelled`[​](#event_registrationlate_cancelled "Direct link to event_registrationlate_cancelled") Created when a customer late cancels from an event. The customer’s membership usage is not refunded. Resources: * event * customer * business ### `event_registration.attended`[​](#event_registrationattended "Direct link to event_registrationattended") Created when a customer is marked as attended. Resources: * event * customer * business ### `event_registration.noshowed`[​](#event_registrationnoshowed "Direct link to event_registrationnoshowed") Created when a customer is marked as a no-show. Resources * event * customer * business ### `event_registration.waitlist.added`[​](#event_registrationwaitlistadded "Direct link to event_registrationwaitlistadded") Created when a customer is added to the waitlist. Resources: * event * customer * business ### `event_registration.waitlist.removed`[​](#event_registrationwaitlistremoved "Direct link to event_registrationwaitlistremoved") Created when a customer is removed from the waitlist. Resources: * event * customer * business ### `event_registration.waitlist.spot_reserved`[​](#event_registrationwaitlistspot_reserved "Direct link to event_registrationwaitlistspot_reserved") Created when a customer’s waitlist spot is reserved. Resources: * event * customer * business ### `event_registration.waitlist.spot_expired`[​](#event_registrationwaitlistspot_expired "Direct link to event_registrationwaitlistspot_expired") Created when a customer’s waitlist spot expires. Resources: * event * customer * business ### `event_registration.waitlist.spot_declined`[​](#event_registrationwaitlistspot_declined "Direct link to event_registrationwaitlistspot_declined") Created when a customer declines a waitlist spot. Source not used. Resources: event, customer, business. ### `lead_form.submitted`[​](#lead_formsubmitted "Direct link to lead_formsubmitted") Created when a lead form is submitted. Resources: * customer * business * lead\_form [ Previous OAuth ](/guides/oauth)[ Next Migrating from v1 ](/guides/migrating-from-v1) * [Overview](#overview) * [Webhook Delivery](#webhook-delivery) * [Key Notes](#key-notes) * [Headers](#headers) * [Webhook Retries](#webhook-retries) * [Disabling a Webhook Destination](#disabling-a-webhook-destination) * [Payload](#payload) * [Webhook Destinations](#webhook-destinations) * [The Webhook Destination Object](#the-webhook-destination-object) * [Setting Up a Webhook Destination](#setting-up-a-webhook-destination) * [From the Business Dashboard](#from-the-business-dashboard) * [Via the API](#via-the-api) * [Before You Go Live](#before-you-go-live) * [Verifying Deliveries](#verifying-deliveries) * [Troubleshooting Missed Deliveries](#troubleshooting-missed-deliveries) * [Feed Items](#feed-items) * [The Feed Item Object](#the-feed-item-object) * [Feed Item Types](#feed-item-types) * [`course_session.ended`](#course_sessionended) * [`customer.created`](#customercreated) * [`customer.invited`](#customerinvited) * [`customer.signed_up`](#customersigned_up) * [`customer.updated`](#customerupdated) * [`customer.deleted`](#customerdeleted) * [`customer_membership.created`](#customer_membershipcreated) * [`customer_membership.started`](#customer_membershipstarted) * [`customer_membership.ended`](#customer_membershipended) * [`customer_membership.cancelled`](#customer_membershipcancelled) * [`customer_membership.completed`](#customer_membershipcompleted) * [`customer_referral.created`](#customer_referralcreated) * [`customer_referral.confirmed`](#customer_referralconfirmed) * [`event.ended`](#eventended) * [`event_registration.created`](#event_registrationcreated) * [`event_registration.removed`](#event_registrationremoved) * [`event_registration.late_cancelled`](#event_registrationlate_cancelled) * [`event_registration.attended`](#event_registrationattended) * [`event_registration.noshowed`](#event_registrationnoshowed) * [`event_registration.waitlist.added`](#event_registrationwaitlistadded) * [`event_registration.waitlist.removed`](#event_registrationwaitlistremoved) * [`event_registration.waitlist.spot_reserved`](#event_registrationwaitlistspot_reserved) * [`event_registration.waitlist.spot_expired`](#event_registrationwaitlistspot_expired) * [`event_registration.waitlist.spot_declined`](#event_registrationwaitlistspot_declined) * [`lead_form.submitted`](#lead_formsubmitted) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. TeamUp Developers Search the documentation | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search Search the documentation ======================== Powered by[.cls-1,.cls-2{fill:#003dff}.cls-2{fill-rule:evenodd}](https://www.algolia.com/) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. TeamUp API – FAQ | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search * [FAQ](/support/faq) * [](/) * FAQ On this page TeamUp API – FAQ ================ Table of Contents[​](#table-of-contents "Direct link to Table of Contents") --------------------------------------------------------------------------- * [What is the API base URL?](#what-is-the-api-base-url) * [How do I find my provider ID?](#how-do-i-find-my-provider-id) * [Is there a sandbox or test environment?](#is-there-a-sandbox-or-test-environment) * [Does API access cost anything?](#does-api-access-cost-anything) * [Who can create an API Application?](#who-can-create-an-api-application) * [What happened to the Business and Customer APIs?](#what-happened-to-the-business-and-customer-apis) * [How do I get API access?](#how-do-i-get-api-access) * * * ### **What is the API base URL?**[​](#what-is-the-api-base-url "Direct link to what-is-the-api-base-url") All API endpoints are relative to: https://goteamup.com/api/v2 For example, the endpoint documented as `GET /events` is called as `https://goteamup.com/api/v2/events`. There is no `api.goteamup.com` subdomain — URLs like `https://api.goteamup.com/...` have never existed. If a tutorial or AI assistant suggests them, use `https://goteamup.com/api/v2/...` instead. ### **How do I find my provider ID?**[​](#how-do-i-find-my-provider-id "Direct link to how-do-i-find-my-provider-id") Your provider ID (sometimes called your business ID) is the number at the start of your Customer Site URL. For example, if your customer site is at `https://goteamup.com/p/12345-your-business-name`, your provider ID is `12345`. You can also discover it programmatically: call the [Authenticated Application](/api-reference/endpoints/auth-application-retrieve) endpoint (`GET /auth/application`) and the response's `scoped_providers` field lists the provider IDs your credentials can access. The provider ID is the value to use in the `TeamUp-Provider-ID` request header — see [Authentication](/api-reference/authentication). ### **Is there a sandbox or test environment?**[​](#is-there-a-sandbox-or-test-environment "Direct link to is-there-a-sandbox-or-test-environment") There is no separate sandbox environment. To test your integration, sign up for a free trial account at [goteamup.com](https://goteamup.com/) and use it as a test business — trial accounts can create API Applications and use the API like any other account. ### **Does API access cost anything?**[​](#does-api-access-cost-anything "Direct link to does-api-access-cost-anything") No. There is no extra fee for API access, and the v2 API is the same API that TeamUp's own web and mobile apps use — external developers get the same functionality. You don't need a paid plan to start building: free trial accounts can create API Applications too. ### **Who can create an API Application?**[​](#who-can-create-an-api-application "Direct link to who-can-create-an-api-application") API Applications are created and managed by staff members with the **super admin** permission at the business (typically the business owner). Applications are created directly in the business dashboard — see [How do I get API access?](#how-do-i-get-api-access) below. No paid subscription is required; free trial accounts can create Applications. ### **What happened to the Business and Customer APIs?**[​](#what-happened-to-the-business-and-customer-apis "Direct link to what-happened-to-the-business-and-customer-apis") We’ve moved from two parallel APIs (Customer vs Business) to a single unified API, where the permissions and behavior are determined by who you are authenticated as (business staff vs customer), rather than which URL you call. #### One model, different capabilities[​](#one-model-different-capabilities "Direct link to One model, different capabilities") Previously, you had to decide "am I using the Customer API or the Business API? even though they operated on the same underlying objects (classes, attendances, memberships, etc.). With v2: There is one set of endpoints and one data model. The identity behind the credentials (staff vs customer) determines: * Which fields you can see. * Which actions you can perform. * Which business rules are enforced (e.g., registration windows for customers, but not staff). So instead of "pick the right API," the rule becomes "authenticate as the right user" which matches how permissions work in our main web app and mobile app products. ### **How do I get API access?**[​](#how-do-i-get-api-access "Direct link to how-do-i-get-api-access") You can create an API Application directly in our product. For details see: [https://support.goteamup.com/en/articles/9327305-the-teamup-api](https://support.goteamup.com/en/articles/9327305-the-teamup-api). * [Table of Contents](#table-of-contents) * [**What is the API base URL?**](#what-is-the-api-base-url) * [**How do I find my provider ID?**](#how-do-i-find-my-provider-id) * [**Is there a sandbox or test environment?**](#is-there-a-sandbox-or-test-environment) * [**Does API access cost anything?**](#does-api-access-cost-anything) * [**Who can create an API Application?**](#who-can-create-an-api-application) * [**What happened to the Business and Customer APIs?**](#what-happened-to-the-business-and-customer-apis) * [**How do I get API access?**](#how-do-i-get-api-access) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. TeamUp API Terms of Use | TeamUp Developers [Skip to main content](#__docusaurus_skipToContent_fallback) [ ![TeamUp](/img/logo.png)![TeamUp](/img/logo.png) **TeamUp Developers**](/)[API Reference](/api-reference/introduction)[Guides](/guides/getting-started)[Support](/support/faq)[Changelog](/changelog) Search On this page TeamUp API Terms of Use ======================= **Last Updated: July 11, 2025** Please read these terms of use carefully before using any application programming interfaces offered by TeamUp, Inc. (“TeamUp”). By accessing or using any application programming interfaces offered by TeamUp (collectively, the "API" or "TeamUp API"), you and, if applicable, the company you represent (collectively, "you" or "your") agree to be bound by these API Terms of Use (the "Agreement"). This Agreement is a legal contract between you and TeamUp. If you do not have the authority to enter this Agreement, or if you do not agree with the Agreement, you may not access or use the API. TeamUp may revise and update this Agreement at any time in its sole discretion. All changes are effective immediately upon posting and apply to all access to and use of the API thereafter. Continued use of the API following the posting of a revised Agreement constitutes your acceptance of those changes. You are expected to check this page periodically to stay informed. * * * 1\. Definitions[​](#1-definitions "Direct link to 1. Definitions") ------------------------------------------------------------------ **"Application"** means any application that you develop using the TeamUp API to use, search, display, upload, and/or modify the TeamUp Content. **"TeamUp Content"** means all content, data, and other information made available on the TeamUp websites or software and any consumer-facing downloadable mobile app made available by TeamUp. **"TeamUp Data"** means any data or information TeamUp obtains or accesses from its customers and/or end users, including any Personal Data. **"Personal Data"** means any personal data or personal information (or analogous term) as defined under applicable privacy and data protection laws. **"Service"** means the TeamUp services, including, but not limited to, online business management software services designed specifically for businesses in the fitness and wellness industry, made available through TeamUp platforms. **"Subscriber"** is defined in the [TeamUp Privacy Policy](https://goteamup.com/company/privacy/). * * * 2\. License[​](#2-license "Direct link to 2. License") ------------------------------------------------------ Subject to the terms and conditions of this Agreement, TeamUp grants you a revocable, limited, non-exclusive, non-sublicensable, non-transferable license to access and use the API solely for the purpose of developing, testing, displaying, and distributing your Application. TeamUp may revoke this license at any time for any reason. * * * 3\. Modifications[​](#3-modifications "Direct link to 3. Modifications") ------------------------------------------------------------------------ TeamUp reserves the right to modify the Service or the API (or any part thereof) at any time in its sole discretion. Upon release of any new versions of the API, TeamUp reserves the right to require you to obtain and use the most recent version of the API. * * * 4\. Support[​](#4-support "Direct link to 4. Support") ------------------------------------------------------ TeamUp may, but is not obligated to, provide basic technical support via web forums, FAQs, or other documentation. * * * 5\. Application Guidelines[​](#5-application-guidelines "Direct link to 5. Application Guidelines") --------------------------------------------------------------------------------------------------- You may develop, display or distribute Applications that interact with the API. You are solely responsible for any Application that you develop. * * * 6\. API Call Limitations[​](#6-api-call-limitations "Direct link to 6. API Call Limitations") --------------------------------------------------------------------------------------------- TeamUp may limit the number of API calls during any period. If you exceed limits, TeamUp may charge fees or terminate access. * * * 7\. Ownership[​](#7-ownership "Direct link to 7. Ownership") ------------------------------------------------------------ TeamUp retains sole and exclusive ownership of the Service, the TeamUp Content, including TeamUp’s trademarks and logos, and the API, including all related intellectual property rights. * * * 8\. API Restrictions[​](#8-api-restrictions "Direct link to 8. API Restrictions") --------------------------------------------------------------------------------- You agree not to misuse the API. This includes but is not limited to: * Disparaging TeamUp; * Circumventing security measures; * Sharing access with competitors; * Using data for unauthorized purposes; * Exceeding reasonable API call limits; * Creating or publishing metrics about the API. * * * 9\. Service Providers[​](#9-service-providers "Direct link to 9. Service Providers") ------------------------------------------------------------------------------------ You may work with third parties to facilitate your use of the API but remain fully responsible for their compliance with this Agreement. * * * 10\. Right to Terminate[​](#10-right-to-terminate "Direct link to 10. Right to Terminate") ------------------------------------------------------------------------------------------ TeamUp may terminate or suspend your access to the API at any time. You may also terminate by providing 90 days’ notice and ceasing all use. * * * 11\. Third Party Services[​](#11-third-party-services "Direct link to 11. Third Party Services") ------------------------------------------------------------------------------------------------ Use of third party services is at your own risk. TeamUp is not liable for these services. * * * 12\. Disclaimer of Any Warranty[​](#12-disclaimer-of-any-warranty "Direct link to 12. Disclaimer of Any Warranty") ------------------------------------------------------------------------------------------------------------------ The API is provided "as is." TeamUp disclaims all warranties, including merchantability, fitness, and non-infringement. * * * 13\. Limitation of Liability[​](#13-limitation-of-liability "Direct link to 13. Limitation of Liability") --------------------------------------------------------------------------------------------------------- TeamUp is not liable for indirect, incidental, or consequential damages arising from use of the API. * * * 14\. Release and Waiver[​](#14-release-and-waiver "Direct link to 14. Release and Waiver") ------------------------------------------------------------------------------------------ You release TeamUp from all claims and damages related to API use. California residents waive rights under Civil Code Section 1542. * * * 15\. Indemnification[​](#15-indemnification "Direct link to 15. Indemnification") --------------------------------------------------------------------------------- You agree to indemnify and hold harmless TeamUp from any claims arising from your use of the API. * * * 16\. Confidential Information[​](#16-confidential-information "Direct link to 16. Confidential Information") ------------------------------------------------------------------------------------------------------------ You must not use or disclose any Confidential Information provided by TeamUp, including Subscriber data, outside the scope of this Agreement. * * * 17\. Publicity[​](#17-publicity "Direct link to 17. Publicity") --------------------------------------------------------------- You may promote your Application truthfully but may not issue press releases or imply endorsement by TeamUp without written consent. * * * 18\. Privacy Policy[​](#18-privacy-policy "Direct link to 18. Privacy Policy") ------------------------------------------------------------------------------ By using the API, you agree to the [TeamUp Privacy Policy](https://goteamup.com/company/privacy/). You are responsible for legal compliance when handling Personal Data. * * * 19\. Onward Transfer of Personal Data[​](#19-onward-transfer-of-personal-data "Direct link to 19. Onward Transfer of Personal Data") ------------------------------------------------------------------------------------------------------------------------------------ You must comply with data protection standards and any applicable Standard Contractual Clauses when transferring Personal Data. * * * 20\. Records and Audit Rights[​](#20-records-and-audit-rights "Direct link to 20. Records and Audit Rights") ------------------------------------------------------------------------------------------------------------ TeamUp reserves the right to audit your compliance with this Agreement. * * * 21\. General Terms[​](#21-general-terms "Direct link to 21. General Terms") --------------------------------------------------------------------------- * **Relationship**: No agency or employment relationship is created. * **Non-Solicitation**: You may not solicit TeamUp employees for hire. * **Severability**: Unenforceable provisions will be modified to fulfill intent. * **No Waiver**: TeamUp’s failure to enforce any right does not waive it. * **Entire Agreement**: This is the complete agreement regarding API use. * * * For questions, see how to [contact us](https://goteamup.com/company/contact). * [1\. Definitions](#1-definitions) * [2\. License](#2-license) * [3\. Modifications](#3-modifications) * [4\. Support](#4-support) * [5\. Application Guidelines](#5-application-guidelines) * [6\. API Call Limitations](#6-api-call-limitations) * [7\. Ownership](#7-ownership) * [8\. API Restrictions](#8-api-restrictions) * [9\. Service Providers](#9-service-providers) * [10\. Right to Terminate](#10-right-to-terminate) * [11\. Third Party Services](#11-third-party-services) * [12\. Disclaimer of Any Warranty](#12-disclaimer-of-any-warranty) * [13\. Limitation of Liability](#13-limitation-of-liability) * [14\. Release and Waiver](#14-release-and-waiver) * [15\. Indemnification](#15-indemnification) * [16\. Confidential Information](#16-confidential-information) * [17\. Publicity](#17-publicity) * [18\. Privacy Policy](#18-privacy-policy) * [19\. Onward Transfer of Personal Data](#19-onward-transfer-of-personal-data) * [20\. Records and Audit Rights](#20-records-and-audit-rights) * [21\. General Terms](#21-general-terms) Company * [Home](https://goteamup.com/) * [Contact Us](https://goteamup.com/company/contact) * [Support](https://support.goteamup.com/) * [API Terms of Service](/terms-of-service) Connect with us * [Facebook](https://facebook.com/teamup) * [Instagram](https://instagram.com/teamup) * [X](https://twitter.com/teamup) * [LinkedIn](https://www.linkedin.com/company/teamup) Copyright © 2026 TeamUp, Inc. Here is our OpenAPI schema. Please use it to answer any questions about our API endpoints and what they can do: { "openapi": "3.0.3", "info": { "title": "TeamUp REST API", "version": "0.0.0" }, "paths": { "/ai/business_advisor_config": { "get": { "operationId": "ai_business_advisor_config_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Business Advisor Config" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorConfigRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorConfigRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "ai_business_advisor_config_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Business Advisor Config" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedBusinessAdvisorConfigUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedBusinessAdvisorConfigUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedBusinessAdvisorConfigUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorConfigRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorConfigRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/ai/business_advisor_reports": { "get": { "operationId": "ai_business_advisor_reports_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-available_at", "available_at" ] } }, "description": "Ordering\n\n* `available_at` - Available at\n* `-available_at` - Available at (descending)", "explode": false, "style": "form" } ], "tags": [ "Business Advisor Reports" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedBusinessAdvisorReportList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedBusinessAdvisorReportList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/ai/business_advisor_reports/{id}/content": { "get": { "operationId": "ai_business_advisor_reports_content_retrieve", "description": "Retrieve the content of a report in either HTML or JSON format.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Content", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this business advisor report.", "required": true } ], "tags": [ "Business Advisor Reports" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorReport" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BusinessAdvisorReport" } } }, "description": "" } } } }, "/applications": { "get": { "operationId": "applications_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Applications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedApplicationReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedApplicationReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "applications_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Applications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/applications/{id}": { "get": { "operationId": "applications_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this application.", "required": true } ], "tags": [ "Applications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "applications_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this application.", "required": true } ], "tags": [ "Applications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ApplicationWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "applications_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this application.", "required": true } ], "tags": [ "Applications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedApplicationWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedApplicationWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedApplicationWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ApplicationRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "applications_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this application.", "required": true } ], "tags": [ "Applications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/attendances": { "get": { "operationId": "attendances_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "event", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "event_applicable_to_recurring_reservation", "schema": { "type": "integer" }, "description": "Only include attendances for events that match a recurring reservation's criteria. Format a reservation's unique `id`." }, { "in": "query", "name": "event_local_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for sessions that start on or after a given timestamp in the venue's local timezone." }, { "in": "query", "name": "event_local_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for sessions that start on or before a given timestamp in the venue's local timezone.." }, { "in": "query", "name": "event_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for events that start on or after a timestamp." }, { "in": "query", "name": "event_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for events that start on or before a timestamp." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include attendances for particular offering types. Format as comma-separated offering type `id` values.", "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-customer.created_at", "-event_starts_at", "customer.created_at", "event_starts_at" ] } }, "description": "Ordering\n\n* `event_starts_at` - Event starts at\n* `-event_starts_at` - Event starts at (descending)\n* `customer.created_at` - Customer.created at\n* `-customer.created_at` - Customer.created at (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "not_registered", "registered", "attended", "no_show", "late_cancelled", "plans_to_attend" ] } }, "description": "The status `plans_to_attend` will include any attendances where the customer has registered or is on the waitlist.", "explode": false, "style": "form" }, { "in": "query", "name": "venue", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" } ], "tags": [ "Attendances" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedAttendanceReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedAttendanceReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view attendances for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/attendances/{id}": { "get": { "operationId": "attendances_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this attendance.", "required": true } ], "tags": [ "Attendances" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view attendances for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/auth/application": { "get": { "operationId": "auth_application_retrieve", "description": "The current application. If the client is not authenticated, it can pass the `client_id` of the application it plans to authenticate with in the `TeamUp-Client-ID` header.", "summary": "Authenticated Application", "parameters": [ { "in": "header", "name": "TeamUp-Client-ID", "schema": { "type": "string" }, "description": "ID of the application" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "security": [ { "Token Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AuthenticatedApplication" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AuthenticatedApplication" } } }, "description": "" } } } }, "/auth/check_account": { "get": { "operationId": "auth_check_account_retrieve", "description": "Check whether an email address is linked to an existing account.", "summary": "Check Account", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "email", "schema": { "type": "string", "format": "email", "minLength": 1 }, "required": true }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CheckAccountRead" } } }, "description": "" } } } }, "/auth/logout": { "post": { "operationId": "auth_logout_create", "description": "Log out the current user by flushing their session and revoking refresh tokens.", "summary": "Logout", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] }, {} ], "responses": { "200": { "description": "No response body" } } } }, "/auth/m2m_tokens": { "get": { "operationId": "auth_m2m_tokens_retrieve", "description": "List active M2M tokens for the provider, optionally filtered by application.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "M2M Tokens" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } }, "post": { "operationId": "auth_m2m_tokens_create", "description": "Generate a new M2M token for the application. Maximum 2 active tokens per application.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "M2M Tokens" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "description": "No response body" }, "409": { "description": "No response body" } } } }, "/auth/m2m_tokens/{id}": { "put": { "operationId": "auth_m2m_tokens_update", "description": "Update the expiry, permissions, or read-only scope of an existing M2M token. expires_at may only be set when the token currently has no expiry.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this access token.", "required": true } ], "tags": [ "M2M Tokens" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/M2MTokenWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" }, "400": { "description": "No response body" }, "404": { "description": "No response body" } } }, "patch": { "operationId": "auth_m2m_tokens_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this access token.", "required": true } ], "tags": [ "M2M Tokens" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedM2MTokenWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedM2MTokenWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedM2MTokenWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/M2MTokenRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/M2MTokenRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "auth_m2m_tokens_destroy", "description": "Revoke an active M2M token for the application.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this access token.", "required": true } ], "tags": [ "M2M Tokens" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" }, "404": { "description": "No response body" } } } }, "/auth/oidc/userinfo": { "get": { "operationId": "auth_oidc_userinfo_retrieve", "description": "OIDC-compliant UserInfo endpoint. Returns claims about the authenticated End-User. Requires a valid JWT Bearer token. Claims are returned conditionally based on the granted scopes: 'openid' (sub, name, given_name, family_name, updated_at), 'email' (email, email_verified). Conforms to https://openid.net/specs/openid-connect-core-1_0.html#UserInfo", "summary": "UserInfo", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "security": [ { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UserInfoResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UserInfoResponse" } } }, "description": "" } } } }, "/auth/password_login": { "post": { "operationId": "auth_password_login_create", "description": "Log in a user with their password. You must apply for a direct authentication key to use this endpoint.", "summary": "Password Login", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordLoginParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PasswordLoginParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PasswordLoginParamsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PasswordLoginRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PasswordLoginRead" } } }, "description": "" } } } }, "/auth/profiles": { "get": { "operationId": "auth_profiles_list", "description": "Return the user profiles that are available to the authenticated credentials.", "summary": "Profiles", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Auth" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProfileReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProfileReadList" } } }, "description": "" } } } }, "/auth/refresh_access_token": { "post": { "operationId": "auth_refresh_access_token_create", "description": "Refresh an access token.", "summary": "Refresh Access Token", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Auth" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshAccessTokenParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/RefreshAccessTokenParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/RefreshAccessTokenParamsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GetAccessTokenSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GetAccessTokenSuccess" } } }, "description": "" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RefreshTokenExpiredResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RefreshTokenExpiredResponse" } } }, "description": "Bad Request. Returned when the refresh token has expired. The `code` field will be `\"refresh_token_expired\"`." } } } }, "/auth/two_factor/requirements": { "get": { "operationId": "auth_two_factor_requirements_retrieve", "description": "Check whether a given provider requires 2FA.", "summary": "Check 2FA Requirements", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "provider", "schema": { "type": "integer" }, "required": true } ], "tags": [ "Two Factor Auth" ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TwoFactorRequirementsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/TwoFactorRequirementsRead" } } }, "description": "" } } } }, "/auth/two_factor/start_verification": { "post": { "operationId": "auth_two_factor_start_verification_create", "description": "Start the 2FA verification process.", "summary": "Start 2FA Verification", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Two Factor Auth" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StartVerificationParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/StartVerificationParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/StartVerificationParamsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMS2FACodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SMS2FACodeRead" } } }, "description": "" } } } }, "/auth/two_factor/verify": { "post": { "operationId": "auth_two_factor_verify_create", "description": "Complete the 2FA verification process, and receive a key with which an account can be registered.", "summary": "Verify 2FA Code", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Two Factor Auth" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Verify2FACodeParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/Verify2FACodeParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/Verify2FACodeParamsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Verify2FACodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Verify2FACodeRead" } } }, "description": "" } } } }, "/availability_schedule_offering_types": { "get": { "operationId": "availability_schedule_offering_types_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Availability Schedule Offering Types" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedAvailabilityScheduleOfferingTypeList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedAvailabilityScheduleOfferingTypeList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/availability_schedule_offering_types/bulk_update": { "post": { "operationId": "availability_schedule_offering_types_bulk_update_create", "description": "Update the association between offering types and availability schedules in bulk.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Bulk Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Availability Schedule Offering Types" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkUpdateAvailabilityScheduleOfferingTypeRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkUpdateAvailabilityScheduleOfferingTypeRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkUpdateAvailabilityScheduleOfferingTypeRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/availability_schedules": { "get": { "operationId": "availability_schedules_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedAvailabilityScheduleList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedAvailabilityScheduleList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "availability_schedules_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Availability Schedules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: is_instructor\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/availability_schedules/{id}": { "get": { "operationId": "availability_schedules_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "availability_schedules_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AvailabilityScheduleRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "availability_schedules_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityScheduleRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityScheduleRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityScheduleRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "availability_schedules_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/availability_schedules/{id}/offering_types/{offering_type_id}": { "delete": { "operationId": "availability_schedules_offering_types_destroy", "summary": "Delete Availability Schedule Offering Type", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "offering_type_id", "schema": { "type": "string", "pattern": "^\\d+$" }, "required": true } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilitySchedule" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/availability_schedules/{id}/overrides": { "get": { "operationId": "availability_schedules_overrides_retrieve", "summary": "Overrides", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AvailabilityOverrides" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AvailabilityOverrides" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "availability_schedules_overrides_partial_update", "summary": "Update Overrides", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityOverridesRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityOverridesRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedAvailabilityOverridesRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "availability_schedules_overrides_destroy", "summary": "Delete Overrides", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Availability Schedules" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers (at least one required)\n- The following condition must be met: object_is_own_schedule\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/bulk_actions/{id}": { "get": { "operationId": "bulk_actions_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Bulk Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/bulk_actions/{id}/export": { "post": { "operationId": "bulk_actions_export_create", "summary": "Export", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Bulk Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkActionExportJob" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkActionExportJob" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/bulk_actions/{id}/results": { "get": { "operationId": "bulk_actions_results_list", "summary": "Results", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Bulk Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedBulkActionResultList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedBulkActionResultList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/business_closures": { "get": { "operationId": "business_closures_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "closure_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "closure_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Business Closures" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedBusinessClosureList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedBusinessClosureList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." } }, "/business_closures/{id}": { "delete": { "operationId": "business_closures_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this business closure.", "required": true } ], "tags": [ "Business Closures" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/business_closures/bulk_close": { "post": { "operationId": "business_closures_bulk_close_create", "summary": "Bulk Close", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Business Closures" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCloseParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkCloseParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkCloseParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkins": { "post": { "operationId": "checkins_create", "summary": "Create Checkin", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkins" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CheckinCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CheckinCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CheckinRead" } } }, "description": "" } } } }, "/checkins/settings": { "get": { "operationId": "checkins_settings_retrieve", "summary": "Get Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkins" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } } }, "description": "" } } }, "put": { "operationId": "checkins_settings_update", "summary": "Update Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkins" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinSettingsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CheckinSettingsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CheckinSettingsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } } }, "description": "" } } }, "patch": { "operationId": "checkins_settings_partial_update", "summary": "Partially Update Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkins" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCheckinSettingsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCheckinSettingsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCheckinSettingsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CheckinSettings" } } }, "description": "" } } } }, "/checkouts": { "get": { "operationId": "checkouts_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedUniversalCheckoutReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedUniversalCheckoutReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "checkouts_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}": { "get": { "operationId": "checkouts_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "checkouts_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "checkouts_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedUniversalCheckoutWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedUniversalCheckoutWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedUniversalCheckoutWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "checkouts_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}/add_item": { "post": { "operationId": "checkouts_add_item_create", "summary": "Add Item", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}/cancel": { "post": { "operationId": "checkouts_cancel_create", "summary": "Cancel", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}/items/{item_id}/": { "get": { "operationId": "checkouts_items_retrieve", "summary": "Get Or Remove Item", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "item_id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "checkouts_items_destroy", "summary": "Get Or Remove Item", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "item_id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}/items/{item_id}/price/": { "post": { "operationId": "checkouts_items_price_create", "summary": "Update Item Price", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "item_id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemPriceRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemPriceRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemPriceRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/{id}/items/{item_id}/quantity/": { "post": { "operationId": "checkouts_items_quantity_create", "summary": "Update Item Quantity", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true }, { "in": "path", "name": "item_id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemQuantityRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemQuantityRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItemQuantityRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UniversalCheckoutItem" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/checkouts/preview-discount-code": { "post": { "operationId": "checkouts_preview_discount_code_create", "summary": "Preview Discount Code", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Checkouts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodePreviewWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodePreviewWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodePreviewWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodePreviewRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodePreviewRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/communication/broadcast_messages": { "post": { "operationId": "communication_broadcast_messages_create", "description": "Create a broadcast message.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The following condition must be met: provider_can_send_broadcast_messages\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Broadcast Messages" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BroadcastMessageCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BroadcastMessageCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } } }, "description": "" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedResponse" } } }, "description": "Bad Request. Returned when an email broadcast is blocked by content moderation." } } } }, "/communication/broadcast_messages/{id}": { "get": { "operationId": "communication_broadcast_messages_retrieve", "description": "Retrieve a broadcast message.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this broadcast message.", "required": true } ], "tags": [ "Broadcast Messages" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } } }, "description": "" } } }, "put": { "operationId": "communication_broadcast_messages_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this broadcast message.", "required": true } ], "tags": [ "Broadcast Messages" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BroadcastMessageReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BroadcastMessageReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "communication_broadcast_messages_partial_update", "description": "Update a broadcast message.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this broadcast message.", "required": true } ], "tags": [ "Broadcast Messages" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedBroadcastMessageUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedBroadcastMessageUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedBroadcastMessageUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } } }, "description": "" } } } }, "/communication/broadcast_messages/{id}/send": { "post": { "operationId": "communication_broadcast_messages_send_create", "description": "Send a broadcast message.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The following condition must be met: provider_can_send_broadcast_messages\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Send", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this broadcast message.", "required": true } ], "tags": [ "Broadcast Messages" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageRead" } } }, "description": "" }, "400": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedResponse" } } }, "description": "Bad Request. Returned when an email broadcast is blocked by content moderation." } } } }, "/communication/broadcast_messages/email_quota": { "get": { "operationId": "communication_broadcast_messages_email_quota_retrieve", "description": "Retrieve the provider's broadcast email quota for the current billing cycle.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Email Quota", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Broadcast Messages" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailQuota" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmailQuota" } } }, "description": "" } } } }, "/communication/broadcast_messages/recipients_preview": { "post": { "operationId": "communication_broadcast_messages_recipients_preview_create", "description": "Preview recipient counts and channel capabilities before sending.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Recipients Preview", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Broadcast Messages" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipientsPreviewRequestRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/RecipientsPreviewRequestRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/RecipientsPreviewRequestRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecipientsPreviewResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RecipientsPreviewResponse" } } }, "description": "" } } } }, "/communication/broadcast_messages/send_test_email": { "post": { "operationId": "communication_broadcast_messages_send_test_email_create", "description": "Send a test broadcast email to the logged-in user's email address.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The following condition must be met: provider_can_send_broadcast_messages\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Send Test Email", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Broadcast Messages" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTestEmailRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SendTestEmailRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SendTestEmailRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendTestEmail" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SendTestEmail" } } }, "description": "" } } } }, "/communication/notification_types/membership_penalty": { "get": { "operationId": "communication_notification_types_membership_penalty_retrieve", "summary": "Get Metadata", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Penalty Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } }, "application/xml": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/communication/notification_types/membership_penalty/messages": { "get": { "operationId": "communication_notification_types_membership_penalty_messages_list", "description": "List messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List Messages", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Membership Penalty Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPenaltyMessageReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPenaltyMessageReadList" } } }, "description": "" } } }, "post": { "operationId": "communication_notification_types_membership_penalty_messages_create", "description": "Create messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create Message", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Penalty Notifications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } } }, "description": "" } } } }, "/communication/notification_types/membership_penalty/messages/{id}": { "get": { "operationId": "communication_notification_types_membership_penalty_messages_retrieve", "description": "Retrieve messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve Message", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Membership Penalty Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } } }, "description": "" } } }, "put": { "operationId": "communication_notification_types_membership_penalty_messages_update", "description": "Update messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update Message", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Membership Penalty Notifications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } } }, "description": "" } } }, "patch": { "operationId": "communication_notification_types_membership_penalty_messages_partial_update", "description": "Partially update messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update Message", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Membership Penalty Notifications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltyMessageWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltyMessageWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltyMessageWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } } }, "description": "" } } }, "delete": { "operationId": "communication_notification_types_membership_penalty_messages_destroy", "description": "Delete messages.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete Message", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Membership Penalty Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/communication/notification_types/missing_forms_waivers": { "get": { "operationId": "communication_notification_types_missing_forms_waivers_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Missing Forms and Waivers Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MissingFormsWaiversSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MissingFormsWaiversSettingsRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "communication_notification_types_missing_forms_waivers_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Missing Forms and Waivers Notifications" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMissingFormsWaiversSettingsWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMissingFormsWaiversSettingsWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMissingFormsWaiversSettingsWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MissingFormsWaiversSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MissingFormsWaiversSettingsRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/communication/notification_types/missing_forms_waivers/metadata": { "get": { "operationId": "communication_notification_types_missing_forms_waivers_metadata_retrieve", "summary": "Get Template Metadata", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Missing Forms and Waivers Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } }, "application/xml": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/communication/push_settings": { "get": { "operationId": "communication_push_settings_retrieve", "description": "Return each push notification type a provider can turn on or off, with whether the provider sends it. A type with no stored choice reads its default. Also returns the missing forms & waivers push schedule.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Push Notification Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PushSettingsRead" } } }, "description": "" } } }, "patch": { "operationId": "communication_push_settings_partial_update", "description": "Turn push notification types on or off for the provider, and set the missing forms & waivers push schedule. Only the types and fields in the request change; the others keep their values. All the changes are saved together, or none are.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Push Notification Settings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedPushSettingsWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedPushSettingsWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedPushSettingsWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PushSettingsRead" } } }, "description": "" } } } }, "/communication/push_settings/class_reminders": { "get": { "operationId": "communication_push_settings_class_reminders_list", "description": "List the provider's push class reminders, in the order they send.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Push Class Reminders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedEventPushScheduleReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedEventPushScheduleReadList" } } }, "description": "" } } }, "post": { "operationId": "communication_push_settings_class_reminders_create", "description": "Add a push class reminder. A provider can have at most five; a sixth gets an error.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Push Class Reminders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } } }, "description": "" } } } }, "/communication/push_settings/class_reminders/{id}": { "get": { "operationId": "communication_push_settings_class_reminders_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event push schedule.", "required": true } ], "tags": [ "Push Class Reminders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "communication_push_settings_class_reminders_update", "description": "Change a push class reminder in place.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event push schedule.", "required": true } ], "tags": [ "Push Class Reminders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventPushScheduleWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } } }, "description": "" } } }, "patch": { "operationId": "communication_push_settings_class_reminders_partial_update", "description": "Change the minutes or the timing of a push class reminder in place.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event push schedule.", "required": true } ], "tags": [ "Push Class Reminders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedEventPushScheduleWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedEventPushScheduleWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedEventPushScheduleWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventPushScheduleRead" } } }, "description": "" } } }, "delete": { "operationId": "communication_push_settings_class_reminders_destroy", "description": "Remove a push class reminder. Reminders already sent for it keep their history.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event push schedule.", "required": true } ], "tags": [ "Push Class Reminders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/content": { "get": { "operationId": "content_list", "description": "Return a list of content objects.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_customer", "schema": { "type": "integer" }, "description": "Set the customer ID to use for determining access to Content." }, { "in": "query", "name": "collection", "schema": { "type": "integer" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "favorited_by", "schema": { "type": "number" } }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "instructor", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "query", "schema": { "type": "string" } }, { "in": "query", "name": "tags", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" } ], "tags": [ "Content" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedContentList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedContentList" } } }, "description": "" } } } }, "/content/{id}": { "get": { "operationId": "content_retrieve", "description": "Retrieve a single content object by ID.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this content.", "required": true } ], "tags": [ "Content" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Content" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Content" } } }, "description": "" } } } }, "/content/{id}/add_favorite": { "post": { "operationId": "content_add_favorite_create", "description": "Add the content to the authenticated user's favorites.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Add Favorite", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this content.", "required": true } ], "tags": [ "Content" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentAddFavoriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ContentAddFavoriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ContentAddFavoriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Content" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Content" } } }, "description": "" } } } }, "/content/{id}/generate_access_link": { "post": { "operationId": "content_generate_access_link_create", "description": "Returns the video URL to a customer and records them as having viewed it\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Generate Access Link", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this content.", "required": true } ], "tags": [ "Content" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentAccessLinkCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ContentAccessLinkCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ContentAccessLinkCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentAccessLinkRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ContentAccessLinkRead" } } }, "description": "" } } } }, "/content/{id}/remove_favorite": { "post": { "operationId": "content_remove_favorite_create", "description": "Remove the content from the authenticated user's favorites.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Remove Favorite", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this content.", "required": true } ], "tags": [ "Content" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentRemoveFavoriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ContentRemoveFavoriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ContentRemoveFavoriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Content" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Content" } } }, "description": "" } } } }, "/content_collections": { "get": { "operationId": "content_collections_list", "description": "Return a list of content collections.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_customer", "schema": { "type": "integer" }, "description": "Set the customer ID to use for determining access to ContentCollection." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "membership", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Content Collections" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedContentCollectionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedContentCollectionList" } } }, "description": "" } } } }, "/content_collections/{id}": { "get": { "operationId": "content_collections_retrieve", "description": "Retrieve a single Content Collection object by ID.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this access group.", "required": true } ], "tags": [ "Content Collections" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentCollection" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ContentCollection" } } }, "description": "" } } } }, "/content_filters": { "get": { "operationId": "content_filters_list", "description": "Return a list of Content Filters.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "collection", "schema": { "type": "number" }, "description": "Return only Filters which have at least one FilterTag which has been applied to a Content within the given `collection`." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Content Filters" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedContentFilterList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedContentFilterList" } } }, "description": "" } } } }, "/course_series": { "get": { "operationId": "course_series_list", "description": "Return a list of course series.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active series of published, active courses.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active series of published, active courses.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "course", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Course Series" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSeriesReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSeriesReadList" } } }, "description": "" } } } }, "/course_series/{id}": { "get": { "operationId": "course_series_retrieve", "description": "Return a specific course series.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active series of published, active courses.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active series of published, active courses.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this course date series.", "required": true } ], "tags": [ "Course Series" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CourseSeriesRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CourseSeriesRead" } } }, "description": "" } } } }, "/course_session_attendances": { "get": { "operationId": "course_session_attendances_list", "description": "Return a list of your course session attendances.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view attendances for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "course_session_local_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for sessions that start on or after a given timestamp in the venue's local timezone." }, { "in": "query", "name": "course_session_local_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for sessions that start on or before a given timestamp in the venue's local timezone.." }, { "in": "query", "name": "course_session_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for course sessions that start on or after a timestamp." }, { "in": "query", "name": "course_session_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include attendances for course sessions that end on or before a timestamp." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Course Session Attendances" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSessionAttendanceList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSessionAttendanceList" } } }, "description": "" } } } }, "/course_session_attendances/{id}": { "get": { "operationId": "course_session_attendances_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this course date attendance.", "required": true } ], "tags": [ "Course Session Attendances" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CourseSessionAttendance" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CourseSessionAttendance" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view attendances for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/course_sessions": { "get": { "operationId": "course_sessions_list", "description": "Return a list of course sessions.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active sessions for published courses.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active sessions for published courses.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "course", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "ends_at_gte", "schema": { "type": "string" } }, { "in": "query", "name": "ends_at_lte", "schema": { "type": "string" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "instructors", "schema": { "type": "integer" } }, { "in": "query", "name": "local_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include sessions that start on or after a given timestamp in the venue's local timezone." }, { "in": "query", "name": "local_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include sessions that start on or before a given timestamp in the venue's local timezone.." }, { "in": "query", "name": "occupancy_status", "schema": { "type": "array", "items": { "enum": [ "full", "not_full", "has_registrations", "has_waitlist", "empty" ], "type": "string", "description": "* `full` - full\n* `not_full` - not_full\n* `has_registrations` - has_registrations\n* `has_waitlist` - has_waitlist\n* `empty` - empty", "x-spec-enum-id": "936b3329b649d00c" } }, "explode": false, "style": "form" }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "series", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-start", "start" ] } }, "description": "Ordering\n\n* `start` - Start\n* `-start` - Start (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "start_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "start_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "active", "cancelled" ] } }, "explode": false, "style": "form" }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" } ], "tags": [ "Course Sessions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSessionReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCourseSessionReadList" } } }, "description": "" } } } }, "/course_sessions/{id}": { "get": { "operationId": "course_sessions_retrieve", "description": "Return a specific course session.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active sessions for published courses.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active sessions for published courses.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this course date.", "required": true } ], "tags": [ "Course Sessions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CourseSessionRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CourseSessionRead" } } }, "description": "" } } } }, "/courses": { "get": { "operationId": "courses_list", "description": "Return a list of courses.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "published", "schema": { "type": "boolean" } } ], "tags": [ "Courses" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCourseReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCourseReadList" } } }, "description": "" } } } }, "/courses/{id}": { "get": { "operationId": "courses_retrieve", "description": "Return a course.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this course.", "required": true } ], "tags": [ "Courses" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CourseRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CourseRead" } } }, "description": "" } } } }, "/crm/bulk_status_evaluations": { "get": { "operationId": "crm_bulk_status_evaluations_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "queued", "dispatching", "in_progress", "completed", "cancelled" ] } }, "explode": false, "style": "form" } ], "tags": [ "Bulk Evaluations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMBulkStatusEvaluationList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMBulkStatusEvaluationList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/bulk_status_evaluations/{id}": { "get": { "operationId": "crm_bulk_status_evaluations_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm bulk status evaluation.", "required": true } ], "tags": [ "Bulk Evaluations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMBulkStatusEvaluation" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMBulkStatusEvaluation" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/customer_segments": { "get": { "operationId": "crm_customer_segments_list", "description": "List customer segments.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Customer Segments" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerSegmentReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerSegmentReadList" } } }, "description": "" } } }, "post": { "operationId": "crm_customer_segments_create", "description": "Create a customer segment.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Segments" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerSegmentCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerSegmentCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } } }, "description": "" } } } }, "/crm/customer_segments/{id}": { "get": { "operationId": "crm_customer_segments_retrieve", "description": "Retrieve a customer segment.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer segment.", "required": true } ], "tags": [ "Customer Segments" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } } }, "description": "" } } }, "put": { "operationId": "crm_customer_segments_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer segment.", "required": true } ], "tags": [ "Customer Segments" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerSegmentUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerSegmentUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_customer_segments_partial_update", "description": "Partially update a customer segment.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer segment.", "required": true } ], "tags": [ "Customer Segments" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCustomerSegmentUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCustomerSegmentUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCustomerSegmentUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerSegmentRead" } } }, "description": "" } } }, "delete": { "operationId": "crm_customer_segments_destroy", "description": "Soft-delete a customer segment.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer segment.", "required": true } ], "tags": [ "Customer Segments" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/crm/interactions": { "get": { "operationId": "crm_interactions_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "number" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Interactions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMInteractionReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMInteractionReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "crm_interactions_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Interactions" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMInteractionWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMInteractionWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMInteractionWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMInteractionRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMInteractionRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/lead_forms": { "get": { "operationId": "crm_lead_forms_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Lead Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedLeadFormList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedLeadFormList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`, `crm_all_customer_records`, `crm_own_customer_records`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "crm_lead_forms_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Lead Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadForm" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadForm" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/lead_forms/{id}": { "get": { "operationId": "crm_lead_forms_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead form.", "required": true } ], "tags": [ "Lead Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadForm" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadForm" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`, `crm_all_customer_records`, `crm_own_customer_records`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." }, "put": { "operationId": "crm_lead_forms_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead form.", "required": true } ], "tags": [ "Lead Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeadFormRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadForm" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadForm" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_lead_forms_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead form.", "required": true } ], "tags": [ "Lead Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedLeadFormRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedLeadFormRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedLeadFormRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadForm" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadForm" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "crm_lead_forms_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead form.", "required": true } ], "tags": [ "Lead Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/lead_forms/{id}/submit": { "post": { "operationId": "crm_lead_forms_submit_create", "summary": "Submit", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead form.", "required": true } ], "tags": [ "Lead Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadFormSubmitRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeadFormSubmitRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeadFormSubmitRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadFormSubmitResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadFormSubmitResponse" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." } }, "/crm/lead_sources": { "get": { "operationId": "crm_lead_sources_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Lead Sources" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedLeadSourceList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedLeadSourceList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "crm_lead_sources_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Lead Sources" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSource" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadSource" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/lead_sources/{id}": { "get": { "operationId": "crm_lead_sources_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead source.", "required": true } ], "tags": [ "Lead Sources" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSource" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadSource" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "crm_lead_sources_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead source.", "required": true } ], "tags": [ "Lead Sources" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeadSourceRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSource" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadSource" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_lead_sources_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this lead source.", "required": true } ], "tags": [ "Lead Sources" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedLeadSourceRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedLeadSourceRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedLeadSourceRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeadSource" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeadSource" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/settings": { "get": { "operationId": "crm_settings_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMConfig" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_settings_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Settings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCRMConfigRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCRMConfigRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCRMConfigRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMConfig" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/status_changes": { "get": { "operationId": "crm_status_changes_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "number" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Status Changes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMStatusChangeList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMStatusChangeList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/status_changes/{id}": { "get": { "operationId": "crm_status_changes_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer status change.", "required": true } ], "tags": [ "Status Changes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMStatusChange" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMStatusChange" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/statuses": { "get": { "operationId": "crm_statuses_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Statuses" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMStatusReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMStatusReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/statuses/{id}": { "get": { "operationId": "crm_statuses_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm status.", "required": true } ], "tags": [ "Statuses" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMStatusRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMStatusRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "crm_statuses_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm status.", "required": true } ], "tags": [ "Statuses" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMStatusWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMStatusWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMStatusWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMStatusRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMStatusRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/statuses/{id}/defaults": { "get": { "operationId": "crm_statuses_defaults_retrieve", "summary": "Retrieve Defaults", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm status.", "required": true } ], "tags": [ "Statuses" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DefaultsResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DefaultsResponse" } } }, "description": "" } }, "description": "\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`, `crm_lifecycle_status_admin`.\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/workflow_action_types/{type}": { "get": { "operationId": "crm_workflow_action_types_retrieve", "summary": "Retrieve Action Type", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "type", "schema": { "type": "string" }, "required": true } ], "tags": [ "Workflow Action Types" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMActionType" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMActionType" } } }, "description": "" } } } }, "/crm/workflow_actions": { "get": { "operationId": "crm_workflow_actions_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "action_type", "schema": { "type": "array", "items": { "enum": [ "email_customer", "email_staff" ], "type": "string", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" } }, "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "workflow_trigger", "schema": { "type": "string", "enum": [ "customer_status.changed", "lead_form.submitted" ] }, "description": "* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed" } ], "tags": [ "Workflow Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMWorkflowActionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMWorkflowActionList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "crm_workflow_actions_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Workflow Actions" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/workflow_actions/{id}": { "get": { "operationId": "crm_workflow_actions_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow action.", "required": true } ], "tags": [ "Workflow Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "crm_workflow_actions_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow action.", "required": true } ], "tags": [ "Workflow Actions" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMWorkflowActionRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_workflow_actions_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow action.", "required": true } ], "tags": [ "Workflow Actions" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowActionRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowActionRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowActionRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "crm_workflow_actions_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow action.", "required": true } ], "tags": [ "Workflow Actions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/workflow_triggers/{trigger}": { "get": { "operationId": "crm_workflow_triggers_retrieve", "summary": "Retrieve Workflow Trigger", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "trigger", "schema": { "type": "string" }, "required": true } ], "tags": [ "Workflow Triggers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WorkflowTrigger" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WorkflowTrigger" } } }, "description": "" } } } }, "/crm/workflows": { "get": { "operationId": "crm_workflows_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Workflows" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCRMWorkflowReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCRMWorkflowReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "crm_workflows_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Workflows" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMWorkflowCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMWorkflowCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/crm/workflows/{id}": { "get": { "operationId": "crm_workflows_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow.", "required": true } ], "tags": [ "Workflows" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "crm_workflows_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow.", "required": true } ], "tags": [ "Workflows" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CRMWorkflowUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CRMWorkflowUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "crm_workflows_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this crm workflow.", "required": true } ], "tags": [ "Workflows" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCRMWorkflowUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CRMWorkflowRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_field_values": { "get": { "operationId": "customer_field_values_list", "description": "Return a list of customer field values.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view field values for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include values for particular customers. Format as customer `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "field", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include values for particular fields. Format as fields `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Customer Field Values" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFieldValueReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFieldValueReadList" } } }, "description": "" } } }, "post": { "operationId": "customer_field_values_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Field Values" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueCreateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view field values for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_field_values/{id}": { "get": { "operationId": "customer_field_values_retrieve", "description": "Retrieve a customer field value.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view field values for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field value.", "required": true } ], "tags": [ "Customer Field Values" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } } }, "description": "" } } }, "put": { "operationId": "customer_field_values_update", "description": "Update a customer field value.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Caller can update their own values, or any values belonging to members of their family.\nCaller can view field values for themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field value.", "required": true } ], "tags": [ "Customer Field Values" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFieldValueRead" } } }, "description": "" } } } }, "/customer_fields": { "get": { "operationId": "customer_fields_list", "description": "Return a list of customer fields.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "applicable_scenario", "schema": { "type": "string", "enum": [ "child_signup", "customer_registration", "non_participating_parent", "participating_parent", "provider_new_customer_form" ] }, "description": "Only include the group of fields required for a particular scenario/submission type.\n\n* `child_signup` - child_signup\n* `participating_parent` - participating_parent\n* `non_participating_parent` - non_participating_parent\n* `provider_new_customer_form` - provider_new_customer_form\n* `customer_registration` - customer_registration" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "forms", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include fields for particular forms. Format as form `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "include_virtual", "schema": { "type": "boolean" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "system_use", "schema": { "type": "string", "enum": [ "date_of_birth", "marketing_preference" ] }, "description": "Only include fields used for a specific system purpose.\n\n* `date_of_birth` - date_of_birth\n* `marketing_preference` - marketing_preference" } ], "tags": [ "Customer Fields" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFieldList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFieldList" } } }, "description": "" } } }, "post": { "operationId": "customer_fields_create", "description": "Create a customer field.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Fields" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerField" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerField" } } }, "description": "" } } } }, "/customer_fields/{id}": { "get": { "operationId": "customer_fields_retrieve", "description": "Retrieve a customer field.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field.", "required": true } ], "tags": [ "Customer Fields" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerField" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerField" } } }, "description": "" } } }, "put": { "operationId": "customer_fields_update", "description": "Update a customer field.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field.", "required": true } ], "tags": [ "Customer Fields" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFieldCreateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerField" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerField" } } }, "description": "" } } }, "patch": { "operationId": "customer_fields_partial_update", "description": "Partially update a customer field.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field.", "required": true } ], "tags": [ "Customer Fields" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFieldCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFieldCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFieldCreateUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerField" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerField" } } }, "description": "" } } }, "delete": { "operationId": "customer_fields_destroy", "description": "Delete a customer field.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this field.", "required": true } ], "tags": [ "Customer Fields" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/customer_form_submissions": { "get": { "operationId": "customer_form_submissions_list", "description": "Retrieve a list of customer form submissions.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Customer Form Submissions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFormSubmissionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFormSubmissionList" } } }, "description": "" } } }, "post": { "operationId": "customer_form_submissions_create", "description": "Create a new customer form submission.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Form Submissions" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmissionRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmissionRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmissionRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmission" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmission" } } }, "description": "" } } } }, "/customer_form_submissions/{id}": { "get": { "operationId": "customer_form_submissions_retrieve", "description": "Retrieve details of a specific customer form submission.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form submission.", "required": true } ], "tags": [ "Customer Form Submissions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmission" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormSubmission" } } }, "description": "" } } } }, "/customer_forms": { "get": { "operationId": "customer_forms_list", "description": "Return a list of customer forms.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "applicable_to", "schema": { "type": "array", "items": { "enum": [ "all_offering_types", "all_memberships", "at_least_one_membership", "at_least_one_offering_type" ], "type": "string", "description": "* `all_offering_types` - all_offering_types\n* `all_memberships` - all_memberships\n* `at_least_one_membership` - at_least_one_membership\n* `at_least_one_offering_type` - at_least_one_offering_type", "x-spec-enum-id": "d7cc7227385f5173" } }, "explode": false, "style": "form" }, { "in": "query", "name": "applicable_to_memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include forms applicable to particular memberships. Format as membership `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "applicable_to_offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include forms applicable to particular offering types. Format as offering type `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "no_signup", "schema": { "type": "boolean" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "submitted_by", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include forms submitted by particular customers. Format as customer `id` values.", "explode": false, "style": "form" } ], "tags": [ "Customer Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFormReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerFormReadList" } } }, "description": "" } } }, "post": { "operationId": "customer_forms_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_forms/{id}": { "get": { "operationId": "customer_forms_retrieve", "description": "Retrieve a customer form.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form.", "required": true } ], "tags": [ "Customer Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormRead" } } }, "description": "" } } }, "put": { "operationId": "customer_forms_update", "description": "Update a customer form.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form.", "required": true } ], "tags": [ "Customer Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } } }, "description": "" } } }, "patch": { "operationId": "customer_forms_partial_update", "description": "Partially update a customer form.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form.", "required": true } ], "tags": [ "Customer Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFormCreateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFormCreateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedCustomerFormCreateUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerFormCreateUpdate" } } }, "description": "" } } }, "delete": { "operationId": "customer_forms_destroy", "description": "Delete a customer form. System forms cannot be deleted.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form.", "required": true } ], "tags": [ "Customer Forms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/customer_forms/{id}/send": { "post": { "operationId": "customer_forms_send_create", "description": "Email a single form to a customer for completion.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- Provider must have converted to paid before sending forms/waivers by email.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Send Form to Customer", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this form.", "required": true } ], "tags": [ "Customer Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendFormRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SendFormRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SendFormRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/customer_forms/ordering": { "patch": { "operationId": "customer_forms_ordering_partial_update", "description": "Change the order of a provider's customer forms.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Change Customer Form Order", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Forms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } } } }, "/customer_issues": { "get": { "operationId": "customer_issues_list", "description": "Return a list of customer issues.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customer issues for particular customers. To filter by multiple, format as comma-separated `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "importance", "schema": { "type": "array", "items": { "type": "string", "enum": [ "flag_on_profile", "normal", "closed" ] } }, "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "provider_managed", "schema": { "type": "boolean" }, "description": "Include or exclude issues whose case type is managed by the provider (medical issues, allergies, and general notes)." }, { "in": "query", "name": "status", "schema": { "type": "integer" } } ], "tags": [ "Customer Issues" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerIssueReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerIssueReadList" } } }, "description": "" } } } }, "/customer_issues/{id}": { "get": { "operationId": "customer_issues_retrieve", "description": "Return a customer issue\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this case.", "required": true } ], "tags": [ "Customer Issues" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerIssueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerIssueRead" } } }, "description": "" } } } }, "/customer_membership_holds": { "get": { "operationId": "customer_membership_holds_list", "description": "Retrieve a list of all customer membership holds.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Customer Membership Holds" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerMembershipHoldList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerMembershipHoldList" } } }, "description": "" } } } }, "/customer_membership_holds/{id}": { "get": { "operationId": "customer_membership_holds_retrieve", "description": "Retrieve details of a specific customer membership hold by its ID.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership hold.", "required": true } ], "tags": [ "Customer Membership Holds" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipHold" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerMembershipHold" } } }, "description": "" } } } }, "/customer_membership_holds/{id}/payment_resolution": { "get": { "operationId": "customer_membership_holds_payment_resolution_retrieve", "description": "Retrieve payment resolution details for a specific membership hold. This is only available for holds that have ended and are on recurring plan memberships.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get payment resolution for a membership hold", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership hold.", "required": true } ], "tags": [ "Customer Membership Holds" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HoldPaymentResolution" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/HoldPaymentResolution" } } }, "description": "" } } } }, "/customer_memberships": { "get": { "operationId": "customer_memberships_list", "description": "Return a list of customer memberships.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_hold_end_date_gte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that ends on or after this date." }, { "in": "query", "name": "active_hold_end_date_lte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that ends on or before this date." }, { "in": "query", "name": "active_hold_start_date_gte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that starts on or after this date." }, { "in": "query", "name": "active_hold_start_date_lte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that starts on or before this date." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customer memberships for particular customers. To filter by multiple, format as comma-separated customer `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "expiration_date_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by expiration date (greater than or equal to)" }, { "in": "query", "name": "expiration_date_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by expiration date (less than or equal to)" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "has_active_hold", "schema": { "type": "boolean" }, "description": "Filter if the customer membership has an active (current or upcoming) hold." }, { "in": "query", "name": "has_expiration_date", "schema": { "type": "boolean" }, "description": "Filter if the customer membership has an expiration date set." }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return particular customer memberships. Format as comma-separated `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "membership", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customer memberships for particular memberships. To filter by multiple, format as comma-separated membership id values.", "explode": false, "style": "form" }, { "in": "query", "name": "membership_type", "schema": { "type": "array", "items": { "enum": [ "pack", "recurring", "prepaid" ], "type": "string", "description": "* `pack` - pack\n* `recurring` - recurring\n* `prepaid` - prepaid", "x-spec-enum-id": "758f3720c00cb886" } }, "description": "Only return customer memberships for particular types. To filter by multiple, format as comma-separated type names.", "explode": false, "style": "form" }, { "in": "query", "name": "owned_or_shared_with_customer", "schema": { "type": "number" }, "description": "Only return customer memberships that are owned by or shared with a particular customer." }, { "in": "query", "name": "owned_or_shared_with_family", "schema": { "type": "number" }, "description": "Only return customer memberships that are owned by or shared with any members of a particular family." }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-expiration_date", "-membership.name", "-membership.type", "-start_date", "-status", "expiration_date", "membership.name", "membership.type", "start_date", "status" ] } }, "description": "Ordering\n\n* `membership.type` - Membership.type\n* `-membership.type` - Membership.type (descending)\n* `membership.name` - Membership.name\n* `-membership.name` - Membership.name (descending)\n* `status` - Status\n* `-status` - Status (descending)\n* `start_date` - Start date\n* `-start_date` - Start date (descending)\n* `expiration_date` - Expiration date\n* `-expiration_date` - Expiration date (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by start date (greater than or equal to)." }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by start date (less than or equal to)." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "hold", "complete", "cancelled" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `complete` - complete\n* `cancelled` - cancelled", "x-spec-enum-id": "e436a5a2606af5e6" } }, "description": "Only return customer memberships with particular statuses. To filter by multiple, format as comma-separated status names.", "explode": false, "style": "form" } ], "tags": [ "Customer Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerMembershipReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerMembershipReadList" } } }, "description": "" } } }, "post": { "operationId": "customer_memberships_create", "description": "Create a customer membership. This can only be done directly for memberships that are priced at zero. When payment is required, the membership must be provisioned through a checkout.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } } }, "description": "" } } } }, "/customer_memberships/{id}": { "get": { "operationId": "customer_memberships_retrieve", "description": "Return a customer membership.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } } }, "description": "" } } } }, "/customer_memberships/{id}/cancel": { "post": { "operationId": "customer_memberships_cancel_create", "description": "Cancel a customer membership. If the membership settings allow, the customer can cancel their own membership, with the expiration date set according to the minimum cancellation notice. Providers can set explicit expiration dates.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Cancel", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCancelRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCancelRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerMembershipCancelRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } } }, "description": "" } } } }, "/customer_memberships/{id}/plan_change_options": { "get": { "operationId": "customer_memberships_plan_change_options_list", "description": "List the plans this customer membership can switch to. Each option carries the signed price delta vs. the current plan, the date the change takes effect, and whether it is prorated.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Plan Change Options", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_hold_end_date_gte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that ends on or after this date." }, { "in": "query", "name": "active_hold_end_date_lte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that ends on or before this date." }, { "in": "query", "name": "active_hold_start_date_gte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that starts on or after this date." }, { "in": "query", "name": "active_hold_start_date_lte", "schema": { "type": "string", "format": "date" }, "description": "Only include customer memberships with an active hold that starts on or before this date." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customer memberships for particular customers. To filter by multiple, format as comma-separated customer `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "expiration_date_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by expiration date (greater than or equal to)" }, { "in": "query", "name": "expiration_date_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by expiration date (less than or equal to)" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "has_active_hold", "schema": { "type": "boolean" }, "description": "Filter if the customer membership has an active (current or upcoming) hold." }, { "in": "query", "name": "has_expiration_date", "schema": { "type": "boolean" }, "description": "Filter if the customer membership has an expiration date set." }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return particular customer memberships. Format as comma-separated `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "membership", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customer memberships for particular memberships. To filter by multiple, format as comma-separated membership id values.", "explode": false, "style": "form" }, { "in": "query", "name": "membership_type", "schema": { "type": "array", "items": { "enum": [ "pack", "recurring", "prepaid" ], "type": "string", "description": "* `pack` - pack\n* `recurring` - recurring\n* `prepaid` - prepaid", "x-spec-enum-id": "758f3720c00cb886" } }, "description": "Only return customer memberships for particular types. To filter by multiple, format as comma-separated type names.", "explode": false, "style": "form" }, { "in": "query", "name": "owned_or_shared_with_customer", "schema": { "type": "number" }, "description": "Only return customer memberships that are owned by or shared with a particular customer." }, { "in": "query", "name": "owned_or_shared_with_family", "schema": { "type": "number" }, "description": "Only return customer memberships that are owned by or shared with any members of a particular family." }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-expiration_date", "-membership.name", "-membership.type", "-start_date", "-status", "expiration_date", "membership.name", "membership.type", "start_date", "status" ] } }, "description": "Ordering\n\n* `membership.type` - Membership.type\n* `-membership.type` - Membership.type (descending)\n* `membership.name` - Membership.name\n* `-membership.name` - Membership.name (descending)\n* `status` - Status\n* `-status` - Status (descending)\n* `start_date` - Start date\n* `-start_date` - Start date (descending)\n* `expiration_date` - Expiration date\n* `-expiration_date` - Expiration date (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by start date (greater than or equal to)." }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Filter by start date (less than or equal to)." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "hold", "complete", "cancelled" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `complete` - complete\n* `cancelled` - cancelled", "x-spec-enum-id": "e436a5a2606af5e6" } }, "description": "Only return customer memberships with particular statuses. To filter by multiple, format as comma-separated status names.", "explode": false, "style": "form" } ], "tags": [ "Customer Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPlanChangeOptionReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPlanChangeOptionReadList" } } }, "description": "" } } } }, "/customer_memberships/{id}/share": { "post": { "operationId": "customer_memberships_share_create", "description": "Share a customer membership. If the membership is shareable, this will give another provider customer access to this customer membership.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Share", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareMembership" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ShareMembership" } } }, "description": "" } } } }, "/customer_memberships/{id}/share_status": { "get": { "operationId": "customer_memberships_share_status_retrieve", "description": "See who all customers that have access to this membership.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Share Status", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Share" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Share" } } }, "description": "" } } } }, "/customer_memberships/{id}/unshare": { "post": { "operationId": "customer_memberships_unshare_create", "description": "Unshare a customer membership. This will remove access of the customer membership from another provider customer.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Unshare", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ShareMembershipRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ShareMembership" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ShareMembership" } } }, "description": "" } } } }, "/customer_memberships/{id}/usage": { "get": { "operationId": "customer_memberships_usage_retrieve", "description": "Get usage information, including limits and remaining uses.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Usage", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "date", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this consumer membership.", "required": true } ], "tags": [ "Customer Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UsageRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UsageRead" } } }, "description": "" } } } }, "/customer_memberships/bulk_create_holds": { "put": { "operationId": "customer_memberships_bulk_create_holds_update", "summary": "Bulk Create Holds", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCreateHoldsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkCreateHoldsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkCreateHoldsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkCreateHolds" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkCreateHolds" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_memberships/bulk_edit_holds": { "put": { "operationId": "customer_memberships_bulk_edit_holds_update", "summary": "Bulk Edit Holds", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkEditHoldsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkEditHoldsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkEditHoldsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkEditHolds" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkEditHolds" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_memberships/bulk_edit_prices": { "post": { "operationId": "customer_memberships_bulk_edit_prices_create", "summary": "Bulk Edit Prices", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerMembershipReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerMembershipReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerMembershipRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_memberships/bulk_extend_expiration_dates": { "put": { "operationId": "customer_memberships_bulk_extend_expiration_dates_update", "summary": "Bulk Extend Expiration Dates", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customer Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkExtendExpirationDatesRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkExtendExpirationDatesRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkExtendExpirationDatesRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkExtendExpirationDates" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkExtendExpirationDates" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customer_registration_blocks": { "get": { "operationId": "customer_registration_blocks_list", "description": "Return a list of customer registration blocks.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "is_active", "schema": { "type": "boolean" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Customer Registration Blocks" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerRegistrationBlockReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerRegistrationBlockReadList" } } }, "description": "" } } } }, "/customer_registration_blocks/{id}": { "get": { "operationId": "customer_registration_blocks_retrieve", "description": "Return a customer registration block.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this customer registration block.", "required": true } ], "tags": [ "Customer Registration Blocks" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationBlockRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationBlockRead" } } }, "description": "" } } } }, "/customers": { "get": { "operationId": "customers_list", "description": "Return a list of customers.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Filter customers by active memberships. Format as comma-separated `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "age_gte", "schema": { "type": "number" }, "description": "Filter customers by age greater than or equal to a given value." }, { "in": "query", "name": "age_lte", "schema": { "type": "number" }, "description": "Filter customers by age less than or equal to a given value." }, { "in": "query", "name": "autocomplete", "schema": { "type": "string" }, "description": "Autocomplete filter by a free-text string. Matches from the start of the email and name fields." }, { "in": "query", "name": "broadcast_message_non_recipients", "schema": { "type": "number" }, "description": "Given a BroadcastMessage ID, return the targeted customers who will not receive the message." }, { "in": "query", "name": "broadcast_message_recipients", "schema": { "type": "number" }, "description": "Given a BroadcastMessage ID, return the customers who will receive the message." }, { "in": "query", "name": "can_delete", "schema": { "type": "boolean" }, "description": "Only include customers if they are deletable." }, { "in": "query", "name": "deleted", "schema": { "type": "boolean" }, "description": "Filter customers by whether or not they are deleted." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "family", "schema": { "type": "number" }, "description": "Only include customers in a particular family. Format as numeric family `id`." }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return particular customer. Format as comma-separated `id` values.", "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "query", "schema": { "type": "string" }, "description": "Filter by a free-text string. Checks the `email` and name fields." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string" } }, "description": "Filter customers by status. Format as comma-separated status slugs. Pass `null` to filter for customers without a status.", "explode": false, "style": "form" } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCustomerReadList" } } }, "description": "" } } }, "post": { "operationId": "customers_create", "description": "Create a customer. When making the request as a provider, the customer will receive an invitation email they can use to claim the profile. When making the request as an anonymous customer, the customer will be created and immediately claimed. In this mode, the request must provide values for all fields on the signup form. These fields can be fetched by calling `GET /customer_fields?applicable_scenario=customer_registration`.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- Must have one of the following permissions: `pos`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerCreateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } } } }, "/customers/{id}": { "get": { "operationId": "customers_retrieve", "description": "Retrieve a customer.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } } }, "put": { "operationId": "customers_update", "description": "Update a customer\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`, `crm_all_customer_records`, `crm_own_customer_records`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } } }, "patch": { "operationId": "customers_partial_update", "description": "Partially update a customer\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`, `crm_all_customer_records`, `crm_own_customer_records`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } } } }, "/customers/{id}/account_status": { "get": { "operationId": "customers_account_status_retrieve", "summary": "Account Status", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/add_child": { "post": { "operationId": "customers_add_child_create", "summary": "Add Child", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddChildRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AddChildRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AddChildRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- Caller cannot be a customer who is a child.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/change_email": { "post": { "operationId": "customers_change_email_create", "summary": "Change Email", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/change_password": { "post": { "operationId": "customers_change_password_create", "summary": "Change Password", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/icalendar_links": { "get": { "operationId": "customers_icalendar_links_retrieve", "summary": "Icalendar Links", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ICalendarLinks" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ICalendarLinks" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/missing_requisites": { "get": { "operationId": "customers_missing_requisites_retrieve", "description": "Return incomplete forms and unsigned waivers required for the customer's alive memberships and upcoming event/course registrations. Optionally pass `hypothetical_offering_type` and/or `hypothetical_membership` (comma-separated IDs) to additionally include forms and waivers that would be required for a prospective offering type registration or membership purchase.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List Missing Requisites", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "hypothetical_membership", "schema": { "type": "string" }, "description": "Membership `id`(s) to include as a hypothetical purchase. Comma-separated." }, { "in": "query", "name": "hypothetical_offering_type", "schema": { "type": "string" }, "description": "Offering type `id`(s) to include as a hypothetical registration. Comma-separated." }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MissingRequisites" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MissingRequisites" } } }, "description": "" } } } }, "/customers/{id}/notification_preferences": { "get": { "operationId": "customers_notification_preferences_retrieve", "summary": "Notification Preferences", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationPreferenceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/NotificationPreferenceRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/notification_preferences/{id_or_type}": { "patch": { "operationId": "customers_notification_preferences_partial_update", "description": "Change the customer's email, SMS or push switch for one type of notification. `push_enabled` is accepted only while push notification preferences are on for the provider; while they are off it is ignored.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update Notification Preference", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true }, { "in": "path", "name": "id_or_type", "schema": { "type": "string" }, "description": "The `id` of a row from `notification_preferences`, or, for a push type while push notification preferences are on, its `type`. A push row has no `id` until the customer first changes it, so write it by `type`; the first change stores it.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedNotificationPreferenceUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedNotificationPreferenceUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedNotificationPreferenceUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NotificationPreferenceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/NotificationPreferenceRead" } } }, "description": "" } } } }, "/customers/{id}/participation": { "put": { "operationId": "customers_participation_update", "summary": "Participation", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ParticipationUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ParticipationUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ParticipationUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Caller must be be a customer who is a parent.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/resend_email_confirmation": { "post": { "operationId": "customers_resend_email_confirmation_create", "summary": "Resend Email Confirmation", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResendEmailConfirmationSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ResendEmailConfirmationSuccess" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/resend_invite": { "post": { "operationId": "customers_resend_invite_create", "description": "Resend an invitation email to an unclaimed customer.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Resend Invite", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } } } }, "/customers/{id}/send_missing_forms_email": { "post": { "operationId": "customers_send_missing_forms_email_create", "description": "Send a notification email to the customer listing their missing forms and unsigned waivers across upcoming event registrations and current memberships.\n\n\n#### Providers\n- The following condition must be met: is_feature_on\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Send Missing Forms Email", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendMissingFormsEmailResult" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SendMissingFormsEmailResult" } } }, "description": "" } } } }, "/customers/{id}/sms_account": { "get": { "operationId": "customers_sms_account_retrieve", "summary": "Sms Account", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "country", "schema": { "type": "string", "minLength": 1 }, "required": true }, { "in": "query", "name": "enabled", "schema": { "type": "boolean" }, "required": true }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true }, { "in": "query", "name": "phone_number", "schema": { "type": "string", "minLength": 1 }, "required": true } ], "tags": [ "Customers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SMSAccountRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "customers_sms_account_update", "summary": "Sms Account", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSAccountUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SMSAccountUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SMSAccountUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SMSAccountRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/customers/{id}/sms_account/verify": { "post": { "operationId": "customers_sms_account_verify_create", "description": "Verify a customer's SMS account.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The caller must be the customer targeted with the request, and that customer must be claimed.\nCaller can view themselves or anyone in their family.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Verify SMS Account", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider customer profile.", "required": true } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSAccountVerifyParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SMSAccountVerifyParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SMSAccountVerifyParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSAccountVerifySuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SMSAccountVerifySuccess" } } }, "description": "" } } } }, "/customers/bulk_delete": { "post": { "operationId": "customers_bulk_delete_create", "summary": "Bulk Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Customers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkDeleteCustomersRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BulkDeleteCustomersRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BulkDeleteCustomersRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkAction" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/discount_code_applicabilities": { "get": { "operationId": "discount_code_applicabilities_list", "description": "List all Discount Code Applicability objects.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "discount_code", "schema": { "type": "integer" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Discount Code Applicabilities" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeApplicabilityReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeApplicabilityReadList" } } }, "description": "" } } }, "post": { "operationId": "discount_code_applicabilities_create", "description": "Create a new Discount Code Applicability object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Discount Code Applicabilities" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } } }, "description": "" } } } }, "/discount_code_applicabilities/{id}": { "get": { "operationId": "discount_code_applicabilities_retrieve", "description": "Retrieve details of a specific Discount Code Applicability object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code applicable object.", "required": true } ], "tags": [ "Discount Code Applicabilities" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } } }, "description": "" } } }, "put": { "operationId": "discount_code_applicabilities_update", "description": "Update details of a specific Discount Code Applicability object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code applicable object.", "required": true } ], "tags": [ "Discount Code Applicabilities" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } } }, "description": "" } } }, "patch": { "operationId": "discount_code_applicabilities_partial_update", "description": "Partially update details of a specific Discount Code Applicability object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code applicable object.", "required": true } ], "tags": [ "Discount Code Applicabilities" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedDiscountCodeApplicabilityWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedDiscountCodeApplicabilityWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedDiscountCodeApplicabilityWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } } }, "description": "" } } }, "delete": { "operationId": "discount_code_applicabilities_destroy", "description": "Delete a specific Discount Code Applicability object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code applicable object.", "required": true } ], "tags": [ "Discount Code Applicabilities" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/discount_code_groups": { "get": { "operationId": "discount_code_groups_list", "description": "List all Discount Code Groups.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Discount Code Groups" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeGroupReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeGroupReadList" } } }, "description": "" } } } }, "/discount_codes": { "get": { "operationId": "discount_codes_list", "description": "List all Discount Code objects.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "group", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "query", "schema": { "type": "string" } }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "38872a1c51cea637", "enum": [ "active", "inactive" ] }, "description": "* `active` - active\n* `inactive` - inactive" } ], "tags": [ "Discount Codes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedDiscountCodeReadList" } } }, "description": "" } } }, "post": { "operationId": "discount_codes_create", "description": "Create a new Discount Code object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } } }, "/discount_codes/{id}": { "get": { "operationId": "discount_codes_retrieve", "description": "Retrieve details of a specific Discount Code object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code.", "required": true } ], "tags": [ "Discount Codes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } }, "put": { "operationId": "discount_codes_update", "description": "Update details of a specific Discount Code object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code.", "required": true } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountUpdateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountUpdateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountUpdateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } }, "patch": { "operationId": "discount_codes_partial_update", "description": "Partially update details of a specific Discount Code object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this discount code.", "required": true } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedDiscountUpdateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedDiscountUpdateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedDiscountUpdateUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } } }, "/discount_codes/activate_all": { "post": { "operationId": "discount_codes_activate_all_create", "description": "Activate all currently inactive Discount Codes.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Activate All Discount Codes", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } } }, "/discount_codes/bulk_generate": { "post": { "operationId": "discount_codes_bulk_generate_create", "description": "Generate multiple Discount Codes in bulk.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Bulk Generate Discount Codes", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } } }, "/discount_codes/deactivate_all": { "post": { "operationId": "discount_codes_deactivate_all_create", "description": "Deactivate all currently active Discount Codes.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Deactivate All Discount Codes", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Discount Codes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/DiscountCodeRead" } } }, "description": "" } } } }, "/embed/bootstrap": { "get": { "operationId": "embed_bootstrap_retrieve", "summary": "Retrieve Bootstrap Data", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "provider", "schema": { "type": "integer" }, "description": "The provider's ID.", "required": true } ], "tags": [ "Embed Widgets" ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedBootstrap" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmbedBootstrap" } } }, "description": "" } } } }, "/embed_widgets": { "get": { "operationId": "embed_widgets_list", "description": "List the provider's saved embed widgets, newest first.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Embed Widgets" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedEmbedWidgetReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedEmbedWidgetReadList" } } }, "description": "" } } }, "post": { "operationId": "embed_widgets_create", "description": "Save a new embed widget. The config is validated for its type.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Embed Widgets" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EmbedWidgetCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EmbedWidgetCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } } }, "description": "" } } } }, "/embed_widgets/{id}": { "get": { "operationId": "embed_widgets_retrieve", "description": "Retrieve a saved embed widget.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this embed widget.", "required": true } ], "tags": [ "Embed Widgets" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } } }, "description": "" } } }, "put": { "operationId": "embed_widgets_update", "description": "Update a saved embed widget's name and config.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this embed widget.", "required": true } ], "tags": [ "Embed Widgets" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EmbedWidgetUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EmbedWidgetUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } } }, "description": "" } } }, "patch": { "operationId": "embed_widgets_partial_update", "description": "Update a saved embed widget's name or config.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this embed widget.", "required": true } ], "tags": [ "Embed Widgets" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedEmbedWidgetUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedEmbedWidgetUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedEmbedWidgetUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmbedWidgetRead" } } }, "description": "" } } }, "delete": { "operationId": "embed_widgets_destroy", "description": "Delete a saved embed widget.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_feature_on\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this embed widget.", "required": true } ], "tags": [ "Embed Widgets" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/events": { "get": { "operationId": "events_list", "description": "Return a list of events.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active events that are publicly listed.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "active_customer", "schema": { "type": "integer" }, "description": "Set the customer who will parameterize any customer-specific fields in the response, such as `active_registration_timeline`" }, { "in": "query", "name": "applicable_to_recurring_reservation", "schema": { "type": "integer" }, "description": "Only include events that match a recurring reservation's criteria. Format a reservation's unique `id`." }, { "in": "query", "name": "category", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include events for particular categories. Format as comma-separate offering type category id values.", "explode": false, "style": "form" }, { "in": "query", "name": "ends_at_gte", "schema": { "type": "string", "format": "date-time", "nullable": true }, "description": "Only include events that end on or after a given timestamp." }, { "in": "query", "name": "ends_at_lte", "schema": { "type": "string", "format": "date-time", "nullable": true }, "description": "Only include events that end on or before a given timestamp." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include particular events. Format as comma-separated event `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "instructors", "schema": { "type": "integer" }, "description": "Only include events taught by particular instructors. Format as comma-separated instructor `id` values, or use `me` to indicate events taught by yourself." }, { "in": "query", "name": "local_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include events that start on or after a given timestamp in the venue's local timezone." }, { "in": "query", "name": "local_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include events that start on or before a given timestamp in the venue's local timezone.." }, { "in": "query", "name": "max_allowed_age", "schema": { "type": "integer" }, "description": "Only include events with a maximum allowed age of a given values in years." }, { "in": "query", "name": "min_allowed_age", "schema": { "type": "integer" }, "description": "Only include events with a minimum allowed age of a given values in years." }, { "in": "query", "name": "occupancy_status", "schema": { "type": "array", "items": { "enum": [ "full", "has_registrations", "has_waitlist", "empty", "not_full" ], "type": "string", "description": "* `full` - full\n* `has_registrations` - has_registrations\n* `has_waitlist` - has_waitlist\n* `empty` - empty\n* `not_full` - not_full", "x-spec-enum-id": "936b3329b649d00c" } }, "description": "Only include events with at least one of the following occupancy statuses.", "explode": false, "style": "form" }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include events for particular offering types. Format as comma-separated offering type `id` values.", "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 250 } }, { "in": "query", "name": "registration_timelines", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include events associated with particular registration timelines. Format as comma-separated timeline `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-end", "-start", "end", "start" ] } }, "description": "Ordering\n\n* `start` - Start\n* `-start` - Start (descending)\n* `end` - End\n* `-end` - End (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "start_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Deprecated. Use `starts_at_gte`." }, { "in": "query", "name": "start_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Deprecated. Use `starts_at_lte`." }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include events that start on or after a given timestamp." }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include events that start on or before a given timestamp." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "active", "cancelled" ] } }, "description": "Only include events with a particular status.", "explode": false, "style": "form" }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include events at particular venues. Format as comma-separated venue `id` values.", "explode": false, "style": "form" } ], "tags": [ "Events" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedEventReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedEventReadList" } } }, "description": "" } } }, "post": { "operationId": "events_create", "description": "Create an event.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRead" } } }, "description": "" } } } }, "/events/{id}": { "get": { "operationId": "events_retrieve", "description": "Return an event.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.\nCaller can view active events that are publicly listed.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRead" } } }, "description": "" } } }, "put": { "operationId": "events_update", "description": "Update an event.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRead" } } }, "description": "" } } }, "patch": { "operationId": "events_partial_update", "description": "Partially update an event.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedEventUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedEventUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedEventUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRead" } } }, "description": "" } } } }, "/events/{id}/confirm_attendance": { "post": { "operationId": "events_confirm_attendance_create", "description": "Confirm a customer's attendance at an event.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`, `pos`.\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Confirm Attendance", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ConfirmAttendanceParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ConfirmAttendanceParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ConfirmAttendanceParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } } }, "description": "" } } } }, "/events/{id}/generate_online_access_link": { "post": { "operationId": "events_generate_online_access_link_create", "description": "Generate a customer's access link for an online event.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Generate Online Access Link", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateOnlineAccessLinkParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GenerateOnlineAccessLinkParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GenerateOnlineAccessLinkParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GenerateOnlineAccessLinkRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GenerateOnlineAccessLinkRead" } } }, "description": "" } } } }, "/events/{id}/initiate_purchase": { "post": { "operationId": "events_initiate_purchase_create", "description": "Initiate a purchase for a customer to register for an event.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Initiate Purchase", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitiateEventPurchaseParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InitiateEventPurchaseParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InitiateEventPurchaseParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitiateEventPurchaseRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InitiateEventPurchaseRead" } } }, "description": "" } } } }, "/events/{id}/join_waitlist": { "post": { "operationId": "events_join_waitlist_create", "description": "Add a customer to the waitlist for an event.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Join Waitlist", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventJoinWaitlistRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventJoinWaitlistRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventJoinWaitlistRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaitlistSpotRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaitlistSpotRead" } } }, "description": "" } } } }, "/events/{id}/leave_waitlist": { "post": { "operationId": "events_leave_waitlist_create", "description": "Remove a customer from the waitlist for an event.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Leave Waitlist", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaveWaitlistParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LeaveWaitlistParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LeaveWaitlistParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LeaveWaitlistParams" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LeaveWaitlistParams" } } }, "description": "" } } } }, "/events/{id}/mark_no_show": { "post": { "operationId": "events_mark_no_show_create", "description": "Mark a customer's attendance at an event as a no-show.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`, `pos`.\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Mark No-show", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/NoshowAttendanceParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/NoshowAttendanceParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/NoshowAttendanceParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/AttendanceRead" } } }, "description": "" } } } }, "/events/{id}/register": { "post": { "operationId": "events_register_create", "summary": "Register", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRegisterParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventRegisterParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventRegisterParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRegisterSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRegisterSuccess" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`, `attendances`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/events/{id}/registration_timelines/resolved": { "get": { "operationId": "events_registration_timelines_resolved_retrieve", "description": "Return a list of resolved registration timelines for an event, including calculated timestamp fields such as late_cancels_after, registration_opens_at, and registration_closes_at.\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`, `attendances`, `instructor_manage_events`, `instructor_attendances`, `developer`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Resolved Registration Timelines", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ResolvedEventRegistrationTimeline" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ResolvedEventRegistrationTimeline" } } }, "description": "" } } } }, "/events/{id}/unregister": { "post": { "operationId": "events_unregister_create", "description": "Remove a customer from an event.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`, `manage_events`, `attendances`.\n- The calling provider user must be an active instructor assigned to the event.\n- Must have one of the following permissions: `instructor_manage_events`, `instructor_attendances`.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active events that they or their family members are attending or waitlisted for, as well as any events that are visible on their registration timelines.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Unregister", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this event.", "required": true } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnregisterParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UnregisterParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UnregisterParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UnregisterRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/UnregisterRead" } } }, "description": "" } } } }, "/events/bulk_cancel": { "post": { "operationId": "events_bulk_cancel_create", "description": "Cancel all events for all instructors on a specified set of dates.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Bulk Cancel", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventBulkCancelParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventBulkCancelParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventBulkCancelParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkAction" } } }, "description": "" } } } }, "/events/bulk_uncancel": { "post": { "operationId": "events_bulk_uncancel_create", "description": "Uncancel (reinstate) previously cancelled events matching a specified filter. Note: if event was tied to a deleted timeslot, the timeslot will not be recovered automatically.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Bulk Uncancel", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventBulkUncancelParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventBulkUncancelParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventBulkUncancelParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BulkAction" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BulkAction" } } }, "description": "" } } } }, "/events/external_id:{external_id}": { "put": { "operationId": "events_external_id:_update", "description": "Create or update an event using an external ID.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create or Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "path", "name": "external_id", "schema": { "type": "string", "pattern": "^[A-Za-z0-9-_]+$" }, "required": true }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Events" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/EventCreateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EventRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EventRead" } } }, "description": "" } } } }, "/external_calendars/accounts": { "get": { "operationId": "external_calendars_accounts_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Calendar Source Accounts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCalendarSourceAccountReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCalendarSourceAccountReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/external_calendars/accounts/{id}": { "get": { "operationId": "external_calendars_accounts_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Calendar Source Account.", "required": true } ], "tags": [ "Calendar Source Accounts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "external_calendars_accounts_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Calendar Source Account.", "required": true } ], "tags": [ "Calendar Source Accounts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/external_calendars/accounts/{id}/calendars": { "get": { "operationId": "external_calendars_accounts_calendars_retrieve", "description": "This endpoint lists all calendars linked to the user's account.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List all calendars.", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Calendar Source Account.", "required": true } ], "tags": [ "Calendar Source Accounts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } } }, "description": "" } } } }, "/external_calendars/accounts/{id}/calendars/{base64_calendar_id}": { "get": { "operationId": "external_calendars_accounts_calendars_retrieve_2", "description": "This endpoint retrieves details of a specific calendar linked to the user's account.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve a specific calendar.", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "path", "name": "base64_calendar_id", "schema": { "type": "string" }, "required": true }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Calendar Source Account.", "required": true } ], "tags": [ "Calendar Source Accounts" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } } }, "description": "" } } } }, "/external_calendars/accounts/oauth2/initiate": { "post": { "operationId": "external_calendars_accounts_oauth2_initiate_create", "description": "Redirecting to this URL will initiate a flow allowing a user to link their Google or Microsoft account with their TeamUp provider user account. The user will be sent to Google / Microsoft's website where they will choose their account and consent to use of their personal data. After the user consents and the auth flow is complete, the user will be directed back.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "URL to authorize use of your Google / Microsoft calendars.", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Calendar Source Accounts" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountOAuthFlowWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountOAuthFlowWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountOAuthFlowWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountOAuthFlowRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CalendarSourceAccountOAuthFlowRead" } } }, "description": "" } } } }, "/external_calendars/events": { "get": { "operationId": "external_calendars_events_list", "description": "This endpoint allows users to query and list events from their linked calendars.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "happens_after", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "happens_before", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "instructor_id", "schema": { "type": "number", "format": "double" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Calendar Events" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedCalendarSourceEventReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedCalendarSourceEventReadList" } } }, "description": "" } } } }, "/external_calendars/staff_calendar_settings": { "get": { "operationId": "external_calendars_staff_calendar_settings_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Calendar Sync Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProviderUserReciprocalCalendarSettingsReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProviderUserReciprocalCalendarSettingsReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "external_calendars_staff_calendar_settings_create", "description": "This endpoint allows provider users to create settings for syncing their calendars.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Calendar Sync Settings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } } }, "description": "" } } } }, "/external_calendars/staff_calendar_settings/{id}": { "get": { "operationId": "external_calendars_staff_calendar_settings_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider user reciprocal calendar settings.", "required": true } ], "tags": [ "Calendar Sync Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "external_calendars_staff_calendar_settings_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider user reciprocal calendar settings.", "required": true } ], "tags": [ "Calendar Sync Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "external_calendars_staff_calendar_settings_partial_update", "description": "This endpoint allows provider users to update their existing calendar sync settings.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider user reciprocal calendar settings.", "required": true } ], "tags": [ "Calendar Sync Settings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProviderUserReciprocalCalendarSettingsUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProviderUserReciprocalCalendarSettingsUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProviderUserReciprocalCalendarSettingsUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } } }, "description": "" } } }, "delete": { "operationId": "external_calendars_staff_calendar_settings_destroy", "description": "This endpoint allows provider users to delete their existing calendar sync settings.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider user reciprocal calendar settings.", "required": true } ], "tags": [ "Calendar Sync Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/family_invites": { "get": { "operationId": "family_invites_list", "description": "List family invites.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "claimed", "schema": { "type": "boolean" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Family Invites" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedFamilyInviteReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedFamilyInviteReadList" } } }, "description": "" } } }, "post": { "operationId": "family_invites_create", "description": "Create family invite.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Family Invites" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyInviteCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/FamilyInviteCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FamilyInviteCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FamilyInviteRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/FamilyInviteRead" } } }, "description": "" } } } }, "/feature_flags/{id}": { "get": { "operationId": "feature_flags_retrieve", "description": "Retrieve a feature flag's definition.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve Feature Flag", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Feature Flag.", "required": true } ], "tags": [ "Feature Flags" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeatureFlagRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/FeatureFlagRead" } } }, "description": "" } } } }, "/feature_flags/{id}/choice": { "put": { "operationId": "feature_flags_choice_update", "description": "Update a provider or user's choice for a feature\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update Choice", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Feature Flag.", "required": true } ], "tags": [ "Feature Flags" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } } }, "/feature_flags/{id}/status": { "get": { "operationId": "feature_flags_status_retrieve", "description": "Check whether a feature flag is active.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Check Status", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Feature Flag.", "required": true } ], "tags": [ "Feature Flags" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeatureFlagStatusRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/FeatureFlagStatusRead" } } }, "description": "" } } } }, "/fees_calculator": { "post": { "operationId": "fees_calculator_create", "description": "Calculate fees for a single transaction based on the provided parameters.", "summary": "Calculate Fees", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Fees Calculator" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeesCalculatorParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/FeesCalculatorParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FeesCalculatorParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CalculatedFee" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CalculatedFee" } } }, "description": "" } } } }, "/fees_calculator/bulk": { "post": { "operationId": "fees_calculator_bulk_create", "description": "Calculate fees for multiple transactions in bulk based on the provided parameters.", "summary": "Bulk Calculate Fees", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Fees Calculator" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeesBulkCalculatorParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/FeesBulkCalculatorParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/FeesBulkCalculatorParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/FeesBulkCalculatorResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/FeesBulkCalculatorResponse" } } }, "description": "" } } } }, "/gift_cards/{id}": { "get": { "operationId": "gift_cards_retrieve", "description": "Get details for a specific gift card.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this gift card.", "required": true } ], "tags": [ "Gift Cards" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } } }, "description": "" } } } }, "/gift_cards/{id}/deliver": { "post": { "operationId": "gift_cards_deliver_create", "description": "Deliver a gift card redemption email.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Deliver Gift Card", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this gift card.", "required": true } ], "tags": [ "Gift Cards" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } } }, "description": "" } } } }, "/gift_cards/{id}/redeem": { "post": { "operationId": "gift_cards_redeem_create", "description": "Redeem a gift card.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Redeem Gift Card", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this gift card.", "required": true } ], "tags": [ "Gift Cards" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GiftCardRead" } } }, "description": "" } } } }, "/gift_cards/config": { "get": { "operationId": "gift_cards_config_retrieve", "description": "Get the GiftCardConfig for the provider.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Gift Card Config", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Gift Cards" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardConfigRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GiftCardConfigRead" } } }, "description": "" } } }, "patch": { "operationId": "gift_cards_config_partial_update", "summary": "Update Config", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Gift Cards" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedGiftCardConfigWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedGiftCardConfigWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedGiftCardConfigWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardConfigRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GiftCardConfigRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/gift_cards/config/metadata": { "get": { "operationId": "gift_cards_config_metadata_retrieve", "description": "Get metadata about the gift card redemption email template.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`, `pos`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Gift Card Metadata", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Gift Cards" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } }, "application/xml": { "schema": { "type": "object", "properties": { "template_variables": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "description": { "type": "string" }, "sample_value": { "type": "string" } } } }, "multiple_messages_allowed": { "type": "boolean" } } } } }, "description": "" } } } }, "/images": { "post": { "operationId": "images_create", "description": "Upload a new image and associate it with the current user and profile.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Images" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateImageRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CreateImageRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateImageRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadImage" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ReadImage" } } }, "description": "" } } } }, "/images/{id}": { "get": { "operationId": "images_retrieve", "description": "Fetch details of a specific image by its ID.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this image.", "required": true } ], "tags": [ "Images" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReadImage" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ReadImage" } } }, "description": "" } } } }, "/instructor_pay_rates": { "get": { "operationId": "instructor_pay_rates_list", "description": "List all Instructor Pay Rates with optional filtering.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "instructor", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "archived" ], "type": "string", "description": "* `active` - active\n* `archived` - archived", "x-spec-enum-id": "4a823d7dfdb80c49" } }, "explode": false, "style": "form" } ], "tags": [ "Instructor Pay Rates" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedInstructorPayRateReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedInstructorPayRateReadList" } } }, "description": "" } } }, "post": { "operationId": "instructor_pay_rates_create", "description": "Create a new Instructor Pay Rate with associated session criteria and tiered rates.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Instructor Pay Rates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InstructorPayRateCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InstructorPayRateCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } } }, "description": "" } } } }, "/instructor_pay_rates/{id}": { "get": { "operationId": "instructor_pay_rates_retrieve", "description": "Retrieve details of a specific Instructor Pay Rate.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor pay rate.", "required": true } ], "tags": [ "Instructor Pay Rates" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } } }, "description": "" } } }, "put": { "operationId": "instructor_pay_rates_update", "description": "Update an existing Instructor Pay Rate.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor pay rate.", "required": true } ], "tags": [ "Instructor Pay Rates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InstructorPayRateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InstructorPayRateUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } } }, "description": "" } } }, "patch": { "operationId": "instructor_pay_rates_partial_update", "description": "Partially update an existing Instructor Pay Rate.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor pay rate.", "required": true } ], "tags": [ "Instructor Pay Rates" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedInstructorPayRateUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedInstructorPayRateUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedInstructorPayRateUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InstructorPayRateRead" } } }, "description": "" } } } }, "/instructors": { "get": { "operationId": "instructors_list", "description": "Return a list of instructors.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "content_collection", "schema": { "type": "number" } }, { "in": "query", "name": "events", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "offering_type", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "query", "schema": { "type": "string" } } ], "tags": [ "Instructors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedInstructorList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedInstructorList" } } }, "description": "" } } }, "post": { "operationId": "instructors_create", "description": "Create an instructor.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Instructors" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InstructorCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InstructorCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instructor" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Instructor" } } }, "description": "" } } } }, "/instructors/{id}": { "get": { "operationId": "instructors_retrieve", "description": "Return an instructor.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor.", "required": true } ], "tags": [ "Instructors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instructor" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Instructor" } } }, "description": "" } } } }, "/instructors/{id}/availability": { "get": { "operationId": "instructors_availability_retrieve", "description": "Retrieve the availability of an instructor.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The caller must be the instructor whose blocked times or availability is being accessed.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Availability", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor.", "required": true } ], "tags": [ "Instructors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instructor" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Instructor" } } }, "description": "" } } } }, "/instructors/{id}/blocked_times": { "get": { "operationId": "instructors_blocked_times_retrieve", "description": "Manage an instructor's blocked times (from appointment availability).\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The caller must be the instructor whose blocked times or availability is being accessed.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Blocked Times", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor.", "required": true } ], "tags": [ "Instructors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instructor" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Instructor" } } }, "description": "" } } }, "patch": { "operationId": "instructors_blocked_times_partial_update", "description": "Manage an instructor's blocked times (from appointment availability).\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- The caller must be the instructor whose blocked times or availability is being accessed.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Blocked Times", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor.", "required": true } ], "tags": [ "Instructors" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedInstructorRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedInstructorRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedInstructorRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Instructor" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Instructor" } } }, "description": "" } } } }, "/instructors/{id}/pay_rate_coverage": { "get": { "operationId": "instructors_pay_rate_coverage_retrieve", "description": "View an instructor's pay rates, broken down by venue and offering type. An instructor can be assigned a different pay rate for each combination of venue and offering type.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Pay Rate Coverage", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this instructor.", "required": true } ], "tags": [ "Instructors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorPayRateCoverage" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InstructorPayRateCoverage" } } }, "description": "" } } } }, "/integrations/": { "get": { "operationId": "integrations_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Integrations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "count": { "content": { "application/json": { "schema": { "type": "integer" } }, "application/xml": { "schema": { "type": "integer" } } }, "description": "" }, "results": { "content": { "application/json": { "schema": { "type": "array", "items": { "oneOf": [ { "properties": { "email": { "type": "string" }, "enabled": { "type": "boolean" }, "type": { "enum": [ "zoom" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Zoom" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "kisi" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Kisi" }, { "properties": { "application_id": { "type": [ "integer", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "zapier" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "Zapier" }, { "properties": { "email": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "mailchimp" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Mailchimp" }, { "properties": { "enabled": { "type": "boolean" }, "has_recent_reservations": { "type": "boolean" }, "locations": { "description": "A list of [id, name] pairs.", "items": { "items": { "type": [ "number", "string" ] }, "type": "array" }, "type": "array" }, "partner_id": { "type": "number" }, "type": { "enum": [ "class_pass" ], "type": "string" } }, "required": [ "type", "enabled", "has_recent_reservations", "partner_id", "locations" ], "title": "ClassPass" }, { "properties": { "email": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "constant_contact" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Constant Contact" }, { "description": "This integration is only available to businesses in Great Britain.", "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "open_active" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "OpenActive" }, { "description": "This integration is only available to businesses in Great Britain.", "properties": { "application_id": { "type": [ "number", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "move_gb" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "MoveGB" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "gympass" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Gympass" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "description": "google_analytics", "enum": [ "google_analytics" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Gooogle Analytics" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "teamup_api" ], "type": "string" } } } ], "type": "object" } } }, "application/xml": { "schema": { "type": "array", "items": { "oneOf": [ { "properties": { "email": { "type": "string" }, "enabled": { "type": "boolean" }, "type": { "enum": [ "zoom" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Zoom" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "kisi" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Kisi" }, { "properties": { "application_id": { "type": [ "integer", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "zapier" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "Zapier" }, { "properties": { "email": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "mailchimp" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Mailchimp" }, { "properties": { "enabled": { "type": "boolean" }, "has_recent_reservations": { "type": "boolean" }, "locations": { "description": "A list of [id, name] pairs.", "items": { "items": { "type": [ "number", "string" ] }, "type": "array" }, "type": "array" }, "partner_id": { "type": "number" }, "type": { "enum": [ "class_pass" ], "type": "string" } }, "required": [ "type", "enabled", "has_recent_reservations", "partner_id", "locations" ], "title": "ClassPass" }, { "properties": { "email": { "type": [ "string", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "constant_contact" ], "type": "string" } }, "required": [ "type", "enabled", "email" ], "title": "Constant Contact" }, { "description": "This integration is only available to businesses in Great Britain.", "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "open_active" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "OpenActive" }, { "description": "This integration is only available to businesses in Great Britain.", "properties": { "application_id": { "type": [ "number", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "move_gb" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "MoveGB" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "gympass" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Gympass" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "description": "google_analytics", "enum": [ "google_analytics" ], "type": "string" } }, "required": [ "type", "enabled" ], "title": "Gooogle Analytics" }, { "properties": { "enabled": { "type": "boolean" }, "type": { "enum": [ "teamup_api" ], "type": "string" } } } ], "type": "object" } } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/kisi/config": { "get": { "operationId": "integrations_kisi_config_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Kisi Config" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/KisiConfig" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "integrations_kisi_config_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Kisi Config" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiConfigRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/KisiConfigRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/KisiConfigRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/KisiConfig" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/kisi/groups": { "get": { "operationId": "integrations_kisi_groups_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Kisi Groups" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedKisiGroupList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedKisiGroupList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/kisi/groups/{id}": { "get": { "operationId": "integrations_kisi_groups_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this kisi group.", "required": true } ], "tags": [ "Kisi Groups" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiGroup" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/KisiGroup" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "put": { "operationId": "integrations_kisi_groups_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this kisi group.", "required": true } ], "tags": [ "Kisi Groups" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiGroupRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/KisiGroupRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/KisiGroupRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiGroup" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/KisiGroup" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "integrations_kisi_groups_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this kisi group.", "required": true } ], "tags": [ "Kisi Groups" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedKisiGroupRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedKisiGroupRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedKisiGroupRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KisiGroup" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/KisiGroup" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/marketing_suite/config": { "get": { "operationId": "integrations_marketing_suite_config_retrieve", "description": "Retrieve a provider's Marketing Suite integration config.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `marketing_suite`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Marketing Suite" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarketingSuiteConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MarketingSuiteConfig" } } }, "description": "" } } } }, "/integrations/marketing_suite/launch_sso": { "post": { "operationId": "integrations_marketing_suite_launch_sso_create", "description": "Ensure the requesting user is synced to Vendasta and return a single sign-on URL for the Marketing Suite.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `marketing_suite`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Launch SSO", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Marketing Suite" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MarketingSuiteLaunchSSO" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MarketingSuiteLaunchSSO" } } }, "description": "" } } } }, "/integrations/wellhub/venue_mappings": { "get": { "operationId": "integrations_wellhub_venue_mappings_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Wellhub" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedGympassVenueMappingReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedGympassVenueMappingReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "integrations_wellhub_venue_mappings_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Wellhub" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/wellhub/venue_mappings/{id}": { "put": { "operationId": "integrations_wellhub_venue_mappings_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this wellhub venue mapping.", "required": true } ], "tags": [ "Wellhub" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/GympassVenueMappingRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "integrations_wellhub_venue_mappings_destroy", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this wellhub venue mapping.", "required": true } ], "tags": [ "Wellhub" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/integrations/zoom/users": { "get": { "operationId": "integrations_zoom_users_list", "description": "Return a list of zoom users.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Zoom" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedZoomUserList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedZoomUserList" } } }, "description": "" } } } }, "/invoices": { "get": { "operationId": "invoices_list", "description": "Return a list of invoices.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer_membership", "schema": { "type": "number" }, "description": "Return only invoices associated with a specific customer membership." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-due_date", "-id", "due_date", "id" ] } }, "description": "Ordering\n\n* `due_date` - Due date\n* `-due_date` - Due date (descending)\n* `id` - Id\n* `-id` - Id (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "open", "paid", "pending_offline", "pending", "failed", "voided", "retrying", "retry_failed", "upcoming", "draft", "skipped" ] } }, "explode": false, "style": "form" }, { "in": "query", "name": "store_order", "schema": { "type": "number" }, "description": "Return only invoices associated with a specific store order." } ], "tags": [ "Invoices" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedInvoiceReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedInvoiceReadList" } } }, "description": "" } } } }, "/invoices/{id}": { "get": { "operationId": "invoices_retrieve", "description": "Retrieve an invoice.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `pos`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this invoice.", "required": true } ], "tags": [ "Invoices" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InvoiceRead" } } }, "description": "" } } } }, "/jobs/{id}": { "get": { "operationId": "jobs_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Jobs" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Job" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Job" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/joining_fees": { "get": { "operationId": "joining_fees_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Joining Fees" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedJoiningFeeList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedJoiningFeeList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/membership_categories": { "get": { "operationId": "membership_categories_list", "description": "Returns a list of all membership categories available.\n\n\n#### Providers (at least one required)\n- Any provider can perform this action.\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Membership Categories" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipCategoryReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipCategoryReadList" } } }, "description": "" } } }, "post": { "operationId": "membership_categories_create", "description": "Creates a new membership category and returns its details.\n\n\n#### Providers\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Categories" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipCategoryCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipCategoryCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipCategoryCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } } }, "description": "" } } } }, "/membership_categories/{id}": { "put": { "operationId": "membership_categories_update", "description": "Updates the details of an existing membership category.\n\n\n#### Providers\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership category.", "required": true } ], "tags": [ "Membership Categories" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipCategoryUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipCategoryUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipCategoryUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } } }, "description": "" } } }, "patch": { "operationId": "membership_categories_partial_update", "description": "Partially updates the details of an existing membership category.\n\n\n#### Providers\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership category.", "required": true } ], "tags": [ "Membership Categories" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMembershipCategoryUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMembershipCategoryUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMembershipCategoryUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipCategoryRead" } } }, "description": "" } } }, "delete": { "operationId": "membership_categories_destroy", "description": "Deletes a membership category. If the category is in use, a replacement category must be provided.\n\n\n#### Providers\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete a membership category with replacement", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership category.", "required": true } ], "tags": [ "Membership Categories" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/membership_categories/ordering": { "patch": { "operationId": "membership_categories_ordering_partial_update", "description": "Allows reordering of membership categories by specifying their IDs in the desired order. The request body should contain an array of category IDs in the new order. The server will update the `order` field of each category accordingly.\n\n\n#### Providers\n- Must have one of the following permissions: `customers`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Reorder", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Categories" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } } } }, "/membership_payment_plans": { "get": { "operationId": "membership_payment_plans_list", "description": "Returns a list of all membership payment plans available.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "membership", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Membership Payment Plans" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPaymentPlanReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPaymentPlanReadList" } } }, "description": "" } } }, "post": { "operationId": "membership_payment_plans_create", "description": "Creates a new membership payment plan and returns its details.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Payment Plans" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } } }, "description": "" } } } }, "/membership_payment_plans/{id}": { "get": { "operationId": "membership_payment_plans_retrieve", "description": "Returns the details of a specific membership payment plan.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this plan.", "required": true } ], "tags": [ "Membership Payment Plans" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } } }, "description": "" } } }, "put": { "operationId": "membership_payment_plans_update", "description": "Updates the details of an existing membership payment plan.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this plan.", "required": true } ], "tags": [ "Membership Payment Plans" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } } }, "description": "" } } }, "patch": { "operationId": "membership_payment_plans_partial_update", "description": "Partially updates the details of an existing membership payment plan.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this plan.", "required": true } ], "tags": [ "Membership Payment Plans" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPaymentPlanUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPaymentPlanUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPaymentPlanUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } } }, "description": "" } } } }, "/membership_penalty_systems": { "get": { "operationId": "membership_penalty_systems_list", "description": "Return a list of your membership penalty systems.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include systems linked to particular memberships Format as comma-separated membership `id` values.", "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "active", "archived" ] } }, "description": "Only include systems with a particular status.", "explode": false, "style": "form" } ], "tags": [ "Membership Penalty Systems" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPenaltySystemReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipPenaltySystemReadList" } } }, "description": "" } } }, "post": { "operationId": "membership_penalty_systems_create", "description": "Create an membership penalty system.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Penalty Systems" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } }, "description": "" } } } }, "/membership_penalty_systems/{id}": { "get": { "operationId": "membership_penalty_systems_retrieve", "description": "Return an membership penalty system.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership penalty system.", "required": true } ], "tags": [ "Membership Penalty Systems" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } }, "description": "" } } }, "put": { "operationId": "membership_penalty_systems_update", "description": "Update an membership penalty system.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership penalty system.", "required": true } ], "tags": [ "Membership Penalty Systems" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } }, "description": "" } } }, "patch": { "operationId": "membership_penalty_systems_partial_update", "description": "Partially update a membership penalty system.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership penalty system.", "required": true } ], "tags": [ "Membership Penalty Systems" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltySystemWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltySystemWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMembershipPenaltySystemWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } }, "description": "" } } } }, "/membership_penalty_systems/{id}/void_pending": { "post": { "operationId": "membership_penalty_systems_void_pending_create", "description": "Void any pending infractions for a membership penalty system.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Void Pending Infractions", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership penalty system.", "required": true } ], "tags": [ "Membership Penalty Systems" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } }, "description": "" } } } }, "/membership_registration_grants": { "get": { "operationId": "membership_registration_grants_list", "description": "Returns a list of membership registration grants based on applied filters.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "membership", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Membership Registration Grants" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipRegistrationGrantList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipRegistrationGrantList" } } }, "description": "" } } }, "post": { "operationId": "membership_registration_grants_create", "description": "Creates a new membership registration grant and returns the created object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Membership Registration Grants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } } }, "description": "" } } } }, "/membership_registration_grants/{id}": { "put": { "operationId": "membership_registration_grants_update", "description": "Updates an existing membership registration grant and returns the updated object.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership price.", "required": true } ], "tags": [ "Membership Registration Grants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrantRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } } }, "description": "" } } }, "patch": { "operationId": "membership_registration_grants_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership price.", "required": true } ], "tags": [ "Membership Registration Grants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedMembershipRegistrationGrantRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedMembershipRegistrationGrantRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedMembershipRegistrationGrantRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/membership_terms": { "get": { "operationId": "membership_terms_list", "description": "Returns a list of membership terms filtered by the applied criteria.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "membership", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Membership Terms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipTermsReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipTermsReadList" } } }, "description": "" } } } }, "/membership_terms/{id}": { "put": { "operationId": "membership_terms_update", "description": "Updates the membership terms for a specific instance.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership terms.", "required": true } ], "tags": [ "Membership Terms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipTermsUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipTermsUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipTermsUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipTermsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipTermsRead" } } }, "description": "" } } } }, "/memberships": { "get": { "operationId": "memberships_list", "description": "Retrieve a paginated list of memberships with optional filters.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "allow_repeat_purchases", "schema": { "type": "boolean" } }, { "in": "query", "name": "categories", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include memberships with particular categories. Format as category `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "for_sale", "schema": { "type": "boolean" } }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "forms", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include memberships related to particular forms. Format as form `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "is_dropin", "schema": { "type": "boolean" } }, { "in": "query", "name": "name_contains", "schema": { "type": "string" }, "description": "Only include memberships whose name contains the provided text." }, { "in": "query", "name": "offering_type", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "permits_registration_for_course", "schema": { "type": "integer" } }, { "in": "query", "name": "permits_registration_for_event", "schema": { "type": "integer" } }, { "in": "query", "name": "visible_to_customers", "schema": { "type": "boolean" } }, { "in": "query", "name": "waivers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include memberships related to particular waivers. Format as waiver `id` values.", "explode": false, "style": "form" } ], "tags": [ "Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedMembershipReadList" } } }, "description": "" } } }, "post": { "operationId": "memberships_create", "description": "Create a new membership with the provided details.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRead" } } }, "description": "" } } } }, "/memberships/{id}": { "get": { "operationId": "memberships_retrieve", "description": "Retrieve detailed information about a specific membership by its ID.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRead" } } }, "description": "" } } }, "put": { "operationId": "memberships_update", "description": "Update specific fields of an existing membership by its ID.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipRead" } } }, "description": "" } } } }, "/memberships/{id}/allotment": { "get": { "operationId": "memberships_allotment_retrieve", "description": "Retrieve the allotment settings for a specific membership.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Allotment", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipAllotmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/MembershipAllotmentRead" } } }, "description": "" } } }, "put": { "operationId": "memberships_allotment_update", "summary": "Update Allotment", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/MembershipAllotmentUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/MembershipAllotmentUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/MembershipAllotmentUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/memberships/{id}/initiate_purchase": { "post": { "operationId": "memberships_initiate_purchase_create", "summary": "Initiate Purchase", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitiatePurchaseParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InitiatePurchaseParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InitiatePurchaseParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InitiatePurchaseRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/InitiatePurchaseRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/memberships/{id}/share_with_families": { "post": { "operationId": "memberships_share_with_families_create", "description": "Share the membership with family members if it is shareable.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Share membership with families", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this membership.", "required": true } ], "tags": [ "Memberships" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/memberships/ordering": { "patch": { "operationId": "memberships_ordering_partial_update", "summary": "Ordering", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Memberships" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/offering_type_categories": { "get": { "operationId": "offering_type_categories_list", "description": "Return a list of offering type categories.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Offering Type Categories" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedOfferingTypeCategoryReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedOfferingTypeCategoryReadList" } } }, "description": "" } } } }, "/offering_types": { "get": { "operationId": "offering_types_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "availability_schedule_venue", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "default_appointment_default_venue", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "forms", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include fields for particular forms. Format as form `id` values.", "explode": false, "style": "form" }, { "in": "query", "name": "has_active_sessions", "schema": { "type": "boolean" } }, { "in": "query", "name": "has_sessions_at_venue", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "id", "schema": { "type": "array", "items": { "type": "string" } }, "explode": false, "style": "form" }, { "in": "query", "name": "instructor", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "is_age_restricted", "schema": { "type": "boolean" }, "description": "Include or exclude offering types that are age restricted." }, { "in": "query", "name": "name_contains", "schema": { "type": "string" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "schedule_type", "schema": { "type": "array", "items": { "enum": [ "class", "course", "appointment", "room_rental" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `appointment` - appointment\n* `room_rental` - room_rental", "x-spec-enum-id": "e91ec2f6aee040bf" } }, "explode": false, "style": "form" }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-name", "-order", "name", "order" ] } }, "description": "Ordering\n\n* `name` - Name\n* `-name` - Name (descending)\n* `order` - Order\n* `-order` - Order (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "38872a1c51cea637", "enum": [ "active", "archived" ] }, "description": "* `active` - active\n* `archived` - archived" }, { "in": "query", "name": "waivers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include offering types related to particular waivers. Format as waiver `id` values.", "explode": false, "style": "form" } ], "tags": [ "Offering Types" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedOfferingTypeReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedOfferingTypeReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." }, "post": { "operationId": "offering_types_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Offering Types" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/offering_types/{id}": { "get": { "operationId": "offering_types_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this offering type.", "required": true } ], "tags": [ "Offering Types" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." }, "put": { "operationId": "offering_types_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this offering type.", "required": true } ], "tags": [ "Offering Types" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfferingTypeUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OfferingTypeUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OfferingTypeUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "offering_types_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this offering type.", "required": true } ], "tags": [ "Offering Types" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOfferingTypeUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOfferingTypeUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOfferingTypeUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OfferingTypeRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/offering_types/ordering": { "patch": { "operationId": "offering_types_ordering_partial_update", "description": "Update the order of offering types. \n\n\n#### Providers\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Reorder", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Offering Types" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/payment_methods": { "get": { "operationId": "payment_methods_list", "description": "Return a list of payment methods.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Payment Methods" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentMethodReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentMethodReadList" } } }, "description": "" } } } }, "/payment_methods/{id}": { "patch": { "operationId": "payment_methods_partial_update", "description": "Update a payment method's customer-facing label.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this payment option.", "required": true } ], "tags": [ "Payment Methods" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedPaymentMethodUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedPaymentMethodUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedPaymentMethodUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaymentMethodRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaymentMethodRead" } } }, "description": "" } } }, "delete": { "operationId": "payment_methods_destroy", "description": "Delete a payment method.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this payment option.", "required": true } ], "tags": [ "Payment Methods" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/payment_processors": { "get": { "operationId": "payment_processors_list", "description": "Retrieve a list of payment processors available for the provider.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Payment Processors" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentProcessorList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentProcessorList" } } }, "description": "" } } } }, "/payment_subscriptions": { "get": { "operationId": "payment_subscriptions_list", "description": "Return a list of payment subscriptions.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Payment Subscriptions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentSubscriptionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPaymentSubscriptionList" } } }, "description": "" } } } }, "/platform/referral_code": { "get": { "operationId": "platform_referral_code_retrieve", "description": "Retrieve the requesting user's referral code, share URL, and stats.", "summary": "Retrieve Referral Code", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Platform Referrals" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PlatformReferralCode" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PlatformReferralCode" } } }, "description": "" } } } }, "/platform/referral_code/qr_code": { "get": { "operationId": "platform_referral_code_qr_code_retrieve", "description": "Download a QR code image that resolves to the requesting user's referral signup URL.", "summary": "Download Referral Code QR Code", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Platform Referrals" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "image/png": { "schema": { "type": "string", "format": "binary" } } }, "description": "" } } } }, "/platform/referral_program": { "get": { "operationId": "platform_referral_program_retrieve", "description": "Retrieve the platform's global referral program.", "summary": "Retrieve Referral Program", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Platform Referrals" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReferralProgram" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ReferralProgram" } } }, "description": "" } } } }, "/platform/referrals": { "get": { "operationId": "platform_referrals_list", "description": "List the provider signups attributed to the user's referral code.", "summary": "List Referrals", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Platform Referrals" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedReferralList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedReferralList" } } }, "description": "" } } } }, "/policies": { "get": { "operationId": "policies_list", "description": "List policies.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "active", "archived" ] } }, "explode": false, "style": "form" } ], "tags": [ "Policies" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyList" } } }, "description": "" } } } }, "/policies/{id}": { "get": { "operationId": "policies_retrieve", "description": "Return policies.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this policy.", "required": true } ], "tags": [ "Policies" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Policy" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/Policy" } } }, "description": "" } } } }, "/policy_agreements": { "get": { "operationId": "policy_agreements_list", "description": "Return a list of policy agreements.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "customer", "schema": { "type": "number" } }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-agreed_at", "agreed_at" ] } }, "description": "Ordering\n\n* `agreed_at` - Agreed at\n* `-agreed_at` - Agreed at (descending)", "explode": false, "style": "form" } ], "tags": [ "Policy Agreements" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyAgreementReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyAgreementReadList" } } }, "description": "" } } }, "post": { "operationId": "policy_agreements_create", "description": "Create a policy agreement.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Deny family children from creating policy agreements. All other customers (solo, parents/managers) are allowed.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Policy Agreements" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyAgreementCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PolicyAgreementCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PolicyAgreementCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PolicyAgreementRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PolicyAgreementRead" } } }, "description": "" } } } }, "/policy_versions": { "get": { "operationId": "policy_versions_list", "description": "List policy versions.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Policy Versions" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyVersionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPolicyVersionList" } } }, "description": "" } } } }, "/providers": { "get": { "operationId": "providers_list", "description": "Return a list of providers.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProviderReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProviderReadList" } } }, "description": "" } } } }, "/providers/{id}": { "get": { "operationId": "providers_retrieve", "description": "Retrieve a provider.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderRead" } } }, "description": "" } } } }, "/providers/{id}/account_status": { "get": { "operationId": "providers_account_status_retrieve", "description": "Get account status.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Account Status", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderAccountStatus" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderAccountStatus" } } }, "description": "" } } } }, "/providers/{id}/customer_referral_settings": { "get": { "operationId": "providers_customer_referral_settings_retrieve", "description": "Get customer referral settings.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Customer Referral Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerReferralSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerReferralSettingsRead" } } }, "description": "" } } } }, "/providers/{id}/email_settings": { "get": { "operationId": "providers_email_settings_retrieve", "description": "Get email settings.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Email Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/EmailSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/EmailSettingsRead" } } }, "description": "" } } } }, "/providers/{id}/entitlements": { "get": { "operationId": "providers_entitlements_retrieve", "description": "Get the feature entitlements (custom branded app, TeamUp Perform, marketing suite) for a provider. Each entitlement is a boolean by default. Expand any entitlement (e.g. `?expand=custom_branded_app`) to replace the boolean with a detail object exposing its lifecycle status (active / pending_cancellation / inactive) and the scheduled `cancels_at` date.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Entitlements", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderEntitlements" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderEntitlements" } } }, "description": "" } } } }, "/providers/{id}/platform_subscription": { "get": { "operationId": "providers_platform_subscription_retrieve", "description": "Get the current TeamUp platform subscription billing period for a provider.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get Platform Subscription", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderPlatformSubscription" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderPlatformSubscription" } } }, "description": "" } } } }, "/providers/{id}/register_customer": { "post": { "operationId": "providers_register_customer_create", "description": "Register a customer.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Register Customer", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationParamsRequest" } } }, "required": true }, "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/CustomerRegistrationRead" } } }, "description": "" } } } }, "/providers/{id}/registration_settings": { "get": { "operationId": "providers_registration_settings_retrieve", "description": "Get provider-wide registration settings, including the late cancellation note and the per-customer daily registration and waitlist limits.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Registration Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistrationSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RegistrationSettingsRead" } } }, "description": "" } } } }, "/providers/{id}/theme": { "get": { "operationId": "providers_theme_retrieve", "description": "Get or update the theme for a provider.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Theme", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderTheme" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderTheme" } } }, "description": "" } } }, "patch": { "operationId": "providers_theme_partial_update", "summary": "Update Theme", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProviderThemeRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProviderThemeRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProviderThemeRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderTheme" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderTheme" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `developer`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/providers/{id}/trial_status": { "get": { "operationId": "providers_trial_status_retrieve", "description": "Get trial status.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Trial Status", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this provider profile.", "required": true } ], "tags": [ "Providers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TrialStatus" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/TrialStatus" } } }, "description": "" } } } }, "/purchase_fees": { "get": { "operationId": "purchase_fees_list", "description": "Get the purchase fees (i.e. 'taxes and fees') for a provider.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Purchase Fees" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPurchaseFeeReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPurchaseFeeReadList" } } }, "description": "" } } } }, "/purchase_fees/{id}": { "get": { "operationId": "purchase_fees_retrieve", "description": "Get a purchase fee (i.e. 'tax or fee').\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this purchase fee.", "required": true } ], "tags": [ "Purchase Fees" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PurchaseFeeRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PurchaseFeeRead" } } }, "description": "" } } } }, "/push_notification_tokens": { "get": { "operationId": "push_notification_tokens_list", "description": "List push notification tokens.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Must be authenticated with credentials linked to a user.\n\n\n#### Unregistered Customers\n- Must be authenticated with credentials linked to a user.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Push Notification Tokens" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPushNotificationTokenReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPushNotificationTokenReadList" } } }, "description": "" } } }, "post": { "operationId": "push_notification_tokens_create", "description": "Register a push notification token. The token identifies a user's device and allows TeamUp's system to send it push notifications.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Must be authenticated with credentials linked to a user.\n\n\n#### Unregistered Customers\n- Must be authenticated with credentials linked to a user.", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Push Notification Tokens" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenRead" } } }, "description": "" } } } }, "/push_notification_tokens/{id}": { "patch": { "operationId": "push_notification_tokens_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this fcm token.", "required": true } ], "tags": [ "Push Notification Tokens" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedPushNotificationTokenUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedPushNotificationTokenUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedPushNotificationTokenUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PushNotificationTokenRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Must be authenticated with credentials linked to a user.\n\n\n#### Unregistered Customers\n- Must be authenticated with credentials linked to a user." }, "delete": { "operationId": "push_notification_tokens_destroy", "description": "Delete a push notification token.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Must be authenticated with credentials linked to a user.\n\n\n#### Unregistered Customers\n- Must be authenticated with credentials linked to a user.", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this fcm token.", "required": true } ], "tags": [ "Push Notification Tokens" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/push_notifications": { "get": { "operationId": "push_notifications_list", "description": "List the push notifications sent to the member at this provider in the last 90 days, newest first. A notification sent to several of the member's devices appears once. Deleted notifications and notifications from before the Notification Center do not appear. Refused while push notification preferences are off for the provider.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers (at least one required)\n- Must be authenticated with credentials linked to a user.\n- The following condition must be met: is_feature_on\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "is_read", "schema": { "type": "boolean" }, "description": "Only return read (`true`) or unread (`false`) notifications. The `count` of `is_read=false` is the unread count." }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Push Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedPushNotificationReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedPushNotificationReadList" } } }, "description": "" } } } }, "/push_notifications/{id}": { "delete": { "operationId": "push_notifications_destroy", "description": "Delete a notification from the member's list, on every device. It cannot be undone. Refused while push notification preferences are off for the provider.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers (at least one required)\n- Must be authenticated with credentials linked to a user.\n- The following condition must be met: is_feature_on\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this push notification record.", "required": true } ], "tags": [ "Push Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/push_notifications/{id}/mark_read": { "post": { "operationId": "push_notifications_mark_read_create", "description": "Mark a notification as read on every device. A notification that is already read keeps the time it was first read. Refused while push notification preferences are off for the provider.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers (at least one required)\n- Must be authenticated with credentials linked to a user.\n- The following condition must be met: is_feature_on\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Mark Read", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this push notification record.", "required": true } ], "tags": [ "Push Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PushNotificationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PushNotificationRead" } } }, "description": "" } } } }, "/push_notifications/mark_all_read": { "post": { "operationId": "push_notifications_mark_all_read_create", "description": "Mark every notification in the member's list as read. Running it again changes nothing. Refused while push notification preferences are off for the provider.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers (at least one required)\n- Must be authenticated with credentials linked to a user.\n- The following condition must be met: is_feature_on\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Mark All Read", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Push Notifications" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } } } }, "/recurring_reservations": { "get": { "operationId": "recurring_reservations_list", "description": "List recurring reservations.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "8e40b05e98ad6639", "enum": [ "active", "ended" ] }, "description": "* `active` - active\n* `ended` - ended" } ], "tags": [ "Recurring Reservations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedRecurringReservationReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedRecurringReservationReadList" } } }, "description": "" } } } }, "/recurring_reservations/{id}": { "get": { "operationId": "recurring_reservations_retrieve", "description": "Retrieve recurring reservations.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this recurring reservation.", "required": true } ], "tags": [ "Recurring Reservations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecurringReservationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RecurringReservationRead" } } }, "description": "" } } }, "patch": { "operationId": "recurring_reservations_partial_update", "description": "Partially update recurring reservations.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this recurring reservation.", "required": true } ], "tags": [ "Recurring Reservations" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedRecurringReservationUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedRecurringReservationUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedRecurringReservationUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RecurringReservationRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RecurringReservationRead" } } }, "description": "" } } } }, "/recurring_reservations/{id}/unavailable_upcoming_events": { "get": { "operationId": "recurring_reservations_unavailable_upcoming_events_list", "description": "Retrieve unavailable upcoming events for a recurring reservation.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Unavailable Upcoming Events", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this recurring reservation.", "required": true }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "8e40b05e98ad6639", "enum": [ "active", "ended" ] }, "description": "* `active` - active\n* `ended` - ended" } ], "tags": [ "Recurring Reservations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedUnavailableEventList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedUnavailableEventList" } } }, "description": "" } } } }, "/registration_eligibility/check": { "post": { "operationId": "registration_eligibility_check_create", "description": "\n This endpoint helps you understand a customer's options for completing a registration action on either a new or existing customer membership.\n\n The presence of any `global_restrictions` means the action is impossible. The customer's active memberships are listed in `membership_options`, and each includes applicable restrictions and prerequisites, along with the on-allotment price for completing the registration with it.\n\n The `prerequisites` object lists the forms and waivers the customer must complete *before* registering (reflected in `completion_url`). Forms and waivers configured to be completed *after* registration are listed separately in `prerequisites.deferred_forms` and `prerequisites.deferred_waivers`; these do not block registration and are excluded from `completion_url`.\n\n ## Error Code Overview\n | Code | Reasons | Provider Applicability | Customer Applicability |\n | ----- | ------- | ---------------------- | ---------------------- |\n | age_restricted | Age requirement not met. | - | appointment, class, room_rental | \n| already_attending | The customer is already attending. | appointment, class, room_rental | appointment, class, room_rental | \n| appointment_slot_unavailable | This appointment slot is not available | appointment, room_rental | appointment, room_rental | \n| customer_registration_block | You are unable to register for events. Please contact us for more information. | - | appointment, class, room_rental | \n| event_cancelled | This event is not active | appointment, class, room_rental | appointment, class, room_rental | \n| event_full | The event is full. | appointment, class | appointment, class, room_rental | \n| invalid_slot | invalid_slot | appointment, room_rental | appointment, room_rental | \n| max_daily_checkins | The customer has reached the daily checkin limit. | checkin | checkin | \n| maximum_daily_registrations | Maximum registrations reached. Cannot join waitlist because maximum registrations reached. | appointment | appointment, class, room_rental | \n| maximum_daily_waitlists | Maximum waitlists reached. | - | class | \n| maximum_weekly_registrations | Maximum registrations reached. Cannot join waitlist because maximum registrations reached. | appointment | appointment, class, room_rental | \n| membership_blocked_after_failed_payment | The membership is blocked due to failed payments. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_blocked_manually | The membership has been manually blocked. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_completed | The membership is not active because it has been completed. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_expired | The membership is not active on this date because it has expired. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_not_applicable | This membership does not apply to this registration. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_on_hold | The membership is not active because it is on hold. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_pending | The membership is not active because it has not started yet. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| membership_usage_restricted | The membership's usage limits have been met. | appointment, checkin, room_rental | appointment, checkin, class, room_rental | \n| registrations_closed | Registrations closed. | appointment | appointment, class, room_rental | \n| registrations_not_open | Registrations not open yet. | appointment | appointment, class, room_rental | \n \n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Check", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Registration Eligibility" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistrationEligibilityParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/RegistrationEligibilityParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/RegistrationEligibilityParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/RegistrationEligibility" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/RegistrationEligibility" } } }, "description": "" } } } }, "/registration_options": { "get": { "operationId": "registration_options_list", "description": "Retrieve a paginated list of registration options with optional offering type expansion.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Registration Options" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedRegistrationOptionList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedRegistrationOptionList" } } }, "description": "" } } } }, "/registration_timelines": { "get": { "operationId": "registration_timelines_list", "description": "Retrieve a list of registration timelines with related thumbnails.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Registration Timelines" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedRegistrationTimelineReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedRegistrationTimelineReadList" } } }, "description": "" } } } }, "/reports/attendance_strikes.grouped/data": { "get": { "operationId": "reports_attendance_strikes.grouped_data_get_data", "description": "Get aggregate data on attendances strikes among customers.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "attendance_status", "schema": { "type": "array", "items": { "enum": [ "late_cancel", "no_show" ], "type": "string", "description": "* `late_cancel` - late_cancel\n* `no_show` - no_show", "x-spec-enum-id": "a75ca351ea76bf90" } }, "description": "Only include infractions for a particular attendance status." }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "attendance_status", "attendance.status", "attendance", "rule_applies_to", "rule.applies_to", "rule", "offering_type_id", "event.offering_type.id", "event", "event.offering_type", "offering_type_name", "event.offering_type.name", "venue_id", "event.venue.id", "event.venue", "venue_name", "event.venue.name", "membership_id", "customer_membership.membership.id", "customer_membership", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "day_of_week", "event_start_time", "event.start_time", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `attendance_status` - attendance_status\n* `attendance.status` - attendance.status\n* `attendance` - attendance\n* `rule_applies_to` - rule_applies_to\n* `rule.applies_to` - rule.applies_to\n* `rule` - rule\n* `offering_type_id` - offering_type_id\n* `event.offering_type.id` - event.offering_type.id\n* `event` - event\n* `event.offering_type` - event.offering_type\n* `offering_type_name` - offering_type_name\n* `event.offering_type.name` - event.offering_type.name\n* `venue_id` - venue_id\n* `event.venue.id` - event.venue.id\n* `event.venue` - event.venue\n* `venue_name` - venue_name\n* `event.venue.name` - event.venue.name\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership` - customer_membership\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `day_of_week` - day_of_week\n* `event_start_time` - event_start_time\n* `event.start_time` - event.start_time\n* `count` - count", "x-spec-enum-id": "805b6f45b1baddff" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for particular customers." }, { "in": "query", "name": "event_starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "max_pivot_columns", "schema": { "type": "integer", "maximum": 12, "default": 4 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions associated with particular memberships." }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for attended events with particular offering types." }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "penalty", "schema": { "type": "integer" }, "description": "Only include infractions part of a sequence that triggered a particular penalty." }, { "in": "query", "name": "pivot", "schema": { "enum": [ "all", "year", "month", "week" ], "type": "string", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all", "minLength": 1 }, "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week" }, { "in": "query", "name": "rule_applies_to", "schema": { "type": "array", "items": { "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ], "type": "string", "description": "* `no_shows` - no_shows\n* `late_cancels` - late_cancels\n* `late_cancels_or_no_shows` - late_cancels_or_no_shows", "x-spec-enum-id": "4dd98ed3daee5b73" } }, "description": "Only include infractions for rules with different applicabilities." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] } }, "description": "Only include infractions with a particular status." }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for attended events at particular venues." } ], "tags": [ "Attendance Strikes Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The customer's unique identifier." }, "name": { "type": "string", "description": "The customer's name." }, "email": { "type": "string", "description": "The customer's email." } } }, "status": { "type": "string", "description": "The attendance infraction's status.", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] }, "attendance": { "type": "object", "properties": { "status": { "type": "string", "description": "The status of the associated attendance.", "enum": [ "late_cancel", "no_show" ] } } }, "rule": { "type": "object", "properties": { "applies_to": { "type": "string", "description": "Whether the rule applies to late-cancels, no-shows or both.", "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ] } } }, "event": { "type": "object", "properties": { "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unqiue identifier of the event's offering type." }, "name": { "type": "string", "description": "The name of the event's offering type." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the event's venue." }, "name": { "type": "string", "description": "The name of the event's venue." } } }, "start_time": { "type": "string", "description": "The event's start time (without a date)." } } }, "customer_membership": { "type": "object", "properties": { "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the membership." }, "name": { "type": "string", "description": "The name of the membership." } } } } }, "day_of_week": { "type": "string", "description": "The day of the week when the infraction occurred." }, "count": { "type": "integer", "description": "The number of infractions in the group." } } } } } } } } } } } }, "/reports/attendance_strikes.grouped/export": { "post": { "operationId": "reports_attendance_strikes.grouped_export_export_data", "description": "Export aggregate data on attendances strikes among customers.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Attendance Strikes Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedAttendanceInfractionsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedAttendanceInfractionsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedAttendanceInfractionsParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/attendance_strikes/data": { "get": { "operationId": "reports_attendance_strikes_data_get_data", "description": "Get data on attendances strikes among customers.", "summary": "Data", "parameters": [ { "in": "query", "name": "attendance_status", "schema": { "type": "array", "items": { "enum": [ "late_cancel", "no_show" ], "type": "string", "description": "* `late_cancel` - late_cancel\n* `no_show` - no_show", "x-spec-enum-id": "a75ca351ea76bf90" } }, "description": "Only include infractions for a particular attendance status." }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_thumbnail_url", "customer.thumbnail_url", "status", "rule_applies_to", "rule.applies_to", "rule", "penalty_rule_max_infractions", "rule.max_infractions", "penalty_rule_days", "rule.days", "penalty_system_id", "rule.system.id", "rule.system", "penalty_system_name", "rule.system.name", "offering_type_id", "event.offering_type.id", "event", "event.offering_type", "offering_type_name", "event.offering_type.name", "membership_id", "customer_membership.membership.id", "customer_membership", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "event_type", "event.type", "event_starts_at", "event.starts_at", "attendance_status", "attendance.status", "attendance", "venue_id", "event.venue.id", "event.venue", "venue_name", "event.venue.name", "sequence_position", "penalty_charge_amount", "penalty.charge.amount", "penalty", "penalty.charge", "penalty_charge_due_date", "penalty.charge.due_date", "penalty_id", "penalty.id" ], "type": "string", "description": "* `id` - id\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_thumbnail_url` - customer_thumbnail_url\n* `customer.thumbnail_url` - customer.thumbnail_url\n* `status` - status\n* `rule_applies_to` - rule_applies_to\n* `rule.applies_to` - rule.applies_to\n* `rule` - rule\n* `penalty_rule_max_infractions` - penalty_rule_max_infractions\n* `rule.max_infractions` - rule.max_infractions\n* `penalty_rule_days` - penalty_rule_days\n* `rule.days` - rule.days\n* `penalty_system_id` - penalty_system_id\n* `rule.system.id` - rule.system.id\n* `rule.system` - rule.system\n* `penalty_system_name` - penalty_system_name\n* `rule.system.name` - rule.system.name\n* `offering_type_id` - offering_type_id\n* `event.offering_type.id` - event.offering_type.id\n* `event` - event\n* `event.offering_type` - event.offering_type\n* `offering_type_name` - offering_type_name\n* `event.offering_type.name` - event.offering_type.name\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership` - customer_membership\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `event_type` - event_type\n* `event.type` - event.type\n* `event_starts_at` - event_starts_at\n* `event.starts_at` - event.starts_at\n* `attendance_status` - attendance_status\n* `attendance.status` - attendance.status\n* `attendance` - attendance\n* `venue_id` - venue_id\n* `event.venue.id` - event.venue.id\n* `event.venue` - event.venue\n* `venue_name` - venue_name\n* `event.venue.name` - event.venue.name\n* `sequence_position` - sequence_position\n* `penalty_charge_amount` - penalty_charge_amount\n* `penalty.charge.amount` - penalty.charge.amount\n* `penalty` - penalty\n* `penalty.charge` - penalty.charge\n* `penalty_charge_due_date` - penalty_charge_due_date\n* `penalty.charge.due_date` - penalty.charge.due_date\n* `penalty_id` - penalty_id\n* `penalty.id` - penalty.id", "x-spec-enum-id": "a55f7ee62255756e" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for particular customers." }, { "in": "query", "name": "event_starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions associated with particular memberships." }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for attended events with particular offering types." }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "penalty", "schema": { "type": "integer" }, "description": "Only include infractions part of a sequence that triggered a particular penalty." }, { "in": "query", "name": "rule_applies_to", "schema": { "type": "array", "items": { "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ], "type": "string", "description": "* `no_shows` - no_shows\n* `late_cancels` - late_cancels\n* `late_cancels_or_no_shows` - late_cancels_or_no_shows", "x-spec-enum-id": "4dd98ed3daee5b73" } }, "description": "Only include infractions for rules with different applicabilities." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] } }, "description": "Only include infractions with a particular status." }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include infractions for attended events at particular venues." } ], "tags": [ "Attendance Strikes Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The infraction's unique identifier." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The customer's unique identifier." }, "name": { "type": "string", "description": "The customer's name." }, "email": { "type": "string", "description": "The customer's email." }, "thumbnail_url": { "type": "string", "description": "URL to a thumbnail photo of the customer." } } }, "status": { "type": "string", "description": "The attendance infraction's status.", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] }, "rule": { "type": "object", "properties": { "applies_to": { "type": "string", "description": "Whether the rule applies to late-cancels, no-shows or both.", "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ] }, "max_infractions": { "type": "integer", "description": "The rule's max number of infractions before a penalty is issued." }, "days": { "type": "integer", "description": "The number of days in the rule's rolling time window. If the max is reached within the interval, a penalty is issued." }, "system": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the penalty system the rule belongs to." }, "name": { "type": "string", "description": "The name of the penalty system the rule belongs to." } } } } }, "event": { "type": "object", "properties": { "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unqiue identifier of the event's offering type." }, "name": { "type": "string", "description": "The name of the event's offering type." } } }, "type": { "type": "string", "description": "The type of event.", "enum": [ "course_session", "appointment", "class", "room_rental" ] }, "starts_at": { "type": "string", "format": "date-time", "description": "When the event is scheduled to start." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the event's venue." }, "name": { "type": "string", "description": "The name of the event's venue." } } } } }, "customer_membership": { "type": "object", "properties": { "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the membership." }, "name": { "type": "string", "description": "The name of the membership." } } } } }, "attendance": { "type": "object", "properties": { "status": { "type": "string", "description": "The status of the associated attendance.", "enum": [ "late_cancel", "no_show" ] } } }, "sequence_position": { "type": "integer", "description": "The position of the infraction in the penalized sequence, or the current interval." }, "penalty": { "type": "object", "properties": { "charge": { "type": "object", "properties": { "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The amount charged for the penalty." }, "due_date": { "type": "string", "format": "date", "description": "The date the penalty charge is due." } } }, "id": { "type": "integer", "description": "The ID of the issued penalty." } } } } } } } } } } } } } }, "/reports/attendance_strikes/export": { "post": { "operationId": "reports_attendance_strikes_export_export_data", "description": "Export data on attendances strikes among customers.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Attendance Strikes Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AttendanceInfractionsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AttendanceInfractionsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AttendanceInfractionsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/attendances.grouped/data": { "get": { "operationId": "reports_attendances.grouped_data_get_data", "description": "Get aggregate data on attendances among customers.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "attendance_status", "schema": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } } }, { "in": "query", "name": "booking_methods", "schema": { "type": "array", "items": { "enum": [ "membership", "dropin", "free" ], "type": "string", "description": "* `membership` - membership\n* `dropin` - dropin\n* `free` - free", "x-spec-enum-id": "cc40e32d85afa928" } } }, { "in": "query", "name": "booking_sources", "schema": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "day_of_week", "event_start_time", "event.start_time", "event", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "booking_method", "booking_source", "status", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `day_of_week` - day_of_week\n* `event_start_time` - event_start_time\n* `event.start_time` - event.start_time\n* `event` - event\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `booking_method` - booking_method\n* `booking_source` - booking_source\n* `status` - status\n* `count` - count", "x-spec-enum-id": "5d72b04f943154dd" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customer_memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "event_start_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_start_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "event_types", "schema": { "type": "array", "items": { "enum": [ "appointment", "class" ], "type": "string", "description": "* `appointment` - appointment\n* `class` - class", "x-spec-enum-id": "ebe505573a59b601" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "max_pivot_columns", "schema": { "type": "integer", "maximum": 12, "default": 4 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "pivot", "schema": { "enum": [ "all", "year", "month", "week" ], "type": "string", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all", "minLength": 1 }, "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week" }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Attendances Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "day_of_week": { "type": "string", "description": "The day of the week when the event occurred." }, "event": { "type": "object", "properties": { "start_time": { "type": "string", "description": "The start time of the event (without date)." } } }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The offering type's unique identifier." }, "name": { "type": "string", "description": "The offering type's name." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The venue's unique identifier." }, "name": { "type": "string", "description": "The venue's name." } } }, "booking_method": { "type": "string", "description": "The method used to book the attendance (membership, drop-in, or free)." }, "booking_source": { "type": "string", "description": "The application or platform used to book the attendance." }, "status": { "type": "string", "description": "The current status of the attendance (registered, attended, late cancelled, or no show)." }, "count": { "type": "integer", "description": "The number of attendances in the group." } } } } } } } } } } } }, "/reports/attendances.grouped/export": { "post": { "operationId": "reports_attendances.grouped_export_export_data", "description": "Export aggregate data on attendances among customers.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Attendances Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedAttendancesReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedAttendancesReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedAttendancesReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/attendances/data": { "get": { "operationId": "reports_attendances_data_get_data", "description": "Get data on attendances among customers.", "summary": "Data", "parameters": [ { "in": "query", "name": "attendance_status", "schema": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } } }, { "in": "query", "name": "booking_methods", "schema": { "type": "array", "items": { "enum": [ "membership", "dropin", "free" ], "type": "string", "description": "* `membership` - membership\n* `dropin` - dropin\n* `free` - free", "x-spec-enum-id": "cc40e32d85afa928" } } }, { "in": "query", "name": "booking_sources", "schema": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "updated_at", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_thumbnail_url", "customer.thumbnail_url", "event_id", "event.id", "event", "event_starts_at", "event.starts_at", "event_ends_at", "event.ends_at", "event_name", "event.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "booking_method", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "booking_source", "status", "checkin_ocurred_at", "checkin.ocurred_at", "checkin", "is_first_attendance" ], "type": "string", "description": "* `id` - id\n* `updated_at` - updated_at\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_thumbnail_url` - customer_thumbnail_url\n* `customer.thumbnail_url` - customer.thumbnail_url\n* `event_id` - event_id\n* `event.id` - event.id\n* `event` - event\n* `event_starts_at` - event_starts_at\n* `event.starts_at` - event.starts_at\n* `event_ends_at` - event_ends_at\n* `event.ends_at` - event.ends_at\n* `event_name` - event_name\n* `event.name` - event.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `booking_method` - booking_method\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `booking_source` - booking_source\n* `status` - status\n* `checkin_ocurred_at` - checkin_ocurred_at\n* `checkin.ocurred_at` - checkin.ocurred_at\n* `checkin` - checkin\n* `is_first_attendance` - is_first_attendance", "x-spec-enum-id": "40f8b9127ee3de9e" } } }, { "in": "query", "name": "customer_memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "event_start_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_start_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "event_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "event_types", "schema": { "type": "array", "items": { "enum": [ "appointment", "class" ], "type": "string", "description": "* `appointment` - appointment\n* `class` - class", "x-spec-enum-id": "ebe505573a59b601" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Attendances Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the attendance." }, "updated_at": { "type": "string", "format": "date-time", "description": "When the attendance was last updated." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." }, "thumbnail_url": { "type": "string", "description": "The URL of the customer's profile picture." } } }, "event": { "type": "object", "properties": { "id": { "type": "integer", "description": "The event's unique identifier." }, "starts_at": { "type": "string", "format": "date-time", "description": "When the event starts." }, "ends_at": { "type": "string", "format": "date-time", "description": "When the event ends." }, "name": { "type": "string", "description": "The event's name." } } }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The offering type's unique identifier." }, "name": { "type": "string", "description": "The offering type's name." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The venue's unique identifier." }, "name": { "type": "string", "description": "The venue's name." } } }, "instructors": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor" }, "name": { "type": "string", "description": "The name of the instructor" } }, "required": [ "id", "name" ] }, "description": "A list of instructors with their ID and name" }, "booking_method": { "type": "string", "description": "The method used to book the attendance (membership, drop-in, or free)." }, "customer_membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer's membership." }, "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the membership." }, "name": { "type": "string", "description": "The name of the membership." } } } } }, "booking_source": { "type": "string", "description": "The application or platform used to book the attendance." }, "status": { "type": "string", "description": "The current status of the attendance (registered, attended, late cancelled, or no show)." }, "checkin": { "type": "object", "properties": { "ocurred_at": { "type": "string", "format": "date-time", "description": "The timestamp when the customer checked in for the event." } } }, "is_first_attendance": { "type": "boolean", "description": "Whether this is the customer's first attendance at any event." } } } } } } } } } } } }, "/reports/attendances/export": { "post": { "operationId": "reports_attendances_export_export_data", "description": "Export data on attendances among customers.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Attendances Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AttendancesReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AttendancesReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AttendancesReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/classes.grouped/data": { "get": { "operationId": "reports_classes.grouped_data_get_data", "description": "Get aggregate data on classes.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "start_time", "day_of_week", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "duration_minutes", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "year", "month", "average_attendees", "count" ], "type": "string", "description": "* `start_time` - start_time\n* `day_of_week` - day_of_week\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `duration_minutes` - duration_minutes\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `year` - year\n* `month` - month\n* `average_attendees` - average_attendees\n* `count` - count", "x-spec-enum-id": "ece4fa9a94c3c12b" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "day_of_week", "schema": { "type": "array", "items": { "type": "string", "enum": [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ] } } }, { "in": "query", "name": "durations", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "status", "schema": { "type": "string" } }, { "in": "query", "name": "timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Classes Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "start_time": { "type": "string", "description": "The start time of the class (without date)." }, "day_of_week": { "type": "string", "description": "The day of the week when the class occurs." }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the offering type of the class." }, "name": { "type": "string", "description": "The name of the offering type of the class." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the venue where the class takes place." }, "name": { "type": "string", "description": "The name of the venue where the class takes place." } } }, "duration_minutes": { "type": "integer", "description": "The duration of the class in minutes." }, "instructor": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor (used for grouping)." }, "name": { "type": "string", "description": "The name of the instructor (used for grouping)." } } }, "year": { "type": "integer", "description": "The year when the class occurs (used for grouping)." }, "month": { "type": "integer", "description": "The month when the class occurs (used for grouping)." }, "average_attendees": { "type": "number", "description": "The average number of attendees across all classes in the group." }, "count": { "type": "integer", "description": "The number of classes in the group." } } } } } } } } } } } }, "/reports/classes.grouped/export": { "post": { "operationId": "reports_classes.grouped_export_export_data", "description": "Export aggregate data on classes.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Classes Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedClassesReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedClassesReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedClassesReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/classes/data": { "get": { "operationId": "reports_classes_data_get_data", "description": "Get data on classes.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "starts_at", "updated_at", "status", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "start_time", "duration_minutes", "day_of_week", "attendance_count", "late_cancel_count", "no_show_count" ], "type": "string", "description": "* `id` - id\n* `starts_at` - starts_at\n* `updated_at` - updated_at\n* `status` - status\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `start_time` - start_time\n* `duration_minutes` - duration_minutes\n* `day_of_week` - day_of_week\n* `attendance_count` - attendance_count\n* `late_cancel_count` - late_cancel_count\n* `no_show_count` - no_show_count", "x-spec-enum-id": "89ccdc814acfed39" } } }, { "in": "query", "name": "day_of_week", "schema": { "type": "array", "items": { "type": "string", "enum": [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ] } } }, { "in": "query", "name": "durations", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "status", "schema": { "type": "string" } }, { "in": "query", "name": "timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Classes Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the class." }, "starts_at": { "type": "string", "format": "date-time", "description": "When the class starts." }, "updated_at": { "type": "string", "format": "date-time", "description": "When the class was last updated." }, "status": { "type": "string", "description": "The current status of the class (active or cancelled)." }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the offering type of the class." }, "name": { "type": "string", "description": "The name of the offering type of the class." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the venue where the class takes place." }, "name": { "type": "string", "description": "The name of the venue where the class takes place." } } }, "instructors": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor" }, "name": { "type": "string", "description": "The name of the instructor" } }, "required": [ "id", "name" ] }, "description": "A list of instructors with their ID and name" }, "start_time": { "type": "string", "description": "The start time of the class (without date)." }, "duration_minutes": { "type": "integer", "description": "The duration of the class in minutes." }, "day_of_week": { "type": "string", "description": "The day of the week when the class occurs." }, "attendance_count": { "type": "integer", "description": "The number of attendees for the class." }, "late_cancel_count": { "type": "integer", "description": "The number of late cancellations for the class." }, "no_show_count": { "type": "integer", "description": "The number of no-shows for the class." } } } } } } } } } } } }, "/reports/classes/export": { "post": { "operationId": "reports_classes_export_export_data", "description": "Export data on classes.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Classes Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ClassesReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ClassesReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ClassesReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/content_views.grouped/data": { "get": { "operationId": "reports_content_views.grouped_data_get_data", "description": "Get aggregate data on customer views of on-demand content, such as view count by month and year.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "content_id", "content.id", "content", "content_name", "content.name", "month", "year", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `content_id` - content_id\n* `content.id` - content.id\n* `content` - content\n* `content_name` - content_name\n* `content.name` - content.name\n* `month` - month\n* `year` - year\n* `count` - count", "x-spec-enum-id": "226bcb1f58e45c17" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "content", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "viewed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "viewed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "viewed_at_timeframe", "schema": { "type": "string" } } ], "tags": [ "Content Views Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer who viewed the content." }, "name": { "type": "string", "description": "The full name of the customer who viewed the content." }, "email": { "type": "string", "description": "The email address of the customer who viewed the content." } } }, "content": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the content that was viewed." }, "name": { "type": "string", "description": "The name of the content that was viewed." } } }, "month": { "type": "integer", "description": "Can be used for data groups. The month when the bucketized content was viewed." }, "year": { "type": "integer", "description": "Can be used for data groups. The year when the bucketized content was viewed." }, "count": { "type": "integer", "description": "Grouping aggregate. The number of content views for the bucketized content." } } } } } } } } } } } }, "/reports/content_views.grouped/export": { "post": { "operationId": "reports_content_views.grouped_export_export_data", "description": "Export aggregate data.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Content Views Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedContentViewsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedContentViewsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedContentViewsParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/content_views/data": { "get": { "operationId": "reports_content_views_data_get_data", "description": "Get data on customer views of on-demand content.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "content_id", "content.id", "content", "content_name", "content.name", "viewed_at" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `content_id` - content_id\n* `content.id` - content.id\n* `content` - content\n* `content_name` - content_name\n* `content.name` - content.name\n* `viewed_at` - viewed_at", "x-spec-enum-id": "ea75606005c95fd1" } } }, { "in": "query", "name": "content", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "viewed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "viewed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "viewed_at_timeframe", "schema": { "type": "string" } } ], "tags": [ "Content Views Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer who viewed the content." }, "name": { "type": "string", "description": "The full name of the customer who viewed the content." }, "email": { "type": "string", "description": "The email address of the customer who viewed the content." } } }, "content": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the content that was viewed." }, "name": { "type": "string", "description": "The name of the content that was viewed." } } }, "viewed_at": { "type": "string", "description": "The date and time when the content was viewed." } } } } } } } } } } } }, "/reports/content_views/export": { "post": { "operationId": "reports_content_views_export_export_data", "description": "Export data on customer views of on-demand content.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Content Views Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ContentViewsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ContentViewsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ContentViewsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/course_session_attendances.grouped/data": { "get": { "operationId": "reports_course_session_attendances.grouped_data_get_data", "description": "Get aggregate data on course session attendances among customers.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "booking_methods", "schema": { "type": "array", "items": { "enum": [ "session_dropin", "membership", "course_dropin" ], "type": "string", "description": "* `session_dropin` - session_dropin\n* `membership` - membership\n* `course_dropin` - course_dropin", "x-spec-enum-id": "c776d7f1be44e761" } } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "booking_method", "is_makeup", "status", "course_session_start_time", "course_session.start_time", "course_session", "day_of_week", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `booking_method` - booking_method\n* `is_makeup` - is_makeup\n* `status` - status\n* `course_session_start_time` - course_session_start_time\n* `course_session.start_time` - course_session.start_time\n* `course_session` - course_session\n* `day_of_week` - day_of_week\n* `count` - count", "x-spec-enum-id": "4190cdb9addea1b0" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "is_makeup", "schema": { "type": "boolean" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "max_pivot_columns", "schema": { "type": "integer", "maximum": 12, "default": 4 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "pivot", "schema": { "enum": [ "all", "year", "month", "week" ], "type": "string", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all", "minLength": 1 }, "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week" }, { "in": "query", "name": "session_starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "session_starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "session_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "no_show", "registered", "attended" ], "type": "string", "description": "* `no_show` - no_show\n* `registered` - registered\n* `attended` - attended", "x-spec-enum-id": "47204a6d452cf619" } } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Course Session Attendances Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the venue." }, "name": { "type": "string", "description": "The name of the venue." } } }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the offering type." }, "name": { "type": "string", "description": "The name of the offering type." } } }, "booking_method": { "type": "string", "description": "The method used to book this attendance (membership, session drop-in, course drop-in)." }, "is_makeup": { "type": "boolean", "description": "Whether this attendance is for a makeup session." }, "status": { "type": "string", "description": "The attendance status (attended, no_show, registered)." }, "course_session": { "type": "object", "properties": { "start_time": { "type": "string", "description": "The start time of the course session." } } }, "day_of_week": { "type": "string", "description": "The day of the week for the course session." }, "count": { "type": "integer", "description": "The count of attendances." } } } } } } } } } } } }, "/reports/course_session_attendances.grouped/export": { "post": { "operationId": "reports_course_session_attendances.grouped_export_export_data", "description": "Export aggregate data on course session attendances among customers.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Course Session Attendances Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedCourseSessionAttendancesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedCourseSessionAttendancesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedCourseSessionAttendancesParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/course_session_attendances/data": { "get": { "operationId": "reports_course_session_attendances_data_get_data", "description": "Get data on course session attendances among customers.", "summary": "Data", "parameters": [ { "in": "query", "name": "booking_methods", "schema": { "type": "array", "items": { "enum": [ "session_dropin", "membership", "course_dropin" ], "type": "string", "description": "* `session_dropin` - session_dropin\n* `membership` - membership\n* `course_dropin` - course_dropin", "x-spec-enum-id": "c776d7f1be44e761" } } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "course_session_id", "course_session.id", "course_session", "course_session_starts_at", "course_session.starts_at", "course_id", "course.id", "course", "course_name", "course.name", "course_series_id", "course_series.id", "course_series", "course_series_name", "course_series.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "booking_method", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "is_makeup", "status" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `course_session_id` - course_session_id\n* `course_session.id` - course_session.id\n* `course_session` - course_session\n* `course_session_starts_at` - course_session_starts_at\n* `course_session.starts_at` - course_session.starts_at\n* `course_id` - course_id\n* `course.id` - course.id\n* `course` - course\n* `course_name` - course_name\n* `course.name` - course.name\n* `course_series_id` - course_series_id\n* `course_series.id` - course_series.id\n* `course_series` - course_series\n* `course_series_name` - course_series_name\n* `course_series.name` - course_series.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `booking_method` - booking_method\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `is_makeup` - is_makeup\n* `status` - status", "x-spec-enum-id": "b91007750448ae82" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "include_future", "schema": { "type": "boolean", "default": false } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "is_makeup", "schema": { "type": "boolean" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "session_starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "session_starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "session_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "no_show", "registered", "attended" ], "type": "string", "description": "* `no_show` - no_show\n* `registered` - registered\n* `attended` - attended", "x-spec-enum-id": "47204a6d452cf619" } } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Course Session Attendances Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "course_session": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the course session." }, "starts_at": { "type": "string", "format": "date-time", "description": "The start date and time of the course session." } } }, "course": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the course." }, "name": { "type": "string", "description": "The name of the course." } } }, "course_series": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the course series." }, "name": { "type": "string", "description": "The name of the course series." } } }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the offering type." }, "name": { "type": "string", "description": "The name of the offering type." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the venue." }, "name": { "type": "string", "description": "The name of the venue." } } }, "instructors": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor" }, "name": { "type": "string", "description": "The name of the instructor" } }, "required": [ "id", "name" ] }, "description": "A list of instructors with their ID and name" }, "booking_method": { "type": "string", "description": "The method used to book this attendance (membership, session drop-in, course drop-in)." }, "customer_membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer membership." }, "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the membership type." }, "name": { "type": "string", "description": "The name of the membership type." } } } } }, "is_makeup": { "type": "boolean", "description": "Whether this attendance is for a makeup session." }, "status": { "type": "string", "description": "The attendance status (attended, no_show, registered)." } } } } } } } } } } } }, "/reports/course_session_attendances/export": { "post": { "operationId": "reports_course_session_attendances_export_export_data", "description": "Export data on course session attendances among customers.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Course Session Attendances Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CourseSessionAttendancesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CourseSessionAttendancesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CourseSessionAttendancesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_credits/data": { "get": { "operationId": "reports_customer_credits_data_get_data", "description": "Get data on customer credits.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "created_at", "amount", "balance", "memo" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `created_at` - created_at\n* `amount` - amount\n* `balance` - balance\n* `memo` - memo", "x-spec-enum-id": "8f249a21b85806da" } } }, { "in": "query", "name": "created_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "created_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "created_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." } ], "tags": [ "Customer Credits Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "created_at": { "type": "string", "format": "date-time", "description": "When the credit was created." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The credit amount." }, "balance": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The customer's current credit balance." }, "memo": { "type": "string", "description": "The memo or description for the credit transaction." } } } } } } } } } } } }, "/reports/customer_credits/export": { "post": { "operationId": "reports_customer_credits_export_export_data", "description": "Export data on customer credits.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Credits Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerCreditsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerCreditsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerCreditsReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_crm_progression/data": { "get": { "operationId": "reports_customer_crm_progression_data_get_data", "description": "Grouped report showing the count of customers by the highest CRM status they have ever achieved.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "max_progressed_status_id", "max_progressed_status.id", "max_progressed_status", "max_progressed_status_name", "max_progressed_status.name", "max_progressed_status_slug", "max_progressed_status.slug", "current_status_id", "current_status.id", "current_status", "current_status_name", "current_status.name", "count" ], "type": "string", "description": "* `max_progressed_status_id` - max_progressed_status_id\n* `max_progressed_status.id` - max_progressed_status.id\n* `max_progressed_status` - max_progressed_status\n* `max_progressed_status_name` - max_progressed_status_name\n* `max_progressed_status.name` - max_progressed_status.name\n* `max_progressed_status_slug` - max_progressed_status_slug\n* `max_progressed_status.slug` - max_progressed_status.slug\n* `current_status_id` - current_status_id\n* `current_status.id` - current_status.id\n* `current_status` - current_status\n* `current_status_name` - current_status_name\n* `current_status.name` - current_status.name\n* `count` - count", "x-spec-enum-id": "b40ac56385a9a2b9" }, "minItems": 1 }, "description": "Select which columns to include in the report. Attribute columns with the same values are grouped into the same rows, and aggregate columns are calculated for each group.", "required": true }, { "in": "query", "name": "first_reached_status", "schema": { "type": "integer" }, "description": "Filter to customers who have ever reached a specific CRM status (by status ID)." }, { "in": "query", "name": "first_reached_status_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose first assignment to the specified status was at or after this date. Must be combined with first_reached_status." }, { "in": "query", "name": "first_reached_status_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose first assignment to the specified status was at or before this date. Must be combined with first_reached_status." }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status_first_assigned_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose CRM status was first assigned at or after this date." }, { "in": "query", "name": "status_first_assigned_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose CRM status was first assigned at or before this date." } ], "tags": [ "Customer CRM Progression Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "max_progressed_status": { "type": "object", "properties": { "id": { "type": "integer", "description": "The CRM status with the highest precedence this customer has achieved." }, "name": { "type": "string", "description": "The CRM status with the highest precedence this customer has achieved." }, "slug": { "type": "string", "description": "The slug of the CRM status with the highest precedence this customer has achieved." } } }, "current_status": { "type": "object", "properties": { "id": { "type": "integer", "description": "The customer's current CRM status ID." }, "name": { "type": "string", "description": "The customer's current CRM status name." } } }, "count": { "type": "integer", "description": "Count of grouped records." } } } } } } } } } } } }, "/reports/customer_crm_progression/export": { "post": { "operationId": "reports_customer_crm_progression_export_export_data", "description": "Export the report data to a downloadable file.", "summary": "Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer CRM Progression Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerCrmProgressionReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerCrmProgressionReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerCrmProgressionReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_field_changes/data": { "get": { "operationId": "reports_customer_field_changes_data_get_data", "description": "Get data on customer field changes.", "summary": "Data", "parameters": [ { "in": "query", "name": "changed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "changed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "changed_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "field_id", "field.id", "field", "field_label", "field.label", "changed_at", "previous_value", "new_value" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `field_id` - field_id\n* `field.id` - field.id\n* `field` - field\n* `field_label` - field_label\n* `field.label` - field.label\n* `changed_at` - changed_at\n* `previous_value` - previous_value\n* `new_value` - new_value", "x-spec-enum-id": "43be9a8252042c13" } } }, { "in": "query", "name": "customer_fields", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." } ], "tags": [ "Customer Field Changes Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "field": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the field." }, "label": { "type": "string", "description": "The label of the field that was changed." } } }, "changed_at": { "type": "string", "format": "date-time", "description": "When the field value was changed." }, "previous_value": { "type": "string", "description": "The previous value of the field before the change." }, "new_value": { "type": "string", "description": "The new value of the field after the change." } } } } } } } } } } } }, "/reports/customer_field_changes/export": { "post": { "operationId": "reports_customer_field_changes_export_export_data", "description": "Export data on customer field changes.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Field Changes Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerFieldChangesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerFieldChangesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerFieldChangesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_membership_holds.grouped/data": { "get": { "operationId": "reports_customer_membership_holds.grouped_data_get_data", "description": "Get aggregate data on customer membership holds.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "status", "membership_name", "membership.name", "membership", "membership_type", "membership.type", "payment_resolution_type", "start_month", "start_year", "end_month", "end_year", "average_hold_duration", "count" ], "type": "string", "description": "* `status` - status\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `membership` - membership\n* `membership_type` - membership_type\n* `membership.type` - membership.type\n* `payment_resolution_type` - payment_resolution_type\n* `start_month` - start_month\n* `start_year` - start_year\n* `end_month` - end_month\n* `end_year` - end_year\n* `average_hold_duration` - average_hold_duration\n* `count` - count", "x-spec-enum-id": "13bb016d9187a43c" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "created_at_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds created on or after a timestamp." } }, { "in": "query", "name": "created_at_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds created on or before a timestamp." } }, { "in": "query", "name": "created_at_timeframe", "schema": { "type": "string", "title": "Only include holds created within a timeframe." } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular customers." } }, { "in": "query", "name": "end_date_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds ending on or after a date." } }, { "in": "query", "name": "end_date_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds ending on or before a date." } }, { "in": "query", "name": "end_timeframe", "schema": { "type": "string", "title": "Only include holds ending within a timeframe." } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "is_usage_prorated", "schema": { "type": "boolean", "title": "Include holds based on whether they are prorated or not." } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "max_pivot_columns", "schema": { "type": "integer", "maximum": 12, "default": 4 } }, { "in": "query", "name": "membership_types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "pack", "prepaid", "recurring" ] }, "title": "Only include holds for particular membership types." } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular memberships." } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_resolution_type", "schema": { "type": "array", "items": { "enum": [ "charge", "credit", "none" ], "type": "string", "description": "* `charge` - charge\n* `credit` - credit\n* `none` - none", "x-spec-enum-id": "daf90168e108ff08" }, "title": "Only include holds with a particular payment resolution type." } }, { "in": "query", "name": "pivot", "schema": { "enum": [ "all", "year", "month", "week" ], "type": "string", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all", "minLength": 1 }, "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week" }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds starting on or after a date." } }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds starting on or before a date." } }, { "in": "query", "name": "start_timeframe", "schema": { "type": "string", "title": "Only include holds starting within a timeframe." } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "ended", "upcoming" ], "type": "string", "description": "* `active` - active\n* `ended` - ended\n* `upcoming` - upcoming", "x-spec-enum-id": "ca64ef7c06a0a488" }, "title": "Only include holds with a particular status." } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds updated on or after a timestamp." } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds updated on or before a timestamp." } } ], "tags": [ "Customer Membership Holds Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "status": { "type": "string", "description": "The status of the hold.", "enum": [ "active", "upcoming", "ended" ] }, "membership": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the membership." }, "type": { "type": "string", "description": "The type of the membership.", "enum": [ "pack", "prepaid_plan", "recurring_plan" ] } } }, "payment_resolution_type": { "type": "string", "description": "The type of payment resolution.", "enum": [ "charge", "credit" ] }, "start_month": { "type": "integer", "description": "The month the hold started." }, "start_year": { "type": "integer", "description": "The year the hold started." }, "end_month": { "type": "integer", "description": "" }, "end_year": { "type": "integer", "description": "" }, "average_hold_duration": { "type": "integer", "description": "" }, "count": { "type": "integer", "description": "The count of holds in the group." } } } } } } } } } } } }, "/reports/customer_membership_holds.grouped/export": { "post": { "operationId": "reports_customer_membership_holds.grouped_export_export_data", "description": "Export aggregate data on customer membership holds.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Membership Holds Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipHoldsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipHoldsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipHoldsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_membership_holds/data": { "get": { "operationId": "reports_customer_membership_holds_data_get_data", "description": "Get data on customer membership holds.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "created_at", "updated_at", "start_date", "end_date", "status", "is_usage_prorated", "credit_amount", "reactivation_charge_amount", "is_payment_resolution_customized", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_type", "customer_membership.membership.type", "membership_name", "customer_membership.membership.name", "membership_start_date", "customer_membership.start_date", "membership_expiration_date", "customer_membership.expiration_date", "membership_allowed_cancellation_date", "customer_membership.allowed_cancellation_date", "previous_expiration_date", "previous_allowed_cancellation_date", "other_active_customer_memberships", "days_to_add" ], "type": "string", "description": "* `id` - id\n* `created_at` - created_at\n* `updated_at` - updated_at\n* `start_date` - start_date\n* `end_date` - end_date\n* `status` - status\n* `is_usage_prorated` - is_usage_prorated\n* `credit_amount` - credit_amount\n* `reactivation_charge_amount` - reactivation_charge_amount\n* `is_payment_resolution_customized` - is_payment_resolution_customized\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_type` - membership_type\n* `customer_membership.membership.type` - customer_membership.membership.type\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `membership_start_date` - membership_start_date\n* `customer_membership.start_date` - customer_membership.start_date\n* `membership_expiration_date` - membership_expiration_date\n* `customer_membership.expiration_date` - customer_membership.expiration_date\n* `membership_allowed_cancellation_date` - membership_allowed_cancellation_date\n* `customer_membership.allowed_cancellation_date` - customer_membership.allowed_cancellation_date\n* `previous_expiration_date` - previous_expiration_date\n* `previous_allowed_cancellation_date` - previous_allowed_cancellation_date\n* `other_active_customer_memberships` - other_active_customer_memberships\n* `days_to_add` - days_to_add", "x-spec-enum-id": "34292b7dc48a4eaa" }, "title": "Only include particular columns." } }, { "in": "query", "name": "created_at_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds created on or after a timestamp." } }, { "in": "query", "name": "created_at_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds created on or before a timestamp." } }, { "in": "query", "name": "created_at_timeframe", "schema": { "type": "string", "title": "Only include holds created within a timeframe." } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular customers." } }, { "in": "query", "name": "end_date_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds ending on or after a date." } }, { "in": "query", "name": "end_date_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds ending on or before a date." } }, { "in": "query", "name": "end_timeframe", "schema": { "type": "string", "title": "Only include holds ending within a timeframe." } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "is_usage_prorated", "schema": { "type": "boolean", "title": "Include holds based on whether they are prorated or not." } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "membership_types", "schema": { "type": "array", "items": { "type": "string", "enum": [ "pack", "prepaid", "recurring" ] }, "title": "Only include holds for particular membership types." } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular memberships." } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_resolution_type", "schema": { "type": "array", "items": { "enum": [ "charge", "credit", "none" ], "type": "string", "description": "* `charge` - charge\n* `credit` - credit\n* `none` - none", "x-spec-enum-id": "daf90168e108ff08" }, "title": "Only include holds with a particular payment resolution type." } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds starting on or after a date." } }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds starting on or before a date." } }, { "in": "query", "name": "start_timeframe", "schema": { "type": "string", "title": "Only include holds starting within a timeframe." } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "ended", "upcoming" ], "type": "string", "description": "* `active` - active\n* `ended` - ended\n* `upcoming` - upcoming", "x-spec-enum-id": "ca64ef7c06a0a488" }, "title": "Only include holds with a particular status." } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date", "title": "Only include holds updated on or after a timestamp." } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date", "title": "Only include holds updated on or before a timestamp." } } ], "tags": [ "Customer Membership Holds Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique ID of the hold." }, "created_at": { "type": "string", "format": "date-time", "description": "The date and time the hold was created." }, "updated_at": { "type": "string", "format": "date-time", "description": "The date and time the hold was updated." }, "start_date": { "type": "string", "format": "date", "description": "The date the hold started." }, "end_date": { "type": "string", "format": "date", "description": "The date the hold ended." }, "status": { "type": "string", "description": "The status of the hold.", "enum": [ "active", "upcoming", "ended" ] }, "is_usage_prorated": { "type": "boolean", "description": "Whether the usage was prorated." }, "credit_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The amount of credit applied to the hold." }, "reactivation_charge_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The amount charged to reactivate the membership." }, "is_payment_resolution_customized": { "type": "boolean", "description": "Whether the payment resolution was customized." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique ID of the customer." }, "name": { "type": "string", "description": "The name of the customer." }, "email": { "type": "string", "description": "The email address of the customer." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique ID of the customer's venue." }, "name": { "type": "string", "description": "The name of the customer's venue." } } } } }, "customer_membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique ID of the customer membership." }, "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique ID of the membership." }, "type": { "type": "string", "description": "The type of the membership.", "enum": [ "pack", "prepaid_plan", "recurring_plan" ] }, "name": { "type": "string", "description": "The name of the membership." } } }, "start_date": { "type": "string", "format": "date", "description": "The date the membership started." }, "expiration_date": { "type": "string", "format": "date", "description": "The date the membership expires." }, "allowed_cancellation_date": { "type": "string", "format": "date", "description": "The date the membership can be cancelled." } } }, "previous_expiration_date": { "type": "string", "format": "date", "description": "The previous expiration date of the membership." }, "previous_allowed_cancellation_date": { "type": "string", "format": "date", "description": "The previous allowed cancellation date of the membership." }, "other_active_customer_memberships": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "membership": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } } } }, "description": "The other active memberships of the customer." }, "days_to_add": { "type": "integer", "description": "The number of days to add to the membership." } } } } } } } } } } } }, "/reports/customer_membership_holds/export": { "post": { "operationId": "reports_customer_membership_holds_export_export_data", "description": "Export data on customer membership holds.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Membership Holds Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipHoldsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerMembershipHoldsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerMembershipHoldsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_memberships.grouped/data": { "get": { "operationId": "reports_customer_memberships.grouped_data_get_data", "description": "Get aggregate data on customer memberships.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "active_hold_end_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_end_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_start_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_start_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "cancelled_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "cancelled_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "cancelled_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "type", "status", "payment_processor", "purchase_month", "purchase_year", "start_month", "start_year", "expiration_month", "expiration_year", "cancelled_month", "cancelled_year", "membership_id", "membership.id", "membership", "membership_name", "membership.name", "count", "billed_price" ], "type": "string", "description": "* `type` - type\n* `status` - status\n* `payment_processor` - payment_processor\n* `purchase_month` - purchase_month\n* `purchase_year` - purchase_year\n* `start_month` - start_month\n* `start_year` - start_year\n* `expiration_month` - expiration_month\n* `expiration_year` - expiration_year\n* `cancelled_month` - cancelled_month\n* `cancelled_year` - cancelled_year\n* `membership_id` - membership_id\n* `membership.id` - membership.id\n* `membership` - membership\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `count` - count\n* `billed_price` - billed_price", "x-spec-enum-id": "95e0633d14d08aa2" } }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "downgrade_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "downgrade_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "downgrade_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "expiration_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "expiration_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "expiration_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "has_active_hold", "schema": { "type": "boolean" } }, { "in": "query", "name": "has_custom_limits", "schema": { "type": "boolean" } }, { "in": "query", "name": "has_expiration_date", "schema": { "type": "boolean" } }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "is_first_membership", "schema": { "type": "boolean" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "max_pivot_columns", "schema": { "type": "integer", "maximum": 12, "default": 4 } }, { "in": "query", "name": "membership_categories", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_processors", "schema": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } } }, { "in": "query", "name": "pivot", "schema": { "enum": [ "active_by_year", "active_by_month" ], "type": "string", "x-spec-enum-id": "db6ee22767df080e", "minLength": 1 }, "description": "* `active_by_year` - active_by_year\n* `active_by_month` - active_by_month" }, { "in": "query", "name": "purchased_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "renewal_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "renewal_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "renewal_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "start_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "hold", "cancelled", "completed", "upgraded", "downgraded" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `cancelled` - cancelled\n* `completed` - completed\n* `upgraded` - upgraded\n* `downgraded` - downgraded", "x-spec-enum-id": "9bb0cd1aca3216b8" } } }, { "in": "query", "name": "types", "schema": { "type": "array", "items": { "enum": [ "pack", "prepaid", "recurring" ], "type": "string", "description": "* `pack` - pack\n* `prepaid` - prepaid\n* `recurring` - recurring", "x-spec-enum-id": "758f3720c00cb886" } } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "upgrade_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "upgrade_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "upgrade_date_timeframe", "schema": { "type": "string" } } ], "tags": [ "Customer Memberships Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "type": { "type": "string", "description": "The type of the membership (pack, prepaid, recurring).", "enum": [ "pack", "prepaid", "recurring" ] }, "status": { "type": "string", "description": "The current status of the customer membership." }, "payment_processor": { "type": "string", "description": "" }, "purchase_month": { "type": "integer", "description": "" }, "purchase_year": { "type": "integer", "description": "" }, "start_month": { "type": "integer", "description": "" }, "start_year": { "type": "integer", "description": "" }, "expiration_month": { "type": "integer", "description": "" }, "expiration_year": { "type": "integer", "description": "" }, "cancelled_month": { "type": "integer", "description": "" }, "cancelled_year": { "type": "integer", "description": "" }, "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the membership." }, "name": { "type": "string", "description": "The name of the membership." } } }, "count": { "type": "integer", "description": "" }, "billed_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" } } } } } } } } } } } }, "/reports/customer_memberships.grouped/export": { "post": { "operationId": "reports_customer_memberships.grouped_export_export_data", "description": "Export aggregate data on customer memberships.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Memberships Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedCustomerMembershipsReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_memberships/data": { "get": { "operationId": "reports_customer_memberships_data_get_data", "description": "Get data on customer memberships.", "summary": "Data", "parameters": [ { "in": "query", "name": "active_hold_end_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_end_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_start_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "active_hold_start_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "cancelled_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "cancelled_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "cancelled_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "updated_at", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "other_active", "membership_id", "membership.id", "membership", "membership_name", "membership.name", "type", "status", "payment_processor", "purchase_date", "start_date", "expiration_date", "renewal_date", "cancelled_date", "downgraded_date", "upgraded_date", "has_custom_limits", "is_first_membership", "billed_price", "cancellation_reason", "completed_at" ], "type": "string", "description": "* `id` - id\n* `updated_at` - updated_at\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `other_active` - other_active\n* `membership_id` - membership_id\n* `membership.id` - membership.id\n* `membership` - membership\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `type` - type\n* `status` - status\n* `payment_processor` - payment_processor\n* `purchase_date` - purchase_date\n* `start_date` - start_date\n* `expiration_date` - expiration_date\n* `renewal_date` - renewal_date\n* `cancelled_date` - cancelled_date\n* `downgraded_date` - downgraded_date\n* `upgraded_date` - upgraded_date\n* `has_custom_limits` - has_custom_limits\n* `is_first_membership` - is_first_membership\n* `billed_price` - billed_price\n* `cancellation_reason` - cancellation_reason\n* `completed_at` - completed_at", "x-spec-enum-id": "2ba7d07e38a2b5a3" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "downgrade_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "downgrade_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "downgrade_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "expiration_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "expiration_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "expiration_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "has_active_hold", "schema": { "type": "boolean" } }, { "in": "query", "name": "has_custom_limits", "schema": { "type": "boolean" } }, { "in": "query", "name": "has_expiration_date", "schema": { "type": "boolean" } }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "is_first_membership", "schema": { "type": "boolean" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "membership_categories", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_processors", "schema": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } } }, { "in": "query", "name": "purchased_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "renewal_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "renewal_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "renewal_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "start_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "start_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "start_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "active", "hold", "cancelled", "completed", "upgraded", "downgraded" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `cancelled` - cancelled\n* `completed` - completed\n* `upgraded` - upgraded\n* `downgraded` - downgraded", "x-spec-enum-id": "9bb0cd1aca3216b8" } } }, { "in": "query", "name": "types", "schema": { "type": "array", "items": { "enum": [ "pack", "prepaid", "recurring" ], "type": "string", "description": "* `pack` - pack\n* `prepaid` - prepaid\n* `recurring` - recurring", "x-spec-enum-id": "758f3720c00cb886" } } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "upgrade_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "upgrade_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "upgrade_date_timeframe", "schema": { "type": "string" } } ], "tags": [ "Customer Memberships Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer membership." }, "updated_at": { "type": "string", "format": "date-time", "description": "When the customer membership was last updated." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer's venue." }, "name": { "type": "string", "description": "The name of the customer's venue." } } } } }, "other_active": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "membership": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } } } }, "description": "" }, "membership": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the membership." }, "name": { "type": "string", "description": "The name of the membership." } } }, "type": { "type": "string", "description": "The type of the membership (pack, prepaid, recurring).", "enum": [ "pack", "prepaid", "recurring" ] }, "status": { "type": "string", "description": "The current status of the customer membership." }, "payment_processor": { "type": "string", "description": "" }, "purchase_date": { "type": "string", "format": "date", "description": "" }, "start_date": { "type": "string", "format": "date", "description": "" }, "expiration_date": { "type": "string", "format": "date", "description": "" }, "renewal_date": { "type": "string", "format": "date", "description": "" }, "cancelled_date": { "type": "string", "format": "date", "description": "" }, "downgraded_date": { "type": "string", "format": "date", "description": "" }, "upgraded_date": { "type": "string", "format": "date", "description": "" }, "has_custom_limits": { "type": "boolean", "description": "" }, "is_first_membership": { "type": "boolean", "description": "" }, "billed_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "cancellation_reason": { "type": "string", "description": "" }, "completed_at": { "type": "string", "format": "date-time", "description": "The date and time when the pack membership was fully used." } } } } } } } } } } } }, "/reports/customer_memberships/export": { "post": { "operationId": "reports_customer_memberships_export_export_data", "description": "Export data on customer memberships.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Memberships Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerMembershipsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerMembershipsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerMembershipsReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_referrals.grouped/data": { "get": { "operationId": "reports_customer_referrals.grouped_data_get_data", "description": "Get aggregate data on customer referrals.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "referring_customer_id", "referring_customer.id", "referring_customer", "referrering_customer_name", "referring_customer.name", "referrering_customer_email", "referring_customer.email", "membership_id", "signup_membership.id", "signup_membership", "membership_name", "signup_membership.name", "signup_month", "signup_year", "status", "count" ], "type": "string", "description": "* `referring_customer_id` - referring_customer_id\n* `referring_customer.id` - referring_customer.id\n* `referring_customer` - referring_customer\n* `referrering_customer_name` - referrering_customer_name\n* `referring_customer.name` - referring_customer.name\n* `referrering_customer_email` - referrering_customer_email\n* `referring_customer.email` - referring_customer.email\n* `membership_id` - membership_id\n* `signup_membership.id` - signup_membership.id\n* `signup_membership` - signup_membership\n* `membership_name` - membership_name\n* `signup_membership.name` - signup_membership.name\n* `signup_month` - signup_month\n* `signup_year` - signup_year\n* `status` - status\n* `count` - count", "x-spec-enum-id": "be3c25680cb02380" }, "title": "Only return particular columns. Format as comma-separated column names." }, "required": true }, { "in": "query", "name": "confirmation_date_gte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or after a particular date." } }, { "in": "query", "name": "confirmation_date_lte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or before a particular date." } }, { "in": "query", "name": "confirmation_date_timeframe", "schema": { "type": "string", "title": "Only return rows for referrals that were confirmed within a particular timeframe. See section on timeframe syntax for formatting." } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for referrals with particular signup memberships. Format as comma-separated membership id values." } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "referring_customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referring customers. Format as comma-separated customer id values." } }, { "in": "query", "name": "signup_customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referred customers. Format as comma-separated customer id values." } }, { "in": "query", "name": "signup_date_gte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or after a particular date." } }, { "in": "query", "name": "signup_date_lte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or before a particular date." } }, { "in": "query", "name": "signup_date_timeframe", "schema": { "type": "string", "title": "Only return rows for referrals with a singup date within a particular timeframe. See section on timeframe syntax for formatting." } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "pending", "confirmed" ], "type": "string", "description": "* `pending` - pending\n* `confirmed` - confirmed", "x-spec-enum-id": "2194144715280128" }, "title": "Only return rows for referrals with a particular status." } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } } ], "tags": [ "Customer Referrals Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "referring_customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the customer who made the referral." }, "name": { "type": "string", "description": "The name of the customer who made the referral." }, "email": { "type": "string", "description": "The email address of the customer who made the referral." } } }, "signup_membership": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the membership that the referred member signed up for." }, "name": { "type": "string", "description": "The name of the membership that the referred member signed up for." } } }, "signup_month": { "type": "string", "description": "" }, "signup_year": { "type": "string", "description": "" }, "status": { "type": "string", "description": "The status of the referral.", "enum": [ "pending", "confirmed", "cancelled" ] }, "count": { "type": "string", "description": "" } } } } } } } } } } } }, "/reports/customer_referrals.grouped/export": { "post": { "operationId": "reports_customer_referrals.grouped_export_export_data", "description": "Export aggregate data on customer referrals.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Referrals Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedCustomerReferralsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedCustomerReferralsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedCustomerReferralsReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customer_referrals/data": { "get": { "operationId": "reports_customer_referrals_data_get_data", "description": "Get data on customer referrals.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "referring_customer_id", "referring_customer.id", "referring_customer", "referrering_customer_name", "referring_customer.name", "referrering_customer_email", "referring_customer.email", "referring_customer_venue_id", "referring_customer.venue.id", "referring_customer.venue", "referring_customer_venue_name", "referring_customer.venue.name", "signup_customer_id", "signup_customer.id", "signup_customer", "signup_customer_name", "signup_customer.name", "signup_customer_email", "signup_customer.email", "customer_membership_id", "signup_customer_membership.id", "signup_customer_membership", "customer_membership_status", "signup_customer_membership.status", "signup_customer_venue_id", "signup_customer.venue.id", "signup_customer.venue", "signup_customer_venue_name", "signup_customer.venue.name", "membership_id", "signup_customer_membership.membership.id", "signup_customer_membership.membership", "membership_name", "signup_customer_membership.membership.name", "credit_given", "signup_date", "confirmation_date", "updated_at", "status", "membership_use_count", "signup_customer_membership.use_count" ], "type": "string", "description": "* `id` - id\n* `referring_customer_id` - referring_customer_id\n* `referring_customer.id` - referring_customer.id\n* `referring_customer` - referring_customer\n* `referrering_customer_name` - referrering_customer_name\n* `referring_customer.name` - referring_customer.name\n* `referrering_customer_email` - referrering_customer_email\n* `referring_customer.email` - referring_customer.email\n* `referring_customer_venue_id` - referring_customer_venue_id\n* `referring_customer.venue.id` - referring_customer.venue.id\n* `referring_customer.venue` - referring_customer.venue\n* `referring_customer_venue_name` - referring_customer_venue_name\n* `referring_customer.venue.name` - referring_customer.venue.name\n* `signup_customer_id` - signup_customer_id\n* `signup_customer.id` - signup_customer.id\n* `signup_customer` - signup_customer\n* `signup_customer_name` - signup_customer_name\n* `signup_customer.name` - signup_customer.name\n* `signup_customer_email` - signup_customer_email\n* `signup_customer.email` - signup_customer.email\n* `customer_membership_id` - customer_membership_id\n* `signup_customer_membership.id` - signup_customer_membership.id\n* `signup_customer_membership` - signup_customer_membership\n* `customer_membership_status` - customer_membership_status\n* `signup_customer_membership.status` - signup_customer_membership.status\n* `signup_customer_venue_id` - signup_customer_venue_id\n* `signup_customer.venue.id` - signup_customer.venue.id\n* `signup_customer.venue` - signup_customer.venue\n* `signup_customer_venue_name` - signup_customer_venue_name\n* `signup_customer.venue.name` - signup_customer.venue.name\n* `membership_id` - membership_id\n* `signup_customer_membership.membership.id` - signup_customer_membership.membership.id\n* `signup_customer_membership.membership` - signup_customer_membership.membership\n* `membership_name` - membership_name\n* `signup_customer_membership.membership.name` - signup_customer_membership.membership.name\n* `credit_given` - credit_given\n* `signup_date` - signup_date\n* `confirmation_date` - confirmation_date\n* `updated_at` - updated_at\n* `status` - status\n* `membership_use_count` - membership_use_count\n* `signup_customer_membership.use_count` - signup_customer_membership.use_count", "x-spec-enum-id": "8431681923a85a3a" }, "title": "Only return particular columns. Format as comma-separated column names." } }, { "in": "query", "name": "confirmation_date_gte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or after a particular date." } }, { "in": "query", "name": "confirmation_date_lte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or before a particular date." } }, { "in": "query", "name": "confirmation_date_timeframe", "schema": { "type": "string", "title": "Only return rows for referrals that were confirmed within a particular timeframe. See section on timeframe syntax for formatting." } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "memberships", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for referrals with particular signup memberships. Format as comma-separated membership id values." } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "referring_customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referring customers. Format as comma-separated customer id values." } }, { "in": "query", "name": "signup_customers", "schema": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referred customers. Format as comma-separated customer id values." } }, { "in": "query", "name": "signup_date_gte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or after a particular date." } }, { "in": "query", "name": "signup_date_lte", "schema": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or before a particular date." } }, { "in": "query", "name": "signup_date_timeframe", "schema": { "type": "string", "title": "Only return rows for referrals with a singup date within a particular timeframe. See section on timeframe syntax for formatting." } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "pending", "confirmed" ], "type": "string", "description": "* `pending` - pending\n* `confirmed` - confirmed", "x-spec-enum-id": "2194144715280128" }, "title": "Only return rows for referrals with a particular status." } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } } ], "tags": [ "Customer Referrals Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The ID of the referral." }, "referring_customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the customer who made the referral." }, "name": { "type": "string", "description": "The name of the customer who made the referral." }, "email": { "type": "string", "description": "The email address of the customer who made the referral." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The venue ID of the referring customer." }, "name": { "type": "string", "description": "The venue name of the referring customer." } } } } }, "signup_customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the customer who signed up." }, "name": { "type": "string", "description": "The name of the customer who signed up." }, "email": { "type": "string", "description": "The email address of the customer who signed up." }, "venue": { "type": "object", "properties": { "id": { "type": "string", "description": "The venue ID of the customer who signed up." }, "name": { "type": "string", "description": "The venue name of the customer who signed up." } } } } }, "signup_customer_membership": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the customer membership that the new member signed up for." }, "status": { "type": "string", "description": "The status of the customer membership that the new member signed up for.", "enum": [ "active", "hold", "completed", "cancelled" ] }, "membership": { "type": "object", "properties": { "id": { "type": "string", "description": "The unique identifier of the membership that the referred member signed up for." }, "name": { "type": "string", "description": "The name of the membership that the referred member signed up for." } } }, "use_count": { "type": "string", "description": "The number of times the referred member has used their membership." } } }, "credit_given": { "type": "string", "description": "The amount of credit given to the referring customer." }, "signup_date": { "type": "string", "description": "The date that the referred member signed up." }, "confirmation_date": { "type": "string", "description": "The date that the referral was confirmed." }, "updated_at": { "type": "string", "description": "When the referral was last updated." }, "status": { "type": "string", "description": "The status of the referral.", "enum": [ "pending", "confirmed", "cancelled" ] } } } } } } } } } } } }, "/reports/customer_referrals/export": { "post": { "operationId": "reports_customer_referrals_export_export_data", "description": "Export data on customer referrals.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customer Referrals Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomerReferralsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomerReferralsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomerReferralsReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customers.grouped/data": { "get": { "operationId": "reports_customers.grouped_data_get_data", "description": "This endpoint allows you to generate a report by grouping customers based on one or more specified columns. It also includes an aggregate column that shows the count of customers within each group. This is useful for summarizing customer data according to various attributes, such as age, gender, created_data, or any other relevant customer fields.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "active_memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customers who have particular memberships that are active. Format as comma-separated membership `id` values." }, { "in": "query", "name": "assigned_staff", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customers assigned to specific staff members. Format as comma-separated staff (ProviderUser) `id` values." }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "created_date", "is_claimed", "is_active", "has_account_credit", "created_month", "created_year", "birth_month", "gender", "created_hour", "age", "is_new", "is_slipping_away", "registration_blocked", "count" ], "type": "string", "description": "* `created_date` - created_date\n* `is_claimed` - is_claimed\n* `is_active` - is_active\n* `has_account_credit` - has_account_credit\n* `created_month` - created_month\n* `created_year` - created_year\n* `birth_month` - birth_month\n* `gender` - gender\n* `created_hour` - created_hour\n* `age` - age\n* `is_new` - is_new\n* `is_slipping_away` - is_slipping_away\n* `registration_blocked` - registration_blocked\n* `count` - count", "x-spec-enum-id": "d257d7286420a21b" }, "minItems": 1 }, "description": "Select which columns to include in the report. Attribute columns with the same values are grouped into the same rows, and aggregate columns are calculated for each group.", "required": true }, { "in": "query", "name": "created_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return rows for customers that were created on or after a particular timestamp." }, { "in": "query", "name": "created_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return rows for customers that were created on or before a particular timestamp." }, { "in": "query", "name": "created_at_timeframe", "schema": { "type": "string" }, "description": "Only return rows for customers that were created within a particular timeframe. See section on timeframe syntax for formatting." }, { "in": "query", "name": "date_of_birth_gte", "schema": { "type": "string", "format": "date" }, "description": "Only return rows for customers with a date of birth on or after this date." }, { "in": "query", "name": "date_of_birth_lte", "schema": { "type": "string", "format": "date" }, "description": "Only return rows for customers with a date of birth on or before this date." }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "has_account_credit", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have account credit or not." }, { "in": "query", "name": "has_active_membership", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have an active membership or not." }, { "in": "query", "name": "has_failed_payments", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have failed payments or not." }, { "in": "query", "name": "has_open_issues", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have open issues or not." }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return rows for customers with particular unique identifiers. Format as comma-separated `id` values." }, { "in": "query", "name": "include_deleted", "schema": { "type": "boolean", "default": false }, "description": "Whether to include deleted customers in the report." }, { "in": "query", "name": "is_active", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are active or not." }, { "in": "query", "name": "is_any", "schema": { "type": "array", "items": { "enum": [ "new", "claimed", "slipping_away", "inactive", "active", "registration_blocked", "lead" ], "type": "string", "description": "* `new` - new\n* `claimed` - claimed\n* `slipping_away` - slipping_away\n* `inactive` - inactive\n* `active` - active\n* `registration_blocked` - registration_blocked\n* `lead` - lead", "x-spec-enum-id": "18aceac25139e991" } }, "description": "Only include customers who have certain traits." }, { "in": "query", "name": "is_claimed", "schema": { "type": "boolean", "nullable": true }, "description": "Return rows based on whether customers are claimed or not. Pass `null` to return unclaimed family members, whose accounts cannot be claimed; `false` excludes them and returns only accounts that can still be claimed." }, { "in": "query", "name": "is_new", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are new or not." }, { "in": "query", "name": "is_slipping_away", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are slipping away or not." }, { "in": "query", "name": "last_broadcast_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return customers last broadcast on or after this timestamp." }, { "in": "query", "name": "last_broadcast_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return customers last broadcast on or before this timestamp." }, { "in": "query", "name": "last_payment_amount_gte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with last payment amount greater than or equal to this value." }, { "in": "query", "name": "last_payment_amount_lte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with last payment amount less than or equal to this value." }, { "in": "query", "name": "last_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose last registration starts on or after this timestamp." }, { "in": "query", "name": "last_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose last registration starts on or before this timestamp." }, { "in": "query", "name": "latest_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers who latest-registered event occurs on or after this timestamp." }, { "in": "query", "name": "latest_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers who latest-registered event occurs on or before this timestamp." }, { "in": "query", "name": "lead_source", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Filter customers by lead source IDs. Format as comma-separated lead source `id` values." }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "next_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose next registration starts on or after this timestamp." }, { "in": "query", "name": "next_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose next registration starts on or before this timestamp." }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "query", "schema": { "type": "string", "minLength": 1 }, "description": "Filter by a free-text string. Checks the `email` and name fields." }, { "in": "query", "name": "registered_and_attended_count_gte", "schema": { "type": "integer" }, "description": "Only return customers with total registrations greater than or equal to this value." }, { "in": "query", "name": "registered_and_attended_count_lte", "schema": { "type": "integer" }, "description": "Only return customers with total registrations less than or equal to this value." }, { "in": "query", "name": "registration_blocked", "schema": { "type": "boolean" } }, { "in": "query", "name": "segment", "schema": { "type": "integer" }, "description": "Apply filters from a saved customer segment by ID. The segment must belong to the authenticated provider. Segment filters are combined with any additional ad-hoc filters in this request." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "Filter customers by status. Format as comma-separated status slugs. Pass `null` to filter for customers without a status." }, { "in": "query", "name": "total_spend_amount_gte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with total spend amount greater than or equal to this value." }, { "in": "query", "name": "total_spend_amount_lte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with total spend amount less than or equal to this value." } ], "tags": [ "Customers Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "created_date": { "type": "string", "format": "date", "description": "Date when the customer was created (YYYY-MM-DD)." }, "is_claimed": { "type": [ "boolean", "null" ], "description": "Whether the customer account has been claimed. `null` for unclaimed family members, whose accounts are managed by a family manager and cannot be claimed." }, "is_active": { "type": "boolean", "description": "Whether the customer is active." }, "has_account_credit": { "type": "boolean", "description": "Whether the customer has account credit." }, "created_month": { "type": "integer", "description": "Month when the customer was created." }, "created_year": { "type": "integer", "description": "Year when the customer was created." }, "birth_month": { "type": "integer", "description": "Month of the customer's birth." }, "gender": { "type": "string", "description": "Customer's gender." }, "created_hour": { "type": "integer", "description": "Hour of the day when the customer was created." }, "age": { "type": "integer", "description": "Customer's age in years." }, "is_new": { "type": "boolean", "description": "Whether the customer is new." }, "is_slipping_away": { "type": "boolean", "description": "Whether the customer is considered to be slipping away." }, "registration_blocked": { "type": "boolean", "description": "Whether the customer is blocked from registration." }, "count": { "type": "integer", "description": "Count of grouped records." } } } } } } } } } } } }, "/reports/customers.grouped/export": { "post": { "operationId": "reports_customers.grouped_export_export_data", "description": "Export the report data to a downloadable file.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customers Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedCustomersReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedCustomersReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedCustomersReportParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/customers/data": { "get": { "operationId": "reports_customers_data_get_data", "description": "This report allowing returning customers with all their available fields, optionally filtered by different criteria.", "summary": "Data", "parameters": [ { "in": "query", "name": "active_memberships", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customers who have particular memberships that are active. Format as comma-separated membership `id` values." }, { "in": "query", "name": "assigned_staff", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return customers assigned to specific staff members. Format as comma-separated staff (ProviderUser) `id` values." }, { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "full_name", "first_name", "last_name", "email", "created_at", "deleted_at", "is_active", "date_of_birth", "age", "phone_number", "address", "days_until_birthday", "gender", "is_claimed", "is_new", "is_slipping_away", "registration_blocked", "has_failed_payments", "has_retry_payments", "family_id", "family.id", "family", "family_name", "family.name", "family_role", "family.role", "family_managers", "family.managers", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "referral_code", "thumbnail_url", "active_customer_memberships", "inactive_customer_memberships", "on_hold_customer_memberships", "referring_member_id", "referring_member.id", "referring_member", "referrering_member_name", "referring_member.name", "account_credit_balance", "total_spend_amount", "last_payment_at", "last_payment_amount", "last_broadcast_at", "registered_and_attended_count", "registrations_count", "attendances_count", "late_cancels_count", "no_shows_count", "latest_registration", "next_registration_starts_at", "next_registration.starts_at", "next_registration", "next_registration_id", "next_registration.id", "next_registration_type", "next_registration.type", "last_registration_starts_at", "last_registration.starts_at", "last_registration", "last_registration_id", "last_registration.id", "last_registration_type", "last_registration.type", "emergency_contact_name", "emergency_contact.name", "emergency_contact", "emergency_contact_relationship", "emergency_contact.relationship", "emergency_contact_phone", "emergency_contact.phone", "lead_source", "lead_source.name", "is_lead", "status_slug", "status.slug", "status", "issues" ], "type": "string", "description": "* `id` - id\n* `full_name` - full_name\n* `first_name` - first_name\n* `last_name` - last_name\n* `email` - email\n* `created_at` - created_at\n* `deleted_at` - deleted_at\n* `is_active` - is_active\n* `date_of_birth` - date_of_birth\n* `age` - age\n* `phone_number` - phone_number\n* `address` - address\n* `days_until_birthday` - days_until_birthday\n* `gender` - gender\n* `is_claimed` - is_claimed\n* `is_new` - is_new\n* `is_slipping_away` - is_slipping_away\n* `registration_blocked` - registration_blocked\n* `has_failed_payments` - has_failed_payments\n* `has_retry_payments` - has_retry_payments\n* `family_id` - family_id\n* `family.id` - family.id\n* `family` - family\n* `family_name` - family_name\n* `family.name` - family.name\n* `family_role` - family_role\n* `family.role` - family.role\n* `family_managers` - family_managers\n* `family.managers` - family.managers\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `referral_code` - referral_code\n* `thumbnail_url` - thumbnail_url\n* `active_customer_memberships` - active_customer_memberships\n* `inactive_customer_memberships` - inactive_customer_memberships\n* `on_hold_customer_memberships` - on_hold_customer_memberships\n* `referring_member_id` - referring_member_id\n* `referring_member.id` - referring_member.id\n* `referring_member` - referring_member\n* `referrering_member_name` - referrering_member_name\n* `referring_member.name` - referring_member.name\n* `account_credit_balance` - account_credit_balance\n* `total_spend_amount` - total_spend_amount\n* `last_payment_at` - last_payment_at\n* `last_payment_amount` - last_payment_amount\n* `last_broadcast_at` - last_broadcast_at\n* `registered_and_attended_count` - registered_and_attended_count\n* `registrations_count` - registrations_count\n* `attendances_count` - attendances_count\n* `late_cancels_count` - late_cancels_count\n* `no_shows_count` - no_shows_count\n* `latest_registration` - latest_registration\n* `next_registration_starts_at` - next_registration_starts_at\n* `next_registration.starts_at` - next_registration.starts_at\n* `next_registration` - next_registration\n* `next_registration_id` - next_registration_id\n* `next_registration.id` - next_registration.id\n* `next_registration_type` - next_registration_type\n* `next_registration.type` - next_registration.type\n* `last_registration_starts_at` - last_registration_starts_at\n* `last_registration.starts_at` - last_registration.starts_at\n* `last_registration` - last_registration\n* `last_registration_id` - last_registration_id\n* `last_registration.id` - last_registration.id\n* `last_registration_type` - last_registration_type\n* `last_registration.type` - last_registration.type\n* `emergency_contact_name` - emergency_contact_name\n* `emergency_contact.name` - emergency_contact.name\n* `emergency_contact` - emergency_contact\n* `emergency_contact_relationship` - emergency_contact_relationship\n* `emergency_contact.relationship` - emergency_contact.relationship\n* `emergency_contact_phone` - emergency_contact_phone\n* `emergency_contact.phone` - emergency_contact.phone\n* `lead_source` - lead_source\n* `lead_source.name` - lead_source.name\n* `is_lead` - is_lead\n* `status_slug` - status_slug\n* `status.slug` - status.slug\n* `status` - status\n* `issues` - issues", "x-spec-enum-id": "6ec3170453cd440a" } }, "description": "Specify which columns to include." }, { "in": "query", "name": "created_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return rows for customers that were created on or after a particular timestamp." }, { "in": "query", "name": "created_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return rows for customers that were created on or before a particular timestamp." }, { "in": "query", "name": "created_at_timeframe", "schema": { "type": "string" }, "description": "Only return rows for customers that were created within a particular timeframe. See section on timeframe syntax for formatting." }, { "in": "query", "name": "date_of_birth_gte", "schema": { "type": "string", "format": "date" }, "description": "Only return rows for customers with a date of birth on or after this date." }, { "in": "query", "name": "date_of_birth_lte", "schema": { "type": "string", "format": "date" }, "description": "Only return rows for customers with a date of birth on or before this date." }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "has_account_credit", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have account credit or not." }, { "in": "query", "name": "has_active_membership", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have an active membership or not." }, { "in": "query", "name": "has_failed_payments", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have failed payments or not." }, { "in": "query", "name": "has_open_issues", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have open issues or not." }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "ids", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only return rows for customers with particular unique identifiers. Format as comma-separated `id` values." }, { "in": "query", "name": "include_deleted", "schema": { "type": "boolean", "default": false }, "description": "Whether to include deleted customers in the report." }, { "in": "query", "name": "is_active", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are active or not." }, { "in": "query", "name": "is_any", "schema": { "type": "array", "items": { "enum": [ "new", "claimed", "slipping_away", "inactive", "active", "registration_blocked", "lead" ], "type": "string", "description": "* `new` - new\n* `claimed` - claimed\n* `slipping_away` - slipping_away\n* `inactive` - inactive\n* `active` - active\n* `registration_blocked` - registration_blocked\n* `lead` - lead", "x-spec-enum-id": "18aceac25139e991" } }, "description": "Only include customers who have certain traits." }, { "in": "query", "name": "is_claimed", "schema": { "type": "boolean", "nullable": true }, "description": "Return rows based on whether customers are claimed or not. Pass `null` to return unclaimed family members, whose accounts cannot be claimed; `false` excludes them and returns only accounts that can still be claimed." }, { "in": "query", "name": "is_new", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are new or not." }, { "in": "query", "name": "is_slipping_away", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers are slipping away or not." }, { "in": "query", "name": "last_broadcast_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return customers last broadcast on or after this timestamp." }, { "in": "query", "name": "last_broadcast_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only return customers last broadcast on or before this timestamp." }, { "in": "query", "name": "last_payment_amount_gte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with last payment amount greater than or equal to this value." }, { "in": "query", "name": "last_payment_amount_lte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with last payment amount less than or equal to this value." }, { "in": "query", "name": "last_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose last registration starts on or after this timestamp." }, { "in": "query", "name": "last_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose last registration starts on or before this timestamp." }, { "in": "query", "name": "latest_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers who latest-registered event occurs on or after this timestamp." }, { "in": "query", "name": "latest_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers who latest-registered event occurs on or before this timestamp." }, { "in": "query", "name": "lead_source", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Filter customers by lead source IDs. Format as comma-separated lead source `id` values." }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "next_registration_starts_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose next registration starts on or after this timestamp." }, { "in": "query", "name": "next_registration_starts_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include customers whose next registration starts on or before this timestamp." }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "query", "schema": { "type": "string", "minLength": 1 }, "description": "Filter by a free-text string. Checks the `email` and name fields." }, { "in": "query", "name": "registered_and_attended_count_gte", "schema": { "type": "integer" }, "description": "Only return customers with total registrations greater than or equal to this value." }, { "in": "query", "name": "registered_and_attended_count_lte", "schema": { "type": "integer" }, "description": "Only return customers with total registrations less than or equal to this value." }, { "in": "query", "name": "registration_blocked", "schema": { "type": "boolean" } }, { "in": "query", "name": "segment", "schema": { "type": "integer" }, "description": "Apply filters from a saved customer segment by ID. The segment must belong to the authenticated provider. Segment filters are combined with any additional ad-hoc filters in this request." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "Filter customers by status. Format as comma-separated status slugs. Pass `null` to filter for customers without a status." }, { "in": "query", "name": "total_spend_amount_gte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with total spend amount greater than or equal to this value." }, { "in": "query", "name": "total_spend_amount_lte", "schema": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$" }, "description": "Only return customers with total spend amount less than or equal to this value." } ], "tags": [ "Customers Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "Unique identifier for the customer." }, "full_name": { "type": "string", "description": "Full name of the customer." }, "first_name": { "type": "string", "description": "First name of the customer." }, "last_name": { "type": "string", "description": "Last name of the customer." }, "email": { "type": "string", "description": "Email address of the customer." }, "created_at": { "type": "string", "description": "Date and time when the customer was created (ISO format)." }, "deleted_at": { "type": "string", "description": "Date and time when the customer was deleted (ISO format)." }, "is_active": { "type": "boolean", "description": "Whether the customer is active." }, "date_of_birth": { "type": "string", "format": "date", "description": "Customer's date of birth (YYYY-MM-DD)." }, "age": { "type": "integer", "description": "Customer's age in years." }, "phone_number": { "type": "string", "description": "Customer's phone number." }, "address": { "type": "object", "properties": { "first_line": { "type": "string" }, "second_line": { "type": "string" }, "city": { "type": "string" }, "region": { "type": "string" }, "country": { "type": "string" }, "postal_code": { "type": "string" } }, "required": [ "first_line", "city", "country", "postal_code" ], "description": "Customer's address details." }, "days_until_birthday": { "type": "integer", "description": "Number of days until the customer's next birthday." }, "gender": { "type": "string", "description": "Customer's gender." }, "is_claimed": { "type": [ "boolean", "null" ], "description": "Whether the customer account has been claimed. `null` for unclaimed family members, whose accounts are managed by a family manager and cannot be claimed." }, "is_new": { "type": "boolean", "description": "Whether the customer is new." }, "is_slipping_away": { "type": "boolean", "description": "Whether the customer is considered to be slipping away." }, "registration_blocked": { "type": "boolean", "description": "Whether the customer is blocked from registration." }, "has_failed_payments": { "type": "boolean", "description": "Whether the customer has failed payments." }, "has_retry_payments": { "type": "boolean", "description": "Whether the customer has payments in retry." }, "family": { "type": "object", "properties": { "id": { "type": "integer", "description": "ID of the customer's family." }, "name": { "type": "string", "description": "Name of the customer's family." }, "role": { "type": "string", "description": "Role of the customer within the family (e.g., Manager, Member)." }, "managers": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] }, "description": "List of managers in the customer's family." } } }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "ID of the venue associated with the customer." }, "name": { "type": "string", "description": "Name of the venue associated with the customer." } } }, "instructor": { "type": "object", "properties": { "id": { "type": "integer", "description": "ID of the instructor associated with the customer." }, "name": { "type": "string", "description": "Name of the instructor associated with the customer." } } }, "referral_code": { "type": "string", "description": "Referral code used by the customer." }, "thumbnail_url": { "type": "string", "description": "URL of the customer's thumbnail image." }, "active_customer_memberships": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "membership": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] } }, "required": [ "id", "membership" ] }, "description": "List of active memberships for the customer." }, "inactive_customer_memberships": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "membership": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] } }, "required": [ "id", "membership" ] }, "description": "List of inactive memberships for the customer." }, "on_hold_customer_memberships": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "membership": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] } }, "required": [ "id", "membership" ] }, "description": "List of on-hold memberships for the customer." }, "referring_member": { "type": "object", "properties": { "id": { "type": "integer", "description": "ID of the member who referred this customer." }, "name": { "type": "string", "description": "Name of the member who referred this customer." } } }, "account_credit_balance": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "Customer's account credit balance." }, "total_spend_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "Customer's total spend amount." }, "last_payment_at": { "type": "string", "format": "date-time", "description": "Date and time of the customer's last payment (ISO format)." }, "last_payment_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "Amount of the customer's last payment." }, "last_broadcast_at": { "type": "string", "format": "date-time", "description": "Date and time the customer was last sent a broadcast message (SMS or email)." }, "registered_and_attended_count": { "type": "integer", "description": "Total number of events where the customer registered or attended." }, "registrations_count": { "type": "integer", "description": "Number of events where the customer registered." }, "attendances_count": { "type": "integer", "description": "Number of events where the customer attended." }, "late_cancels_count": { "type": "integer", "description": "Number of events where the customer had a late cancel." }, "no_shows_count": { "type": "integer", "description": "Number of events where the customer was a no-show." }, "latest_registration": { "type": "object", "properties": { "id": { "type": "integer" }, "starts_at": { "type": "string", "format": "date-time" }, "name": { "type": "string" }, "type": { "type": "string", "enum": [ "event", "course_session" ] } }, "required": [ "id", "starts_at", "name", "type" ], "description": "Information about the customer's most recent registration or attendance." }, "next_registration": { "type": "object", "properties": { "starts_at": { "type": "string", "description": "Start date and time of the customer's nearest upcoming registration (event or course session)." }, "id": { "type": "integer", "description": "Event ID or course session ID for the customer's nearest upcoming registration." }, "type": { "type": "string", "description": "Registration type for the customer's nearest upcoming registration: `course_session` for course sessions, otherwise `event`." } } }, "last_registration": { "type": "object", "properties": { "starts_at": { "type": "string", "description": "Start date and time of the customer's most recent past registration (event or course session)." }, "id": { "type": "integer", "description": "Event ID or course session ID for the customer's most recent registration." }, "type": { "type": "string", "description": "Registration type for the customer's most recent registration: `course_session` for course sessions, otherwise `event`." } } }, "emergency_contact": { "type": "object", "properties": { "name": { "type": "string", "description": "Name of the customer's emergency contact." }, "relationship": { "type": "string", "description": "Relationship of the emergency contact to the customer." }, "phone": { "type": "string", "description": "Phone number of the customer's emergency contact." } } }, "lead_source": { "type": "object", "properties": { "name": { "type": "string", "description": "Lead source for the customer." } } }, "is_lead": { "type": "boolean", "description": "Whether the customer is a lead." }, "status": { "type": "object", "properties": { "slug": { "type": "string", "description": "CRM status slug for the customer." } } }, "issues": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] }, "description": "List of issues associated with the customer." } } } } } } } } } } } }, "/reports/customers/export": { "post": { "operationId": "reports_customers_export_export_data", "description": "Export the report data to a downloadable file.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Customers Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CustomersReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CustomersReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CustomersReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/discount_code_uses.grouped/data": { "get": { "operationId": "reports_discount_code_uses.grouped_data_get_data", "description": "Get aggregate data on discount code uses.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "discount_code_id", "discount_code.id", "discount_code", "discount_code_name", "discount_code.name", "discount_code_code", "discount_code.code", "group_id", "group.id", "group", "group_name", "group.name", "use_type", "month", "year", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `discount_code_id` - discount_code_id\n* `discount_code.id` - discount_code.id\n* `discount_code` - discount_code\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code_code` - discount_code_code\n* `discount_code.code` - discount_code.code\n* `group_id` - group_id\n* `group.id` - group.id\n* `group` - group\n* `group_name` - group_name\n* `group.name` - group.name\n* `use_type` - use_type\n* `month` - month\n* `year` - year\n* `count` - count", "x-spec-enum-id": "f063beaca29c2e44" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "discount_codes", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "groups", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "use_types", "schema": { "type": "array", "items": { "enum": [ "class", "course", "membership", "store_order" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `membership` - membership\n* `store_order` - store_order", "x-spec-enum-id": "aea60e1efb622221" } } }, { "in": "query", "name": "used_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "used_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "used_at_timeframe", "schema": { "type": "string" } } ], "tags": [ "Discount Code Uses Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The name of the customer." }, "email": { "type": "string", "description": "The email address of the customer." } } }, "discount_code": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the discount code." }, "name": { "type": "string", "description": "The name of the discount code." }, "code": { "type": "string", "description": "The code of the discount code." } } }, "group": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the discount code group." }, "name": { "type": "string", "description": "" } } }, "use_type": { "type": "string", "description": "", "enum": [ "class", "course", "membership", "store_order", "unknown" ] }, "month": { "type": "integer", "description": "" }, "year": { "type": "integer", "description": "" }, "count": { "type": "integer", "description": "The count of discount code uses in the group." } } } } } } } } } } } }, "/reports/discount_code_uses.grouped/export": { "post": { "operationId": "reports_discount_code_uses.grouped_export_export_data", "description": "Export aggregate data on discount code uses.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Discount Code Uses Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedDiscountCodeUsesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedDiscountCodeUsesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedDiscountCodeUsesParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/discount_code_uses/data": { "get": { "operationId": "reports_discount_code_uses_data_get_data", "description": "Get data on discount code uses.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "discount_code_id", "discount_code.id", "discount_code", "discount_code_name", "discount_code.name", "discount_code_code", "discount_code.code", "group_id", "group.id", "group", "group_name", "group.name", "use_type", "used_for", "used_at" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `discount_code_id` - discount_code_id\n* `discount_code.id` - discount_code.id\n* `discount_code` - discount_code\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code_code` - discount_code_code\n* `discount_code.code` - discount_code.code\n* `group_id` - group_id\n* `group.id` - group.id\n* `group` - group\n* `group_name` - group_name\n* `group.name` - group.name\n* `use_type` - use_type\n* `used_for` - used_for\n* `used_at` - used_at", "x-spec-enum-id": "0a65fa88d13ffefd" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "discount_codes", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "groups", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "use_types", "schema": { "type": "array", "items": { "enum": [ "class", "course", "membership", "store_order" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `membership` - membership\n* `store_order` - store_order", "x-spec-enum-id": "aea60e1efb622221" } } }, { "in": "query", "name": "used_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "used_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "used_at_timeframe", "schema": { "type": "string" } } ], "tags": [ "Discount Code Uses Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The name of the customer." }, "email": { "type": "string", "description": "The email address of the customer." } } }, "discount_code": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the discount code." }, "name": { "type": "string", "description": "The name of the discount code." }, "code": { "type": "string", "description": "The code of the discount code." } } }, "group": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the discount code group." }, "name": { "type": "string", "description": "" } } }, "use_type": { "type": "string", "description": "", "enum": [ "class", "course", "membership", "store_order", "unknown" ] }, "used_for": { "type": "object", "properties": { "id": { "oneOf": [ { "type": "integer" }, { "type": "string" } ] }, "label": { "type": "string" }, "type": { "type": "string" } }, "description": "" }, "used_at": { "type": "string", "format": "date-time", "description": "When the discount code was used." } } } } } } } } } } } }, "/reports/discount_code_uses/export": { "post": { "operationId": "reports_discount_code_uses_export_export_data", "description": "Export data on discount code uses.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Discount Code Uses Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/DiscountCodeUsesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/DiscountCodeUsesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/DiscountCodeUsesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/gift_cards/data": { "get": { "operationId": "reports_gift_cards_data_get_data", "description": "Get data on gift cards.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "purchased_at", "purchaser_pk", "purchaser_id", "purchaser_name", "recipient_email", "recipient_name", "amount", "redeem_by", "deliver_on_date", "is_delivered", "delivered_at", "is_redeemed", "redeemed_at", "status", "is_paid" ], "type": "string", "description": "* `id` - id\n* `purchased_at` - purchased_at\n* `purchaser_pk` - purchaser_pk\n* `purchaser_id` - purchaser_id\n* `purchaser_name` - purchaser_name\n* `recipient_email` - recipient_email\n* `recipient_name` - recipient_name\n* `amount` - amount\n* `redeem_by` - redeem_by\n* `deliver_on_date` - deliver_on_date\n* `is_delivered` - is_delivered\n* `delivered_at` - delivered_at\n* `is_redeemed` - is_redeemed\n* `redeemed_at` - redeemed_at\n* `status` - status\n* `is_paid` - is_paid", "x-spec-enum-id": "3f519d1ca05307b4" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "purchased_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "purchased_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "purchasers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "enum": [ "scheduled", "delivered", "redeemed", "expired" ], "type": "string", "description": "* `scheduled` - scheduled\n* `delivered` - delivered\n* `redeemed` - redeemed\n* `expired` - expired", "x-spec-enum-id": "1abd45139cd2065e" } } } ], "tags": [ "Gift Cards Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The integer unique identifier for the gift card." }, "purchased_at": { "type": "string", "format": "date-time", "description": "The date and time when the gift card was purchased." }, "purchaser_id": { "type": "integer", "description": "The customer who purchased the gift card." }, "purchaser_name": { "type": "string", "description": "The name of the customer who purchased the gift card." }, "recipient_email": { "type": "string", "description": "The email address of the recipient of the gift card." }, "recipient_name": { "type": "string", "description": "The name of the recipient of the gift card." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The monetary value of the gift card at time of purchase." }, "redeem_by": { "type": "string", "format": "date-time", "description": "The datetime by which the gift card must be redeemed." }, "deliver_on_date": { "type": "string", "format": "date", "description": "The date on which the gift card will be delivered to the recipient." }, "is_delivered": { "type": "boolean", "description": "Indicates whether the gift card has been delivered to the recipient." }, "delivered_at": { "type": "string", "format": "date-time", "description": "The date and time when the gift card was delivered to the recipient." }, "is_redeemed": { "type": "boolean", "description": "Indicates whether the gift card has been redeemed by the recipient." }, "redeemed_at": { "type": "string", "format": "date-time", "description": "The date and time when the gift card was redeemed by the recipient." }, "status": { "type": "string", "description": "The current status of the gift card. Can be 'scheduled', 'not_delivered', 'delivered', or 'redeemed'." }, "is_paid": { "type": "boolean", "description": "Indicates whether the gift card purchase has been paid." } } } } } } } } } } } }, "/reports/gift_cards/export": { "post": { "operationId": "reports_gift_cards_export_export_data", "description": "Export data on gift cards.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Gift Cards Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GiftCardsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GiftCardsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GiftCardsReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/instructed_sessions/data": { "get": { "operationId": "reports_instructed_sessions_data_get_data", "description": "Get data on instructed sessions (classes and course sessions).", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "instructor_thumbnail_url", "instructor.thumbnail_url", "starts_at", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "venue_timezone", "max_occupancy", "hours", "attended_count", "no_show_count", "late_cancel_count", "attended_comped_count", "comped_counts.attended", "comped_counts", "session_type", "instructor_pay_rate_id", "instructor_pay_rate.id", "instructor_pay_rate", "instructor_pay_rate_name", "instructor_pay_rate.name", "instructor_pay_rate_type", "instructor_pay_rate.type", "instructor_pay_rate_base", "instructor_pay_rate.base", "instructor_pay", "pay_rate_tiers", "instructor_pay_rate.tiers", "instructor_pay_calculation_pending" ], "type": "string", "description": "* `id` - id\n* `name` - name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `instructor_thumbnail_url` - instructor_thumbnail_url\n* `instructor.thumbnail_url` - instructor.thumbnail_url\n* `starts_at` - starts_at\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `venue_timezone` - venue_timezone\n* `max_occupancy` - max_occupancy\n* `hours` - hours\n* `attended_count` - attended_count\n* `no_show_count` - no_show_count\n* `late_cancel_count` - late_cancel_count\n* `attended_comped_count` - attended_comped_count\n* `comped_counts.attended` - comped_counts.attended\n* `comped_counts` - comped_counts\n* `session_type` - session_type\n* `instructor_pay_rate_id` - instructor_pay_rate_id\n* `instructor_pay_rate.id` - instructor_pay_rate.id\n* `instructor_pay_rate` - instructor_pay_rate\n* `instructor_pay_rate_name` - instructor_pay_rate_name\n* `instructor_pay_rate.name` - instructor_pay_rate.name\n* `instructor_pay_rate_type` - instructor_pay_rate_type\n* `instructor_pay_rate.type` - instructor_pay_rate.type\n* `instructor_pay_rate_base` - instructor_pay_rate_base\n* `instructor_pay_rate.base` - instructor_pay_rate.base\n* `instructor_pay` - instructor_pay\n* `pay_rate_tiers` - pay_rate_tiers\n* `instructor_pay_rate.tiers` - instructor_pay_rate.tiers\n* `instructor_pay_calculation_pending` - instructor_pay_calculation_pending", "x-spec-enum-id": "93bc3d013a580a2c" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "pay_rates", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "session_types", "schema": { "type": "array", "items": { "enum": [ "class", "course_session" ], "type": "string", "description": "* `class` - class\n* `course_session` - course_session", "x-spec-enum-id": "2e08a88661d67892" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Instructed Sessions Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructed session." }, "name": { "type": "string", "description": "The name of the session (event or course)." }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the offering type." }, "name": { "type": "string", "description": "The name of the offering type." } } }, "instructor": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor." }, "name": { "type": "string", "description": "The name of the instructor." }, "thumbnail_url": { "type": "string", "description": "The URL of the instructor's profile thumbnail image." } } }, "starts_at": { "type": "string", "description": "The start date and time of the session." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the venue." }, "name": { "type": "string", "description": "The name of the venue." } } }, "venue_timezone": { "type": "string", "description": "The timezone of the venue." }, "max_occupancy": { "type": "integer", "description": "The maximum number of participants allowed in the session." }, "hours": { "type": "number", "description": "The duration of the session in hours." }, "attended_count": { "type": "integer", "description": "The number of participants who attended the session." }, "no_show_count": { "type": "integer", "description": "The number of participants who did not show up for the session." }, "late_cancel_count": { "type": "integer", "description": "The number of late cancellations for the session." }, "comped_counts": { "type": "object", "properties": { "attended": { "type": "integer", "description": "The number of participants who attended with a comped (free) booking." } } }, "session_type": { "type": "string", "description": "The type of session: 'class' for events or 'course_session' for course dates." }, "instructor_pay_rate": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor's pay rate." }, "name": { "type": "string", "description": "The name of the instructor's pay rate." }, "type": { "type": "string", "description": "The type of instructor pay rate (per_customer, per_hour, or per_customer_tiered)." }, "base": { "type": "string", "description": "The base rate amount for instructor pay." }, "tiers": { "type": "array", "items": { "type": "object", "properties": { "upper_bound": { "type": [ "number", "null" ] }, "lower_bound": { "type": "number" }, "per_customer_amount": { "type": "object", "properties": { "amount": { "type": "number" }, "currency": { "type": "string" } } } } }, "description": "The tiered pay rate structure for per_customer_tiered pay rates." } } }, "instructor_pay": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The calculated pay amount for the instructor." }, "instructor_pay_calculation_pending": { "type": "boolean", "description": "Whether the instructor pay calculation is still pending." } } } } } } } } } } } }, "/reports/instructed_sessions/export": { "post": { "operationId": "reports_instructed_sessions_export_export_data", "description": "Export data on instructed sessions (classes and course sessions).", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Instructed Sessions Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructedSessionsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InstructedSessionsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InstructedSessionsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/instructors/data": { "get": { "operationId": "reports_instructors_data_get_data", "description": "Get data on instructors.", "summary": "Data", "parameters": [ { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "instructors", "schema": { "type": "string" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offering_types", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "pay_rates", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "starts_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "starts_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "venues", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Instructors Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the instructor." }, "name": { "type": "string", "description": "The instructor's full name." }, "total_sessions": { "type": "integer", "description": "The total number of sessions (events and course dates) taught by the instructor." }, "total_hours": { "type": "number", "description": "The total number of hours taught by the instructor." }, "total_pay": { "type": "string", "description": "The total pay amount for the instructor across all sessions." } } } } } } } } } } } }, "/reports/instructors/export": { "post": { "operationId": "reports_instructors_export_export_data", "description": "Export data on instructors.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Instructors Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InstructorsReportParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InstructorsReportParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InstructorsReportParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/invoice_line_items.grouped/data": { "get": { "operationId": "reports_invoice_line_items.grouped_data_get_data", "description": "Get grouped data on invoice line items.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "total_amount", "type" ], "type": "string", "description": "* `total_amount` - total_amount\n* `type` - type", "x-spec-enum-id": "b8eab35afa0f4693" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "invoice_confirmed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_confirmed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_due_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "invoice_due_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "invoice_paid_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_paid_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_status", "schema": { "type": "string" } }, { "in": "query", "name": "invoice_updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } } } ], "tags": [ "Invoice Line Items Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "total_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The summed amount/price of the line item." }, "type": { "type": "string", "description": "The purchase type of the line item.", "enum": [ "pack_membership", "prepaid_plan_membership", "recurring_plan_membership", "membership_purchase", "event_registration", "course", "course_session", "store_order", "flat_fee", "service_fee" ] } } } } } } } } } } } }, "/reports/invoice_line_items.grouped/export": { "post": { "operationId": "reports_invoice_line_items.grouped_export_export_data", "description": "Export grouped data on invoice line items.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Invoice Line Items Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedInvoiceLineItemsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedInvoiceLineItemsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedInvoiceLineItemsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/invoice_line_items/data": { "get": { "operationId": "reports_invoice_line_items_data_get_data", "description": "Get data on invoice line items.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "invoice_id", "invoice.id", "invoice", "due_date", "invoice.due_date", "invoice_number", "invoice.number", "invoice_confirmed_at", "invoice.confirmed_at", "paid_at", "invoice.paid_at", "invoice_updated_at", "invoice.updated_at", "invoice_status", "invoice.status", "invoice_is_credit_note", "invoice.is_credit_note", "discount_code_name", "invoice.discount_code.name", "invoice.discount_code", "discount_code", "invoice.discount_code.code", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "amount", "type", "billed_item", "description", "tax_amount", "discount_amount", "credit_amount", "refund_amount" ], "type": "string", "description": "* `id` - id\n* `invoice_id` - invoice_id\n* `invoice.id` - invoice.id\n* `invoice` - invoice\n* `due_date` - due_date\n* `invoice.due_date` - invoice.due_date\n* `invoice_number` - invoice_number\n* `invoice.number` - invoice.number\n* `invoice_confirmed_at` - invoice_confirmed_at\n* `invoice.confirmed_at` - invoice.confirmed_at\n* `paid_at` - paid_at\n* `invoice.paid_at` - invoice.paid_at\n* `invoice_updated_at` - invoice_updated_at\n* `invoice.updated_at` - invoice.updated_at\n* `invoice_status` - invoice_status\n* `invoice.status` - invoice.status\n* `invoice_is_credit_note` - invoice_is_credit_note\n* `invoice.is_credit_note` - invoice.is_credit_note\n* `discount_code_name` - discount_code_name\n* `invoice.discount_code.name` - invoice.discount_code.name\n* `invoice.discount_code` - invoice.discount_code\n* `discount_code` - discount_code\n* `invoice.discount_code.code` - invoice.discount_code.code\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `amount` - amount\n* `type` - type\n* `billed_item` - billed_item\n* `description` - description\n* `tax_amount` - tax_amount\n* `discount_amount` - discount_amount\n* `credit_amount` - credit_amount\n* `refund_amount` - refund_amount", "x-spec-enum-id": "3975bf75dfbdd625" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "invoice_confirmed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_confirmed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_due_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "invoice_due_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "invoice_paid_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_paid_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_status", "schema": { "type": "string" } }, { "in": "query", "name": "invoice_updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "invoice_updated_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } } } ], "tags": [ "Invoice Line Items Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier of the line item." }, "invoice": { "type": "object", "properties": { "id": { "type": "integer", "description": "The invoice ID of the line item." }, "due_date": { "type": "string", "format": "date", "description": "The due date of the line item's invoice." }, "number": { "type": "string", "description": "The invoice number of the line item." }, "confirmed_at": { "type": "string", "format": "date-time", "description": "When the associated invoice was confirmed." }, "paid_at": { "type": "string", "format": "date-time", "description": "When the associated invoice was paid." }, "updated_at": { "type": "string", "format": "date-time", "description": "When the associated invoice was last updated." }, "status": { "type": "string", "description": "The line item's invoice status." }, "is_credit_note": { "type": "boolean", "description": "Whether the line item's invoice is a credit note." }, "discount_code": { "type": "object", "properties": { "name": { "type": "string", "description": "The name of the discount code applied to the invoice." }, "code": { "type": "string", "description": "The discount code applied to the invoice." } } } } }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the customer." }, "name": { "type": "string", "description": "The name of the customer." }, "email": { "type": "string", "description": "The email of the customer." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier of the customer's venue." }, "name": { "type": "string", "description": "The name of the customer's venue." } } } } }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The amount/price of the line item." }, "type": { "type": "string", "description": "The purchase type of the line item.", "enum": [ "pack_membership", "prepaid_plan_membership", "recurring_plan_membership", "membership_purchase", "event_registration", "course", "course_session", "store_order", "flat_fee", "service_fee" ] }, "billed_item": { "type": "object", "properties": { "object": { "type": "string", "enum": [ "event", "event_registration", "appointment_slot", "room_rental_slot", "course", "course_session", "customer_membership", "customer_membership_setup", "purchase_fee", "store_order_item" ] }, "id": { "type": "integer" } }, "description": "" }, "description": { "type": "string", "description": "" }, "tax_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The tax amount attributable to the line item." }, "discount_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The discount amount attributable to the line item." }, "credit_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The credit amount attributable to the line item." }, "refund_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The refund amount attributable to the line item." } } } } } } } } } } } }, "/reports/invoice_line_items/export": { "post": { "operationId": "reports_invoice_line_items_export_export_data", "description": "Export data on invoice line items.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Invoice Line Items Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoiceLineItemsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InvoiceLineItemsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InvoiceLineItemsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/invoices.grouped/data": { "get": { "operationId": "reports_invoices.grouped_data_get_data", "description": "Get aggregate data on invoices.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "status", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "purchase_type", "payment_processor", "due_date_month", "due_date_year", "payment_month", "payment_year", "payout_month", "payout_year", "purchased_item", "purchase_fee_type", "count" ], "type": "string", "description": "* `status` - status\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `purchase_type` - purchase_type\n* `payment_processor` - payment_processor\n* `due_date_month` - due_date_month\n* `due_date_year` - due_date_year\n* `payment_month` - payment_month\n* `payment_year` - payment_year\n* `payout_month` - payout_month\n* `payout_year` - payout_year\n* `purchased_item` - purchased_item\n* `purchase_fee_type` - purchase_fee_type\n* `count` - count", "x-spec-enum-id": "1d70fdbc10c69fa0" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "confirmed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "confirmed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "credit_applied", "schema": { "type": "boolean" } }, { "in": "query", "name": "customer_memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "discount_applied", "schema": { "type": "boolean" } }, { "in": "query", "name": "due_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "due_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "due_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "paid_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "paid_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "paid_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "payment_processors", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "purchase_types", "schema": { "type": "array", "items": { "enum": [ "class", "course", "course_session", "membership", "store" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `course_session` - course_session\n* `membership` - membership\n* `store` - store", "x-spec-enum-id": "e151cefcdf6191ed" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } } }, { "in": "query", "name": "status", "schema": { "type": "string" } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } } ], "tags": [ "Invoices Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "status": { "type": "string", "description": "The current status of the invoice.", "enum": [ "open", "paid", "pending_offline", "pending_online", "failed", "voided", "upcoming", "skipped", "retrying", "retry_failed" ] }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "purchase_type": { "type": "string", "description": "" }, "payment_processor": { "type": "string", "description": "The payment processor used for the invoice." }, "due_date_month": { "type": "string", "description": "" }, "due_date_year": { "type": "string", "description": "" }, "payment_month": { "type": "integer", "description": "The month when the invoice was paid." }, "payment_year": { "type": "integer", "description": "The year when the invoice was paid." }, "payout_month": { "type": "string", "description": "" }, "payout_year": { "type": "string", "description": "" }, "purchased_item": { "type": "object", "description": "The main item that was purchased on the invoice." }, "purchase_fee_type": { "type": "string", "description": "The type of purchase fee applied to the invoice." }, "count": { "type": "string", "description": "" } } } } } } } } } } } }, "/reports/invoices.grouped/export": { "post": { "operationId": "reports_invoices.grouped_export_export_data", "description": "Export aggregate data on invoices.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Invoices Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedInvoicesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedInvoicesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedInvoicesParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/invoices/data": { "get": { "operationId": "reports_invoices_data_get_data", "description": "Get data on invoices.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "due_date", "confirmed_at", "paid_at", "status", "is_credit_note", "refunded_invoice_id", "refunded_invoice.id", "refunded_invoice", "number", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "total_amount", "subtotal_amount", "discount_amount", "tax_amount", "credit_amount", "adjustment_amount", "expected_payment_amount", "refund_amount", "refund_date", "discount_code_name", "discount_code.name", "discount_code", "discount_code.code", "payment_processor", "purchase_type", "purchase_items", "payout", "applied_credits", "charges", "updated_at", "legacy_mapping" ], "type": "string", "description": "* `id` - id\n* `due_date` - due_date\n* `confirmed_at` - confirmed_at\n* `paid_at` - paid_at\n* `status` - status\n* `is_credit_note` - is_credit_note\n* `refunded_invoice_id` - refunded_invoice_id\n* `refunded_invoice.id` - refunded_invoice.id\n* `refunded_invoice` - refunded_invoice\n* `number` - number\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `total_amount` - total_amount\n* `subtotal_amount` - subtotal_amount\n* `discount_amount` - discount_amount\n* `tax_amount` - tax_amount\n* `credit_amount` - credit_amount\n* `adjustment_amount` - adjustment_amount\n* `expected_payment_amount` - expected_payment_amount\n* `refund_amount` - refund_amount\n* `refund_date` - refund_date\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code` - discount_code\n* `discount_code.code` - discount_code.code\n* `payment_processor` - payment_processor\n* `purchase_type` - purchase_type\n* `purchase_items` - purchase_items\n* `payout` - payout\n* `applied_credits` - applied_credits\n* `charges` - charges\n* `updated_at` - updated_at\n* `legacy_mapping` - legacy_mapping", "x-spec-enum-id": "7e7898caab001a75" } } }, { "in": "query", "name": "confirmed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "confirmed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "credit_applied", "schema": { "type": "boolean" } }, { "in": "query", "name": "customer_memberships", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "discount_applied", "schema": { "type": "boolean" } }, { "in": "query", "name": "due_date_gte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "due_date_lte", "schema": { "type": "string", "format": "date" } }, { "in": "query", "name": "due_date_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "paid_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "paid_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "paid_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "payment_processors", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "purchase_types", "schema": { "type": "array", "items": { "enum": [ "class", "course", "course_session", "membership", "store" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `course_session` - course_session\n* `membership` - membership\n* `store` - store", "x-spec-enum-id": "e151cefcdf6191ed" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } } }, { "in": "query", "name": "status", "schema": { "type": "string" } }, { "in": "query", "name": "updated_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "updated_at_lte", "schema": { "type": "string", "format": "date-time" } } ], "tags": [ "Invoices Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The unique identifier for the invoice." }, "due_date": { "type": "string", "format": "date", "description": "The date when the invoice is due for payment." }, "confirmed_at": { "type": "string", "format": "date-time", "description": "When the invoice was confirmed." }, "paid_at": { "type": "string", "format": "date-time", "description": "When the invoice was paid." }, "status": { "type": "string", "description": "The current status of the invoice.", "enum": [ "open", "paid", "pending_offline", "pending_online", "failed", "voided", "upcoming", "skipped", "retrying", "retry_failed" ] }, "is_credit_note": { "type": "boolean", "description": "Whether the invoice is a credit note." }, "refunded_invoice": { "type": "object", "properties": { "id": { "type": "integer", "description": "The ID of the invoice that this credit note refunds." } } }, "number": { "type": "string", "description": "The provider-assigned invoice number." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." }, "venue": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer's venue." }, "name": { "type": "string", "description": "The name of the customer's venue." } } } } }, "total_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The total amount of the invoice including taxes and discounts." }, "subtotal_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The subtotal amount of the invoice before taxes and discounts." }, "discount_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The total discount amount applied to the invoice." }, "tax_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "credit_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "adjustment_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "expected_payment_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "refund_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "" }, "refund_date": { "type": "string", "format": "date", "description": "" }, "discount_code": { "type": "object", "properties": { "name": { "type": "string", "description": "" }, "code": { "type": "string", "description": "" } } }, "payment_processor": { "type": "string", "description": "" }, "purchase_type": { "type": "string", "description": "" }, "purchase_items": { "type": "string", "description": "" }, "payout": { "type": "string", "description": "" }, "applied_credits": { "type": "array", "items": { "type": "object", "properties": { "amount": { "type": "object", "properties": { "decimal": { "type": "string" } } } } }, "description": "List of credits applied to the invoice." }, "charges": { "type": "array", "items": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time" }, "amount": { "type": "object", "properties": { "decimal": { "type": "string" }, "currency": { "type": "string" } } }, "confirmed_at": { "type": "string", "format": "date-time" } } }, "description": "List of charges associated with the invoice." }, "updated_at": { "type": "string", "format": "date-time", "description": "When the invoice was last updated." }, "legacy_mapping": { "type": "object", "description": "Legacy system mapping information for the invoice." } } } } } } } } } } } }, "/reports/invoices/export": { "post": { "operationId": "reports_invoices_export_export_data", "description": "Export data on invoices.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Invoices Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/InvoicesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/InvoicesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/InvoicesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/sms_messages.grouped/data": { "get": { "operationId": "reports_sms_messages.grouped_data_get_data", "description": "Get aggregate data on SMS messages.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "interaction_trigger", "interaction.trigger", "interaction", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `interaction_trigger` - interaction_trigger\n* `interaction.trigger` - interaction.trigger\n* `interaction` - interaction\n* `count` - count", "x-spec-enum-id": "e3bbea99a3f96ccb" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include rows for particular customers. Formas as customer `id` values." }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "interaction_triggers", "schema": { "type": "array", "items": { "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ], "type": "string", "description": "* `waitlist_added` - waitlist_added\n* `waitlist_spot_available` - waitlist_spot_available\n* `waitlist_spot_expired` - waitlist_spot_expired\n* `waitlist_removed` - waitlist_removed\n* `event_cancelled` - event_cancelled\n* `event_changed` - event_changed\n* `event_registration_confirmed` - event_registration_confirmed\n* `event_reminder` - event_reminder\n* `verification_code` - verification_code\n* `two_factor_authentication` - two_factor_authentication\n* `broadcast_message` - broadcast_message\n* `boxmate_journey` - boxmate_journey", "x-spec-enum-id": "09bdc98710126411" } }, "description": "Only include rows with particular triggers." }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] } }, "description": "Only include rows with particular statuses." }, { "in": "query", "name": "status_updated_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include messages with a status update on or after a timestamp." }, { "in": "query", "name": "status_updated_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include messages with a status update on or before a timestamp." }, { "in": "query", "name": "status_updated_at_timeframe", "schema": { "type": "string" }, "description": "Only include messages with a status update within a particular timeframe." } ], "tags": [ "SMS Messages Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The customer's unique identifier." }, "name": { "type": "string", "description": "The customer's name." }, "email": { "type": "string", "description": "The customer's email." } } }, "status": { "type": "string", "description": "The message status.", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] }, "interaction": { "type": "object", "properties": { "trigger": { "type": "string", "description": "The event type that triggered the message.", "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ] } } }, "count": { "type": "integer", "description": "The total number of SMS messages in the group." } } } } } } } } } } } }, "/reports/sms_messages.grouped/export": { "post": { "operationId": "reports_sms_messages.grouped_export_export_data", "description": "Export aggregate data on SMS messages.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "SMS Messages Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedSMSMessagesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedSMSMessagesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedSMSMessagesParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/sms_messages/data": { "get": { "operationId": "reports_sms_messages_data_get_data", "description": "Get data on SMS messages.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "status_updated_at", "queued_at", "content", "interaction_trigger", "interaction.trigger", "interaction" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `status_updated_at` - status_updated_at\n* `queued_at` - queued_at\n* `content` - content\n* `interaction_trigger` - interaction_trigger\n* `interaction.trigger` - interaction.trigger\n* `interaction` - interaction", "x-spec-enum-id": "5893eeaa044e1943" } }, "description": "Specify which columns to include." }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "Only include rows for particular customers. Formas as customer `id` values." }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "interaction_triggers", "schema": { "type": "array", "items": { "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ], "type": "string", "description": "* `waitlist_added` - waitlist_added\n* `waitlist_spot_available` - waitlist_spot_available\n* `waitlist_spot_expired` - waitlist_spot_expired\n* `waitlist_removed` - waitlist_removed\n* `event_cancelled` - event_cancelled\n* `event_changed` - event_changed\n* `event_registration_confirmed` - event_registration_confirmed\n* `event_reminder` - event_reminder\n* `verification_code` - verification_code\n* `two_factor_authentication` - two_factor_authentication\n* `broadcast_message` - broadcast_message\n* `boxmate_journey` - boxmate_journey", "x-spec-enum-id": "09bdc98710126411" } }, "description": "Only include rows with particular triggers." }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] } }, "description": "Only include rows with particular statuses." }, { "in": "query", "name": "status_updated_at_gte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include messages with a status update on or after a timestamp." }, { "in": "query", "name": "status_updated_at_lte", "schema": { "type": "string", "format": "date-time" }, "description": "Only include messages with a status update on or before a timestamp." }, { "in": "query", "name": "status_updated_at_timeframe", "schema": { "type": "string" }, "description": "Only include messages with a status update within a particular timeframe." } ], "tags": [ "SMS Messages Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The customer's unique identifier." }, "name": { "type": "string", "description": "The customer's name." }, "email": { "type": "string", "description": "The customer's email." } } }, "status": { "type": "string", "description": "The message status.", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] }, "status_updated_at": { "type": "string", "format": "date-time", "description": "When the message status was updated." }, "queued_at": { "type": "string", "format": "date-time", "description": "When the message status was queued for sending." }, "content": { "type": "string", "description": "The message content." }, "interaction": { "type": "object", "properties": { "trigger": { "type": "string", "description": "The event type that triggered the message.", "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ] } } } } } } } } } } } } } }, "/reports/sms_messages/export": { "post": { "operationId": "reports_sms_messages_export_export_data", "description": "Export data on SMS messages.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "SMS Messages Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SMSMessagesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SMSMessagesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SMSMessagesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/store_order_items.grouped/data": { "get": { "operationId": "reports_store_order_items.grouped_data_get_data", "description": "Get aggregate data on store order items.", "summary": "Grouped Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "product_id", "product_variant.product.id", "product_variant", "product_variant.product", "product_name", "product_variant.product.name", "total_quantity", "summed_line_total", "orders_count", "month", "year" ], "type": "string", "description": "* `product_id` - product_id\n* `product_variant.product.id` - product_variant.product.id\n* `product_variant` - product_variant\n* `product_variant.product` - product_variant.product\n* `product_name` - product_name\n* `product_variant.product.name` - product_variant.product.name\n* `total_quantity` - total_quantity\n* `summed_line_total` - summed_line_total\n* `orders_count` - orders_count\n* `month` - month\n* `year` - year", "x-spec-enum-id": "b4345f8dca03b39c" }, "minItems": 1 }, "required": true }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "delivery_status", "schema": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "ordered_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_status", "schema": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } } }, { "in": "query", "name": "products", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." } ], "tags": [ "Store Order Items Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "product_variant": { "type": "object", "properties": { "product": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the product." }, "name": { "type": "string", "description": "The name of the product." } } } } }, "total_quantity": { "type": "integer", "description": "The total quantity of items in the group." }, "summed_line_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The total sum of line totals in the group." }, "orders_count": { "type": "integer", "description": "The total number of distinct orders in the group." }, "month": { "type": "integer", "description": "The month when the order was placed." }, "year": { "type": "integer", "description": "The year when the order was placed." } } } } } } } } } } } }, "/reports/store_order_items.grouped/export": { "post": { "operationId": "reports_store_order_items.grouped_export_export_data", "description": "Export aggregate data on store order items.", "summary": "Grouped Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Store Order Items Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/GroupedStoreOrderItemsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/GroupedStoreOrderItemsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/GroupedStoreOrderItemsParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/store_order_items/data": { "get": { "operationId": "reports_store_order_items_data_get_data", "description": "Get data on store order items.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "product_id", "product_variant.product.id", "product_variant", "product_variant.product", "product_name", "product_variant.product.name", "product_variant_id", "product_variant.id", "product_variant_detials", "product_variant.details", "order_id", "order.id", "order", "order_number", "order.number", "ordered_at", "order.ordered_at", "order_comments", "order.comments", "payment_status", "delivery_status", "quantity", "unit_price", "line_total" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `product_id` - product_id\n* `product_variant.product.id` - product_variant.product.id\n* `product_variant` - product_variant\n* `product_variant.product` - product_variant.product\n* `product_name` - product_name\n* `product_variant.product.name` - product_variant.product.name\n* `product_variant_id` - product_variant_id\n* `product_variant.id` - product_variant.id\n* `product_variant_detials` - product_variant_detials\n* `product_variant.details` - product_variant.details\n* `order_id` - order_id\n* `order.id` - order.id\n* `order` - order\n* `order_number` - order_number\n* `order.number` - order.number\n* `ordered_at` - ordered_at\n* `order.ordered_at` - order.ordered_at\n* `order_comments` - order_comments\n* `order.comments` - order.comments\n* `payment_status` - payment_status\n* `delivery_status` - delivery_status\n* `quantity` - quantity\n* `unit_price` - unit_price\n* `line_total` - line_total", "x-spec-enum-id": "704ca6c82de73545" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "delivery_status", "schema": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "ordered_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_status", "schema": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } } }, { "in": "query", "name": "products", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." } ], "tags": [ "Store Order Items Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "product_variant": { "type": "object", "properties": { "product": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the product." }, "name": { "type": "string", "description": "The name of the product." } } }, "id": { "type": "integer", "description": "The unique identifier for the product variant." }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": [ "string", "null" ] } } }, "description": "Details about the product variant attributes." } } }, "order": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique integer ID of the order." }, "number": { "type": "string", "description": "The order number." }, "ordered_at": { "type": "string", "format": "date-time", "description": "When the order was placed." }, "comments": { "type": "string", "description": "" } } }, "payment_status": { "type": "string", "description": "The payment status of the order (paid or not_paid)." }, "delivery_status": { "type": "string", "description": "The delivery status of the order item (delivered or not_delivered)." }, "quantity": { "type": "integer", "description": "The quantity of the product ordered." }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The unit price of the product." }, "line_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The total line amount for this order item." } } } } } } } } } } } }, "/reports/store_order_items/export": { "post": { "operationId": "reports_store_order_items_export_export_data", "description": "Export data on store order items.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Store Order Items Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StoreOrderItemsParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/StoreOrderItemsParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/StoreOrderItemsParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/store_orders/data": { "get": { "operationId": "reports_store_orders_data_get_data", "description": "Get data on store orders.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "id", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "number", "ordered_at", "comments", "items", "payment_status", "delivery_status", "items_count", "total_price" ], "type": "string", "description": "* `id` - id\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `number` - number\n* `ordered_at` - ordered_at\n* `comments` - comments\n* `items` - items\n* `payment_status` - payment_status\n* `delivery_status` - delivery_status\n* `items_count` - items_count\n* `total_price` - total_price", "x-spec-enum-id": "260ceffb2dd53ddc" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "delivery_status", "schema": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "ordered_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "ordered_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "payment_status", "schema": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." } ], "tags": [ "Store Orders Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "id": { "type": "integer", "description": "The integer unique identifier for the order." }, "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "number": { "type": "string", "description": "The order number." }, "ordered_at": { "type": "string", "format": "date-time", "description": "When the order was placed." }, "comments": { "type": "string", "description": "Comments on the order." }, "items": { "type": "array", "items": { "type": "object", "properties": { "id": { "type": "integer" }, "product_variant": { "type": "object", "properties": { "id": { "type": "integer" }, "product": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } } }, "details": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "value": { "type": [ "string", "null" ] } } } } } }, "quantity": { "type": "integer" } } }, "description": "List of items in the order." }, "payment_status": { "type": "string", "description": "The payment status of the order (paid or not_paid)." }, "delivery_status": { "type": "string", "description": "The delivery status of the order (delivered or not_delivered)." }, "items_count": { "type": "integer", "description": "The total number of items in the order." }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "description": "The total price of the order." } } } } } } } } } } } }, "/reports/store_orders/export": { "post": { "operationId": "reports_store_orders_export_export_data", "description": "Export data on store orders.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Store Orders Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StoreOrdersParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/StoreOrdersParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/StoreOrdersParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/reports/waiver_signatures/data": { "get": { "operationId": "reports_waiver_signatures_data_get_data", "description": "Get data on waiver signatures.", "summary": "Data", "parameters": [ { "in": "query", "name": "columns", "schema": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "waiver_id", "waiver.id", "waiver", "waiver_name", "waiver.name", "signed_at", "download_url" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `waiver_id` - waiver_id\n* `waiver.id` - waiver.id\n* `waiver` - waiver\n* `waiver_name` - waiver_name\n* `waiver.name` - waiver.name\n* `signed_at` - signed_at\n* `download_url` - download_url", "x-spec-enum-id": "ca63b52ab53a1abd" } } }, { "in": "query", "name": "customers", "schema": { "type": "array", "items": { "type": "integer" } } }, { "in": "query", "name": "format", "schema": { "enum": [ "csv", "json" ], "type": "string", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv", "minLength": 1 }, "description": "* `csv` - csv\n* `json` - json" }, { "in": "query", "name": "id_gt", "schema": { "type": "integer" } }, { "in": "query", "name": "limit", "schema": { "type": "integer", "maximum": 100, "default": 50 } }, { "in": "query", "name": "offset", "schema": { "type": "integer", "minimum": 0, "default": 0 } }, { "in": "query", "name": "page", "schema": { "type": "integer", "minimum": 1 }, "description": "Specify the page of results to return." }, { "in": "query", "name": "page_size", "schema": { "type": "integer", "maximum": 100, "minimum": 0 }, "description": "Specify the number of results to return." }, { "in": "query", "name": "signed_at_gte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "signed_at_lte", "schema": { "type": "string", "format": "date-time" } }, { "in": "query", "name": "signed_at_timeframe", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, { "in": "query", "name": "waivers", "schema": { "type": "array", "items": { "type": "integer" } } } ], "tags": [ "Waiver Signatures Report" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "type": "object", "title": "", "properties": { "total": { "type": "integer", "description": "The total number of rows that exist for this report." }, "column_headers": { "title": "ColumnHeaders", "type": "array", "description": "A list of objects that describes the data contained in each of the report's columns.", "items": { "type": "object", "properties": { "label": { "type": "string", "description": "The column's display name.", "example": "Customer ID" }, "key": { "type": "string", "description": "The property name that keys the column's values in the report rows. If the key is nested, it will use dot-notation.", "example": "customer.id" }, "sortable": { "type": "boolean", "description": "Whether the report rows can be sorted on this column." }, "holds_customer_id": { "type": "boolean", "description": "Whether the column holds a customer's unique identifier." }, "sorted": { "type": "object", "description": "If the report is currently sorted on this column, an object that contains information about the sort. Otherwise, this object does not exist.", "properties": { "order": { "type": "string", "enum": [ "desc", "asc" ], "description": "Whether this column's values are sorted in descending or ascending order." }, "priority": { "type": "number", "description": "If the report is sorted by multiple columns, the priority that this column's values take in determining the order." } }, "required": [ "order" ] }, "required": { "type": "boolean", "description": "Whether this column must always be present in the report response." } }, "required": [ "label", "key", "sortable" ] } }, "rows": { "title": "Rows", "type": "array", "items": { "properties": { "customer": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the customer." }, "name": { "type": "string", "description": "The customer's full name." }, "email": { "type": "string", "description": "The customer's email address." } } }, "waiver": { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique identifier for the waiver." }, "name": { "type": "string", "description": "The name of the waiver." } } }, "signed_at": { "type": "string", "format": "date-time", "description": "When the waiver was signed." }, "download_url": { "type": "string", "description": "The download URL for the signed waiver PDF." } } } } } } } } } } } }, "/reports/waiver_signatures/export": { "post": { "operationId": "reports_waiver_signatures_export_export_data", "description": "Export data on waiver signatures.", "summary": "Data Export", "parameters": [ { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "csv", "json" ] } } ], "tags": [ "Waiver Signatures Report" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverSignaturesParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WaiverSignaturesParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WaiverSignaturesParamsRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } }, "text/csv": { "schema": { "$ref": "#/components/schemas/ReportExportRead" } } }, "description": "" } } } }, "/slots": { "get": { "operationId": "slots_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "available_slots_only", "schema": { "type": "boolean", "nullable": true }, "description": "Whether to only includes slots that are available. In customer mode, this will default to true." }, { "in": "query", "name": "end_date", "schema": { "type": "string", "format": "date" }, "description": "The end date for the range of slots to list." }, { "in": "query", "name": "ends_at", "schema": { "type": "string", "format": "date-time" }, "description": "The end datetime for the range of slots to list." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "instructor", "schema": { "type": "array", "items": { "type": "integer" } }, "description": "The instructors for which to list slots." }, { "in": "query", "name": "offering_type", "schema": { "type": "integer" }, "description": "The offering type for which to list slots.", "required": true }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "start_date", "schema": { "type": "string", "format": "date" }, "description": "The start date for the range of slots to list." }, { "in": "query", "name": "starts_at", "schema": { "type": "string", "format": "date-time" }, "description": "The start datetime for the range of slots to list." }, { "in": "query", "name": "timezone", "schema": { "type": "string", "minLength": 1 }, "description": "The timezone in which to list slots." }, { "in": "query", "name": "venue_rooms", "schema": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "description": "The venue rooms for which to list slots." } ], "tags": [ "Slots" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedSlotReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedSlotReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." } }, "/slots/{id}": { "get": { "operationId": "slots_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Slots" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlotRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SlotRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." } }, "/slots/{id}/initiate_purchase": { "post": { "operationId": "slots_initiate_purchase_create", "description": "Initiate the purchase process for a slot. This is used when payment is required for booking the slot.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: is_appointment_slot\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Initiate Purchase", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Slots" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlotInitiatePurchaseParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SlotInitiatePurchaseParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SlotInitiatePurchaseParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlotInitiatePurchaseSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SlotInitiatePurchaseSuccess" } } }, "description": "" } } } }, "/slots/{id}/register": { "post": { "operationId": "slots_register_create", "description": "Book a customer into a slot. No payment must be required, meaning the customer must be able to register for free using the provided customer membership or the appointment type must allow free drop ins. If payment is required, the `/membership/:id/initiate_purchase` endpoint should be used instead.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Register", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "required": true } ], "tags": [ "Slots" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlotRegisterParamsRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SlotRegisterParamsRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SlotRegisterParamsRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SlotRegisterSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/SlotRegisterSuccess" } } }, "description": "" } } } }, "/staff": { "get": { "operationId": "staff_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "has_any_permissions", "schema": { "type": "array", "items": { "enum": [ "email_notifications", "revenue", "attendances", "super_admin", "customers", "discount_codes", "manage_events", "store", "developer", "customer_payments", "instructor_attendances", "instructor_manage_events" ], "type": "string", "description": "* `email_notifications` - email_notifications\n* `revenue` - revenue\n* `attendances` - attendances\n* `super_admin` - super_admin\n* `customers` - customers\n* `discount_codes` - discount_codes\n* `manage_events` - manage_events\n* `store` - store\n* `developer` - developer\n* `customer_payments` - customer_payments\n* `instructor_attendances` - instructor_attendances\n* `instructor_manage_events` - instructor_manage_events", "x-spec-enum-id": "6ce20c1f453757b3" } }, "description": "Only include staff that have at least one of these permissions.", "explode": false, "style": "form" }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Staff" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedStaffReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedStaffReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "staff_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Staff" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StaffCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/StaffCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/StaffCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StaffRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/StaffRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/staff/{id}/ui_settings": { "get": { "operationId": "staff_ui_settings_retrieve", "description": "Get staff member UI preferences for customer list views.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_self_provider_user\n- Only first-party applications are allowed to use this endpoint.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve UI Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "description": "The unique integer ID of the staff or 'me' for the currently authenticated staff member.", "required": true } ], "tags": [ "Internal" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StaffUISettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/StaffUISettingsRead" } } }, "description": "" } } }, "patch": { "operationId": "staff_ui_settings_partial_update", "description": "Update staff member UI preferences for customer list views.\n\n\n#### Providers (at least one required)\n- The following condition must be met: is_self_provider_user\n- Only first-party applications are allowed to use this endpoint.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update UI Settings", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string" }, "description": "The unique integer ID of the staff or 'me' for the currently authenticated staff member.", "required": true } ], "tags": [ "Internal" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedStaffUISettingsPatchRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedStaffUISettingsPatchRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedStaffUISettingsPatchRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/StaffUISettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/StaffUISettingsRead" } } }, "description": "" } } } }, "/store/inventory_adjustments": { "get": { "operationId": "store_inventory_adjustments_list", "description": "Return a list of product variant inventory adjustments.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "product_variant", "schema": { "type": "integer" } } ], "tags": [ "Product Variant Inventory Adjustments" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantInventoryAdjustmentReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantInventoryAdjustmentReadList" } } }, "description": "" } } }, "post": { "operationId": "store_inventory_adjustments_create", "description": "Create a product variant inventory adjustment.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Product Variant Inventory Adjustments" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentRead" } } }, "description": "" } } } }, "/store/order_items": { "get": { "operationId": "store_order_items_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "order", "schema": { "type": "integer" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Order Items" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedOrderItemReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedOrderItemReadList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action." }, "post": { "operationId": "store_order_items_create", "description": "Create an order item. If one exists with the same product variant, the given quantity will be added to the existing order item's quantity.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Order Items" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderItemCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderItemCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } } }, "description": "" } } } }, "/store/order_items/{id}": { "put": { "operationId": "store_order_items_update", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order item.", "required": true } ], "tags": [ "Order Items" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderItemUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderItemUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "patch": { "operationId": "store_order_items_partial_update", "description": "Update the quantity of an order item. The quantity given will be applied in an \"absolute\" manner, meaning that the quantity will be set to the given value, regardless of the current quantity. Updating the quantity to 0 will delete the order item.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Update Quantity", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order item.", "required": true } ], "tags": [ "Order Items" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderItemUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderItemUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderItemUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } } }, "description": "" } } }, "delete": { "operationId": "store_order_items_destroy", "description": "Delete an order item.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order item.", "required": true } ], "tags": [ "Order Items" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/store/order_items/{id}/confirm_delivery": { "post": { "operationId": "store_order_items_confirm_delivery_create", "description": "Mark the order item as delivered. If the item has already been delivered, an error will be raised.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Confirm Delivery", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order item.", "required": true } ], "tags": [ "Order Items" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderItemReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderItemReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderItemRead" } } }, "description": "" } } } }, "/store/orders": { "get": { "operationId": "store_orders_list", "description": "Return a list of orders. (Does not include cart-status orders.)\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "is_complete", "schema": { "type": "boolean" } }, { "in": "query", "name": "is_open", "schema": { "type": "boolean" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Orders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedOrderReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedOrderReadList" } } }, "description": "" } } }, "post": { "operationId": "store_orders_create", "description": "Create a new order. Customer clients should use /current-order instead.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Orders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderCreateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderCreateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderCreateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderRead" } } }, "description": "" } } } }, "/store/orders/{id}": { "get": { "operationId": "store_orders_retrieve", "description": "Retrieve a single (non-cart) Order object by ID.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order.", "required": true } ], "tags": [ "Orders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderRead" } } }, "description": "" } } } }, "/store/orders/{id}/cancel": { "post": { "operationId": "store_orders_cancel_create", "description": "Cancel an order.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Cancel", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this order.", "required": true } ], "tags": [ "Orders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderReadRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderReadRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderReadRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderRead" } } }, "description": "" } } } }, "/store/orders/checkout": { "post": { "operationId": "store_orders_checkout_create", "description": "Do some validation on the current order, and return a redirect URL to the legacy checkout page.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Checkout", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Orders" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderCheckoutRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/OrderCheckoutRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/OrderCheckoutRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderCheckoutRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderCheckoutRead" } } }, "description": "" } } } }, "/store/orders/current_order": { "get": { "operationId": "store_orders_current_order_retrieve", "description": "Return the current cart-status order for the current user. \"Current Order\" and \"Cart\" are used interchangeably in some places.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Current Order", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Orders" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OrderRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OrderRead" } } }, "description": "" } } } }, "/store/product_attributes": { "get": { "operationId": "store_product_attributes_list", "description": "Return a list of product variant attributes.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Product Variant Attributes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantAttributeList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantAttributeList" } } }, "description": "" } } }, "post": { "operationId": "store_product_attributes_create", "description": "Create a product variant attribute.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Product Variant Attributes" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantAttributeRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductVariantAttributeRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductVariantAttributeRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantAttribute" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantAttribute" } } }, "description": "" } } } }, "/store/product_attributes/{id}": { "delete": { "operationId": "store_product_attributes_destroy", "description": "Delete a product variant attribute.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Attribute.", "required": true } ], "tags": [ "Product Variant Attributes" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/store/product_variants": { "get": { "operationId": "store_product_variants_list", "description": "Return a list of store product variants.\nCustomer clients may have fewer fields than Provider clients.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "product", "schema": { "type": "integer" } }, { "in": "query", "name": "product_variant_detail_id", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "query", "schema": { "type": "string" } } ], "tags": [ "Product Variants" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProductVariantReadList" } } }, "description": "" } } }, "post": { "operationId": "store_product_variants_create", "description": "Create a store product variant.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Product Variants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } } }, "description": "" } } } }, "/store/product_variants/{id}": { "get": { "operationId": "store_product_variants_retrieve", "description": "Return a store product variant.\nCustomer clients may have fewer fields than Provider clients.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product Variant.", "required": true } ], "tags": [ "Product Variants" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } } }, "description": "" } } }, "put": { "operationId": "store_product_variants_update", "description": "Update a store product variant.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product Variant.", "required": true } ], "tags": [ "Product Variants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductVariantWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } } }, "description": "" } } }, "patch": { "operationId": "store_product_variants_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product Variant.", "required": true } ], "tags": [ "Product Variants" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProductVariantWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProductVariantWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProductVariantWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductVariantRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "store_product_variants_destroy", "description": "Delete a store product variant.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product Variant.", "required": true } ], "tags": [ "Product Variants" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/store/products": { "get": { "operationId": "store_products_list", "description": "Return a list of store products.\nCustomer clients may have fewer fields than Provider clients.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCustomers can view store products that are marked as visible and for sale.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "id", "schema": { "type": "array", "items": { "type": "integer" } }, "explode": false, "style": "form" }, { "in": "query", "name": "is_in_stock", "schema": { "type": "boolean" } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "query", "schema": { "type": "string" } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-inventory_count", "-name", "-ordering", "-status", "inventory_count", "name", "ordering", "status" ] } }, "description": "Ordering\n\n* `inventory_count` - Inventory count\n* `-inventory_count` - Inventory count (descending)\n* `status` - Status\n* `-status` - Status (descending)\n* `name` - Name\n* `-name` - Name (descending)\n* `ordering` - Ordering\n* `-ordering` - Ordering (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "status", "schema": { "type": "array", "items": { "type": "string", "enum": [ "for_sale_visible", "for_sale_hidden", "not_for_sale", "archived" ] } }, "explode": false, "style": "form" } ], "tags": [ "Products" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedProductReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedProductReadList" } } }, "description": "" } } }, "post": { "operationId": "store_products_create", "description": "Create a store product.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Products" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductRead" } } }, "description": "" } } } }, "/store/products/{id}": { "get": { "operationId": "store_products_retrieve", "description": "Return a store product.\nCustomer clients may have fewer fields than Provider clients.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCustomers can view store products that are marked as visible and for sale.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product.", "required": true } ], "tags": [ "Products" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductRead" } } }, "description": "" } } }, "put": { "operationId": "store_products_update", "description": "Update a store product.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product.", "required": true } ], "tags": [ "Products" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ProductWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductRead" } } }, "description": "" } } }, "patch": { "operationId": "store_products_partial_update", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product.", "required": true } ], "tags": [ "Products" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProductWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProductWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProductWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProductRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProductRead" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" }, "delete": { "operationId": "store_products_destroy", "description": "Delete store product.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this Product.", "required": true } ], "tags": [ "Products" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/store/products/ordering": { "patch": { "operationId": "store_products_ordering_partial_update", "summary": "Ordering", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Products" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProductBulkReorderRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProductBulkReorderRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProductBulkReorderRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/store/settings": { "get": { "operationId": "store_settings_retrieve", "description": "Retrieve the store settings for the provider.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Store Settings" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderStoreSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderStoreSettingsRead" } } }, "description": "" } } }, "patch": { "operationId": "store_settings_partial_update", "description": "Update the store settings for the provider.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`, `store`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Store Settings" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedProviderStoreSettingsUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedProviderStoreSettingsUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedProviderStoreSettingsUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ProviderStoreSettingsRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ProviderStoreSettingsRead" } } }, "description": "" } } } }, "/terminologies/{id}": { "get": { "operationId": "terminologies_retrieve", "description": "Retrieve a specific terminology by its identifier.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string", "enum": [ "appointment", "category", "child", "course", "instructor", "membership", "rental", "reservation", "room", "venue" ] }, "required": true } ], "tags": [ "Terminologies" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } } }, "description": "" } } }, "put": { "operationId": "terminologies_update", "description": "Update a specific terminology by its identifier.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string", "enum": [ "appointment", "category", "child", "course", "instructor", "membership", "rental", "reservation", "room", "venue" ] }, "required": true } ], "tags": [ "Terminologies" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TerminologyUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/TerminologyUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/TerminologyUpdateRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } } }, "description": "" } } }, "patch": { "operationId": "terminologies_partial_update", "description": "Partially update a specific terminology by its identifier.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "string", "enum": [ "appointment", "category", "child", "course", "instructor", "membership", "rental", "reservation", "room", "venue" ] }, "required": true } ], "tags": [ "Terminologies" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedTerminologyUpdateRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedTerminologyUpdateRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedTerminologyUpdateRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/TerminologyRead" } } }, "description": "" } } } }, "/venue_rooms": { "get": { "operationId": "venue_rooms_list", "description": "Return a list of venue rooms.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-name", "-sequence", "name", "sequence" ] } }, "description": "Ordering\n\n* `name` - Name\n* `-name` - Name (descending)\n* `sequence` - Sequence\n* `-sequence` - Sequence (descending)", "explode": false, "style": "form" }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "17cb7fbc819085eb", "enum": [ "active", "archived" ] }, "description": "* `active` - active\n* `archived` - archived" }, { "in": "query", "name": "venue", "schema": { "type": "string" } } ], "tags": [ "Venue Rooms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedVenueRoomList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedVenueRoomList" } } }, "description": "" } } }, "post": { "operationId": "venue_rooms_create", "description": "Create a venue room.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Venue Rooms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/CreateVenueRoomRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/CreateVenueRoomRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/CreateVenueRoomRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRoom" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRoom" } } }, "description": "" } } } }, "/venue_rooms/{id}": { "get": { "operationId": "venue_rooms_retrieve", "description": "Return a venue room.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue room.", "required": true } ], "tags": [ "Venue Rooms" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRoom" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRoom" } } }, "description": "" } } }, "put": { "operationId": "venue_rooms_update", "description": "Update a venue room.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue room.", "required": true } ], "tags": [ "Venue Rooms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/UpdateVenueRoomRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/UpdateVenueRoomRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/UpdateVenueRoomRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRoom" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRoom" } } }, "description": "" } } }, "patch": { "operationId": "venue_rooms_partial_update", "description": "Partially update a venue room.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue room.", "required": true } ], "tags": [ "Venue Rooms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedUpdateVenueRoomRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedUpdateVenueRoomRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedUpdateVenueRoomRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRoom" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRoom" } } }, "description": "" } } } }, "/venue_rooms/ordering": { "patch": { "operationId": "venue_rooms_ordering_partial_update", "description": "Update the ordering of venue rooms within a venue.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Reorder", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Venue Rooms" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/venues": { "get": { "operationId": "venues_list", "description": "Return a list of venues.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "query", "name": "has_active_sessions", "schema": { "type": "boolean" }, "description": "Only include venues with non-cancelled events or course sessions." }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "string", "enum": [ "active", "archived" ] }, "description": "* `active` - active\n* `archived` - archived" } ], "tags": [ "Venues" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedVenueReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedVenueReadList" } } }, "description": "" } } }, "post": { "operationId": "venues_create", "description": "Create a venue.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Venues" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRead" } } }, "description": "" } } } }, "/venues/{id}": { "get": { "operationId": "venues_retrieve", "description": "Return a venue.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue.", "required": true } ], "tags": [ "Venues" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRead" } } }, "description": "" } } }, "put": { "operationId": "venues_update", "description": "Update a venue.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue.", "required": true } ], "tags": [ "Venues" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/VenueWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRead" } } }, "description": "" } } }, "patch": { "operationId": "venues_partial_update", "description": "Partially update a venue.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue.", "required": true } ], "tags": [ "Venues" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedVenueWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedVenueWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedVenueWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/VenueRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/VenueRead" } } }, "description": "" } } } }, "/venues/{id}/blocked_times": { "get": { "operationId": "venues_blocked_times_retrieve", "description": "Manage a venue's blocked times.\n\n\n#### Providers (at least one required)\n- The following condition must be met: request_method_get\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Blocked Times", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue.", "required": true } ], "tags": [ "Venues" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockedTimes" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BlockedTimes" } } }, "description": "" } } }, "patch": { "operationId": "venues_blocked_times_partial_update", "description": "Manage a venue's blocked times.\n\n\n#### Providers (at least one required)\n- The following condition must be met: request_method_get\n- Must have one of the following permissions: `manage_events`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Blocked Times", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this venue.", "required": true } ], "tags": [ "Venues" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedBlockedTimesRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedBlockedTimesRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedBlockedTimesRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BlockedTimes" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/BlockedTimes" } } }, "description": "" } } } }, "/waiver_agreements": { "get": { "operationId": "waiver_agreements_list", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "sort", "schema": { "type": "array", "items": { "type": "string", "enum": [ "-signed_at", "signed_at" ] } }, "description": "Ordering\n\n* `signed_at` - Signed at\n* `-signed_at` - Signed at (descending)", "explode": false, "style": "form" } ], "tags": [ "Waiver Agreements" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedWaiverAgreementList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedWaiverAgreementList" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" }, "post": { "operationId": "waiver_agreements_create", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Waiver Agreements" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverAgreementRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WaiverAgreementRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WaiverAgreementRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverAgreement" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverAgreement" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/waiver_agreements/{id}": { "get": { "operationId": "waiver_agreements_retrieve", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this profile waiver.", "required": true } ], "tags": [ "Waiver Agreements" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverAgreement" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverAgreement" } } }, "description": "" } }, "description": "\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\n\n\n#### Unregistered Customers\n- *No access.*" } }, "/waiver_agreements/{id}/download": { "get": { "operationId": "waiver_agreements_download_retrieve", "description": "Download the waiver in PDF format.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Download PDF", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this profile waiver.", "required": true } ], "tags": [ "Waiver Agreements" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/pdf": { "schema": { "type": "string", "format": "binary" } } }, "description": "" } } } }, "/waivers": { "get": { "operationId": "waivers_list", "description": "Retrieve a list of waivers with optional filtering.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active waivers, or any waivers that they or their family members have signed.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "applicable_to", "schema": { "type": "array", "items": { "enum": [ "all_offering_types", "all_memberships" ], "type": "string", "description": "* `all_offering_types` - all_offering_types\n* `all_memberships` - all_memberships", "x-spec-enum-id": "d970736a58d76a45" } }, "explode": false, "style": "form" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } }, { "in": "query", "name": "status", "schema": { "type": "integer", "x-spec-enum-id": "f027d980c681710b", "enum": [ 0, 2 ] }, "description": "* `0` - Active\n* `2` - Archived" } ], "tags": [ "Waivers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedWaiverReadList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedWaiverReadList" } } }, "description": "" } } }, "post": { "operationId": "waivers_create", "description": "Create a new waiver.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverRead" } } }, "description": "" } } } }, "/waivers/{id}": { "get": { "operationId": "waivers_retrieve", "description": "Retrieve detailed information about a specific waiver.\n\n\n#### Providers\n- Any provider can perform this action.\n\n\n#### Customers\n- Any customer can perform this action.\nCaller can view active waivers, or any waivers that they or their family members have signed.\n\n\n#### Unregistered Customers\n- Any anonymous customer can perform this action.", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverRead" } } }, "description": "" } } }, "put": { "operationId": "waivers_update", "description": "Fully update a waiver.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WaiverWriteRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverRead" } } }, "description": "" } } }, "patch": { "operationId": "waivers_partial_update", "description": "Partially update a waiver.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedWaiverWriteRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedWaiverWriteRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedWaiverWriteRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverRead" } } }, "description": "" } } } }, "/waivers/{id}/archive": { "post": { "operationId": "waivers_archive_create", "description": "Archive a waiver. The waiver row is retained so existing signatures stay visible. Returns the archived waiver.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Archive", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WaiverRead" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WaiverRead" } } }, "description": "" } } } }, "/waivers/{id}/archive-and-copy": { "post": { "operationId": "waivers_archive_and_copy_create", "description": "Archive a waiver and create a new active copy of it. Use this to change the name or text of a waiver that already has signatures. When `apply_signatures` is true, existing signatures are copied to the new waiver asynchronously and the response includes a job to poll (HTTP 202); otherwise the copy completes synchronously (HTTP 201).\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Archive and Copy", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyResponse" } } }, "description": "" }, "202": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyResponse" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/ArchiveAndCopyResponse" } } }, "description": "" } } } }, "/waivers/{id}/send": { "post": { "operationId": "waivers_send_create", "description": "Email a single waiver to a customer for completion.\n\n\n#### Providers (at least one required)\n- Must have one of the following permissions: `super_admin`.\n- Provider must have converted to paid before sending forms/waivers by email.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Send Waiver to Customer", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this waiver.", "required": true } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SendWaiverRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/SendWaiverRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/SendWaiverRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } }, "/waivers/ordering": { "patch": { "operationId": "waivers_ordering_partial_update", "description": "Change the display order of a provider's active waivers.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Change Waiver Order", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Waivers" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedOrderingRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/OKSuccess" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/OKSuccess" } } }, "description": "" } } } }, "/webhook_destinations": { "get": { "operationId": "webhook_destinations_list", "description": "Retrieve a list of webhook destinations with filtering options.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "List", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "application", "schema": { "type": "number" }, "description": "Filter by application ID." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "name": "page", "required": false, "in": "query", "description": "A page number within the paginated result set.", "schema": { "type": "integer" } }, { "name": "page_size", "required": false, "in": "query", "description": "Number of results to return per page.", "schema": { "type": "integer", "maximum": 100 } } ], "tags": [ "Webhook Destinations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PaginatedWebhookDestinationList" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/PaginatedWebhookDestinationList" } } }, "description": "" } } }, "post": { "operationId": "webhook_destinations_create", "description": "Create a new webhook destination and retrieve its details.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Create", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } } ], "tags": [ "Webhook Destinations" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "201": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "" } } } }, "/webhook_destinations/{id}": { "get": { "operationId": "webhook_destinations_retrieve", "description": "Retrieve the details of a specific webhook destination.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Retrieve", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this destination.", "required": true } ], "tags": [ "Webhook Destinations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "" } } }, "put": { "operationId": "webhook_destinations_update", "description": "Update an existing webhook destination.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this destination.", "required": true } ], "tags": [ "Webhook Destinations" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/WebhookDestinationRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "" } } }, "patch": { "operationId": "webhook_destinations_partial_update", "description": "Partially update an existing webhook destination.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Partially Update", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this destination.", "required": true } ], "tags": [ "Webhook Destinations" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedWebhookDestinationRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedWebhookDestinationRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedWebhookDestinationRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/WebhookDestination" } } }, "description": "" } } }, "delete": { "operationId": "webhook_destinations_destroy", "description": "Delete a specific webhook destination.\n\n\n#### Providers\n- Must have one of the following permissions: `super_admin`.\n\n\n#### Customers\n- *No access.*\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Delete", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which mode that request should run in. Customer mode is more limited. Required if the access credentials have access to both modes." }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to include. Dot-notation can be used to select nested fields.", "explode": false, "style": "form" }, { "in": "query", "name": "format", "schema": { "type": "string", "enum": [ "json", "xml" ] } }, { "in": "path", "name": "id", "schema": { "type": "integer" }, "description": "A unique integer value identifying this destination.", "required": true } ], "tags": [ "Webhook Destinations" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "204": { "description": "No response body" } } } } }, "components": { "schemas": { "ActiveRegistrationStatus": { "type": "object", "properties": { "suggested_action": { "enum": [ "register", "join_waitlist", "sign_in", null ], "type": "string", "description": "* `register` - register\n* `join_waitlist` - join_waitlist\n* `sign_in` - sign_in", "x-spec-enum-id": "7d8ffc74aaac2496", "nullable": true }, "current_status": { "enum": [ "spot_reserved", "on_waitlist", "registered", "not_registered", null ], "type": "string", "description": "* `spot_reserved` - spot_reserved\n* `on_waitlist` - on_waitlist\n* `registered` - registered\n* `not_registered` - not_registered", "x-spec-enum-id": "860c695d81ca4dab", "nullable": true }, "restriction_codes": { "type": "array", "items": { "enum": [ "registrations_closed", "registrations_not_open", "event_full", null ], "type": "string", "description": "* `registrations_closed` - registrations_closed\n* `registrations_not_open` - registrations_not_open\n* `event_full` - event_full", "x-spec-enum-id": "099d52dcf3feaafd", "nullable": true } }, "registrations_open_at": { "type": "string", "format": "date-time", "nullable": true }, "registrations_close_at": { "type": "string", "format": "date-time", "nullable": true }, "late_cancels_after": { "type": "string", "format": "date-time", "nullable": true }, "cancellation_closes_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "cancellation_closes_at", "current_status", "late_cancels_after", "registrations_close_at", "registrations_open_at", "restriction_codes", "suggested_action" ], "title": "ActiveRegistrationStatus" }, "AddChildRequest": { "type": "object", "properties": { "first_name": { "type": "string", "minLength": 1 }, "last_name": { "type": "string", "minLength": 1 }, "field_values": { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" } }, "required": [ "first_name", "last_name" ], "title": "AddChildRequest" }, "Address": { "type": "object", "properties": { "street": { "type": "string" }, "street_secondary": { "type": "string", "nullable": true }, "city": { "type": "string" }, "region": { "type": "string", "nullable": true }, "postal_code": { "type": "string" }, "country": { "type": "string" }, "timezone": { "type": "string" } }, "required": [ "city", "country", "postal_code", "region", "street", "street_secondary", "timezone" ], "title": "Address" }, "ApplicationRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "application" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string" }, "domain": { "type": "string", "nullable": true, "maxLength": 255 }, "logo": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "readOnly": true }, "scopes": { "type": "array", "items": { "type": "string", "enum": [ "read", "read_write" ] } }, "allowed_callback_urls": { "type": "array", "items": { "type": "string" }, "readOnly": true }, "access_tokens": { "type": "array", "items": { "type": "object", "properties": { "key": { "type": "string" } } }, "readOnly": true }, "client_id": { "type": "string", "maxLength": 100 }, "client_secret": { "type": "string", "maxLength": 255 } }, "required": [ "access_tokens", "allowed_callback_urls", "id", "logo", "name", "object", "scopes" ], "title": "ApplicationRead" }, "ApplicationWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "domain": { "type": "string", "minLength": 1 }, "logo": { "type": "integer", "example": 4242, "description": "The unique identifier of the image you'd like to associate with this object.", "writeOnly": true, "nullable": true }, "scopes": { "type": "array", "items": { "type": "string", "enum": [ "read", "read_write" ] } }, "allowed_callback_urls": { "type": "array", "items": { "type": "string", "format": "uri", "minLength": 1 } }, "type": { "type": "string", "enum": [ "customer", "provider" ], "description": "Type of the application. This field is not relevant for the v2 API, but can be used to set up compatible applications for the v1 APIs." } }, "required": [ "domain", "logo", "name", "scopes" ], "title": "ApplicationWriteRequest" }, "AppointmentSettingsRead": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "default_venue": { "type": "integer", "readOnly": true }, "default_venue_rooms": { "type": "array", "items": { "type": "integer" }, "readOnly": true } }, "required": [ "default_venue", "default_venue_rooms", "duration" ], "title": "AppointmentSettingsRead" }, "AppointmentSettingsRequest": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "default_venue": { "type": "integer" }, "default_venue_rooms": { "type": "array", "items": { "type": "integer" } } }, "required": [ "default_venue", "duration" ], "title": "AppointmentSettingsRequest" }, "ArchiveAndCopyRequest": { "type": "object", "properties": { "apply_signatures": { "type": "boolean", "default": false, "description": "When true, existing signatures are copied to the new waiver so those customers don't need to re-sign. The copy runs asynchronously and the response includes a job to poll for progress." } }, "title": "ArchiveAndCopyRequest" }, "ArchiveAndCopyResponse": { "type": "object", "properties": { "waiver": { "allOf": [ { "$ref": "#/components/schemas/WaiverRead" } ], "description": "The new active copy of the archived waiver." }, "job": { "allOf": [ { "$ref": "#/components/schemas/Job" } ], "nullable": true, "description": "Present only when signatures are being copied asynchronously. Poll `GET /api/v2/jobs/{id}` to track progress; null otherwise." } }, "required": [ "job", "waiver" ], "title": "ArchiveAndCopyResponse" }, "AssociatedCheckoutItem": { "type": "object", "properties": { "id": { "type": "string", "readOnly": true } }, "required": [ "id" ], "title": "AssociatedCheckoutItem" }, "AttendanceInfractionsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_thumbnail_url", "customer.thumbnail_url", "status", "rule_applies_to", "rule.applies_to", "rule", "penalty_rule_max_infractions", "rule.max_infractions", "penalty_rule_days", "rule.days", "penalty_system_id", "rule.system.id", "rule.system", "penalty_system_name", "rule.system.name", "offering_type_id", "event.offering_type.id", "event", "event.offering_type", "offering_type_name", "event.offering_type.name", "membership_id", "customer_membership.membership.id", "customer_membership", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "event_type", "event.type", "event_starts_at", "event.starts_at", "attendance_status", "attendance.status", "attendance", "venue_id", "event.venue.id", "event.venue", "venue_name", "event.venue.name", "sequence_position", "penalty_charge_amount", "penalty.charge.amount", "penalty", "penalty.charge", "penalty_charge_due_date", "penalty.charge.due_date", "penalty_id", "penalty.id" ], "type": "string", "description": "* `id` - id\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_thumbnail_url` - customer_thumbnail_url\n* `customer.thumbnail_url` - customer.thumbnail_url\n* `status` - status\n* `rule_applies_to` - rule_applies_to\n* `rule.applies_to` - rule.applies_to\n* `rule` - rule\n* `penalty_rule_max_infractions` - penalty_rule_max_infractions\n* `rule.max_infractions` - rule.max_infractions\n* `penalty_rule_days` - penalty_rule_days\n* `rule.days` - rule.days\n* `penalty_system_id` - penalty_system_id\n* `rule.system.id` - rule.system.id\n* `rule.system` - rule.system\n* `penalty_system_name` - penalty_system_name\n* `rule.system.name` - rule.system.name\n* `offering_type_id` - offering_type_id\n* `event.offering_type.id` - event.offering_type.id\n* `event` - event\n* `event.offering_type` - event.offering_type\n* `offering_type_name` - offering_type_name\n* `event.offering_type.name` - event.offering_type.name\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership` - customer_membership\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `event_type` - event_type\n* `event.type` - event.type\n* `event_starts_at` - event_starts_at\n* `event.starts_at` - event.starts_at\n* `attendance_status` - attendance_status\n* `attendance.status` - attendance.status\n* `attendance` - attendance\n* `venue_id` - venue_id\n* `event.venue.id` - event.venue.id\n* `event.venue` - event.venue\n* `venue_name` - venue_name\n* `event.venue.name` - event.venue.name\n* `sequence_position` - sequence_position\n* `penalty_charge_amount` - penalty_charge_amount\n* `penalty.charge.amount` - penalty.charge.amount\n* `penalty` - penalty\n* `penalty.charge` - penalty.charge\n* `penalty_charge_due_date` - penalty_charge_due_date\n* `penalty.charge.due_date` - penalty.charge.due_date\n* `penalty_id` - penalty_id\n* `penalty.id` - penalty.id", "x-spec-enum-id": "a55f7ee62255756e" } }, "customers": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for particular customers." }, "status": { "type": "array", "items": { "type": "string", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] }, "description": "Only include infractions with a particular status." }, "attendance_status": { "type": "array", "items": { "enum": [ "late_cancel", "no_show" ], "type": "string", "description": "* `late_cancel` - late_cancel\n* `no_show` - no_show", "x-spec-enum-id": "a75ca351ea76bf90" }, "description": "Only include infractions for a particular attendance status." }, "rule_applies_to": { "type": "array", "items": { "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ], "type": "string", "description": "* `no_shows` - no_shows\n* `late_cancels` - late_cancels\n* `late_cancels_or_no_shows` - late_cancels_or_no_shows", "x-spec-enum-id": "4dd98ed3daee5b73" }, "description": "Only include infractions for rules with different applicabilities." }, "memberships": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions associated with particular memberships." }, "offering_types": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for attended events with particular offering types." }, "venues": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for attended events at particular venues." }, "penalty": { "type": "integer", "description": "Only include infractions part of a sequence that triggered a particular penalty." }, "event_starts_at_lte": { "type": "string", "format": "date-time" }, "event_starts_at_gte": { "type": "string", "format": "date-time" } }, "title": "AttendanceInfractionsParamsRequest" }, "AttendanceRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "attendance" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "event": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/EventRead" } ] }, "status": { "type": "string", "enum": [ "not_registered", "registered", "attended", "no_show", "late_cancelled" ] }, "customer_membership": { "oneOf": [ { "type": "integer", "description": "The ID of the customer membership used to register. Is `null` when the customer did not use a membership and registered as a drop-in. *This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerMembershipRead" } ] }, "booking_source": { "allOf": [ { "$ref": "#/components/schemas/BookingSource" } ], "nullable": true, "description": "The application where the original booking was made." }, "gympass_booking": { "$ref": "#/components/schemas/GympassBooking", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "waitlist_spot": { "$ref": "#/components/schemas/WaitlistSpotRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "booking_source", "customer_membership", "event", "id", "object", "status" ], "title": "AttendanceRead" }, "AttendancesReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "updated_at", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_thumbnail_url", "customer.thumbnail_url", "event_id", "event.id", "event", "event_starts_at", "event.starts_at", "event_ends_at", "event.ends_at", "event_name", "event.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "booking_method", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "booking_source", "status", "checkin_ocurred_at", "checkin.ocurred_at", "checkin", "is_first_attendance" ], "type": "string", "description": "* `id` - id\n* `updated_at` - updated_at\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_thumbnail_url` - customer_thumbnail_url\n* `customer.thumbnail_url` - customer.thumbnail_url\n* `event_id` - event_id\n* `event.id` - event.id\n* `event` - event\n* `event_starts_at` - event_starts_at\n* `event.starts_at` - event.starts_at\n* `event_ends_at` - event_ends_at\n* `event.ends_at` - event.ends_at\n* `event_name` - event_name\n* `event.name` - event.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `booking_method` - booking_method\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `booking_source` - booking_source\n* `status` - status\n* `checkin_ocurred_at` - checkin_ocurred_at\n* `checkin.ocurred_at` - checkin.ocurred_at\n* `checkin` - checkin\n* `is_first_attendance` - is_first_attendance", "x-spec-enum-id": "40f8b9127ee3de9e" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "status": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } }, "attendance_status": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } }, "booking_methods": { "type": "array", "items": { "enum": [ "membership", "dropin", "free" ], "type": "string", "description": "* `membership` - membership\n* `dropin` - dropin\n* `free` - free", "x-spec-enum-id": "cc40e32d85afa928" } }, "booking_sources": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } }, "event_types": { "type": "array", "items": { "enum": [ "appointment", "class" ], "type": "string", "description": "* `appointment` - appointment\n* `class` - class", "x-spec-enum-id": "ebe505573a59b601" } }, "include_future": { "type": "boolean", "default": false }, "instructors": { "type": "string" }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "event_start_lte": { "type": "string", "format": "date-time" }, "event_start_gte": { "type": "string", "format": "date-time" }, "event_timeframe": { "type": "string" } }, "title": "AttendancesReportParamsRequest" }, "AuthenticatedApplication": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 255 }, "object": { "enum": [ "authenticated_application" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "scoped_providers": { "type": "array", "items": { "$ref": "#/components/schemas/ScopedProvider" } } }, "required": [ "id", "object", "scoped_providers" ], "title": "AuthenticatedApplication" }, "AvailabilityOverride": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "availability": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } } }, "required": [ "date" ], "title": "AvailabilityOverride" }, "AvailabilityOverrideRequest": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "availability": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } } }, "required": [ "date" ], "title": "AvailabilityOverrideRequest" }, "AvailabilityOverrides": { "type": "object", "properties": { "overrides": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityOverride" } } }, "required": [ "overrides" ], "title": "AvailabilityOverrides" }, "AvailabilitySchedule": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ null ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 32 }, "venue": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" }, "offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "availability_schedule_offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingType" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "id", "object" ], "title": "RoomRentalAvailabilitySchedule" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ null ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 32 }, "venue": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" }, "instructor": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/Instructor" } ] }, "is_default": { "type": "string", "readOnly": true }, "has_availability": { "type": "string", "readOnly": true }, "offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "availability_schedule_offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingType" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "has_availability", "id", "instructor", "is_default", "object" ], "title": "InstructorAvailabilitySchedule" } ], "title": "AvailabilitySchedule" }, "AvailabilityScheduleOfferingType": { "type": "object", "properties": { "offering_type": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeRead" } ] }, "availability_schedule": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PatchedAvailabilityScheduleRequest" } ] }, "venue_rooms": { "oneOf": [ { "type": "array", "items": { "type": "integer" }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "VenueRoom[]", "items": { "$ref": "#/components/schemas/VenueRoom" } } ] } }, "required": [ "availability_schedule", "offering_type" ], "title": "AvailabilityScheduleOfferingType" }, "AvailabilityScheduleOfferingTypeRequest": { "type": "object", "properties": { "offering_type": { "type": "integer" }, "availability_schedule": { "type": "integer" }, "venue_rooms": { "type": "array", "items": { "type": "integer" } } }, "required": [ "availability_schedule", "offering_type" ], "title": "AvailabilityScheduleOfferingTypeRequest" }, "AvailabilityScheduleRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 32 }, "venue": { "type": "integer", "nullable": true }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" } }, "title": "RoomRentalAvailabilitySchedule" }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 32 }, "venue": { "type": "integer", "nullable": true }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" }, "instructor": { "type": "integer" } }, "required": [ "instructor" ], "title": "InstructorAvailabilitySchedule" } ], "title": "AvailabilityScheduleRequest" }, "BlockedTime": { "oneOf": [ { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "blocked_times": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" }, "instructor": { "type": "integer", "nullable": true } }, "required": [ "blocked_times", "created_at", "date" ], "title": "InstructorBlockedTime" }, { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "blocked_times": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" }, "venue": { "type": "integer", "nullable": true } }, "required": [ "blocked_times", "created_at", "date" ], "title": "VenueBlockedTime" } ], "title": "BlockedTime" }, "BlockedTimeRequest": { "oneOf": [ { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "blocked_times": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" }, "instructor": { "type": "integer", "nullable": true } }, "required": [ "blocked_times", "date" ], "title": "InstructorBlockedTime" }, { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "blocked_times": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" }, "venue": { "type": "integer", "nullable": true } }, "required": [ "blocked_times", "date" ], "title": "VenueBlockedTime" } ], "title": "BlockedTimeRequest" }, "BlockedTimes": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/BlockedTime" } }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" } }, "required": [ "data" ], "title": "BlockedTimes" }, "BookingConfigRequest": { "type": "object", "properties": { "open_mode": { "enum": [ "popup", "tab" ], "type": "string", "description": "* `popup` - popup\n* `tab` - tab", "x-spec-enum-id": "47b32c866244b604", "default": "popup" } }, "title": "BookingConfigRequest" }, "BookingSource": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "title": "BookingSource" }, "BroadcastMessageContentCheck": { "type": "object", "properties": { "status": { "type": "string", "nullable": true }, "reason": { "type": "string", "nullable": true }, "spam_score": { "type": "number", "format": "double", "nullable": true }, "acknowledged": { "type": "boolean" } }, "required": [ "acknowledged", "reason", "spam_score", "status" ], "title": "BroadcastMessageContentCheck" }, "BroadcastMessageContentCheckFailedDetails": { "type": "object", "properties": { "status": { "type": "string" }, "reason": { "type": "string" }, "spam_score": { "type": "number", "format": "double", "nullable": true } }, "required": [ "reason", "status" ], "title": "BroadcastMessageContentCheckFailedDetails" }, "BroadcastMessageContentCheckFailedFieldErrors": { "type": "object", "properties": { "content_check": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedDetails" } }, "required": [ "content_check" ], "title": "BroadcastMessageContentCheckFailedFieldErrors" }, "BroadcastMessageContentCheckFailedResponse": { "type": "object", "properties": { "type": { "type": "string" }, "code": { "type": "string" }, "message": { "type": "string" }, "field_errors": { "$ref": "#/components/schemas/BroadcastMessageContentCheckFailedFieldErrors" } }, "required": [ "code", "field_errors", "message", "type" ], "title": "BroadcastMessageContentCheckFailedResponse" }, "BroadcastMessageContentCheckRequest": { "type": "object", "properties": { "status": { "type": "string", "nullable": true, "minLength": 1 }, "reason": { "type": "string", "nullable": true, "minLength": 1 }, "spam_score": { "type": "number", "format": "double", "nullable": true }, "acknowledged": { "type": "boolean" } }, "required": [ "acknowledged", "reason", "spam_score", "status" ], "title": "BroadcastMessageContentCheckRequest" }, "BroadcastMessageCreateRequest": { "type": "object", "properties": { "message": { "type": "string" }, "subject": { "type": "string", "nullable": true, "minLength": 1 }, "channel": { "enum": [ "sms", "email" ], "type": "string", "description": "* `sms` - sms\n* `email` - email", "x-spec-enum-id": "a718e613965537ee", "default": "sms" }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" }, "target_recipients": { "$ref": "#/components/schemas/BroadcastMessageTargetRecipientsParamsRequest" }, "defer_sending": { "type": "boolean", "default": true } }, "required": [ "message", "target_recipients", "use_case" ], "title": "BroadcastMessageCreateRequest" }, "BroadcastMessageRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "message": { "type": "string" }, "subject": { "type": "string", "nullable": true }, "channel": { "enum": [ "sms", "email" ], "type": "string", "description": "* `sms` - sms\n* `email` - email", "x-spec-enum-id": "a718e613965537ee" }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" }, "sent_by": { "type": "integer" }, "is_sent": { "type": "boolean" }, "sent_at": { "type": "string", "format": "date-time" }, "scheduled_at": { "type": "string", "format": "date-time" }, "recipient_counts": { "type": "string", "readOnly": true }, "content_check": { "$ref": "#/components/schemas/BroadcastMessageContentCheck" } }, "required": [ "channel", "content_check", "id", "is_sent", "message", "recipient_counts", "scheduled_at", "sent_at", "sent_by", "subject", "use_case" ], "title": "BroadcastMessageRead" }, "BroadcastMessageReadRequest": { "type": "object", "properties": { "message": { "type": "string", "minLength": 1 }, "subject": { "type": "string", "nullable": true, "minLength": 1 }, "channel": { "enum": [ "sms", "email" ], "type": "string", "description": "* `sms` - sms\n* `email` - email", "x-spec-enum-id": "a718e613965537ee" }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" }, "sent_by": { "type": "integer" }, "is_sent": { "type": "boolean" }, "sent_at": { "type": "string", "format": "date-time" }, "scheduled_at": { "type": "string", "format": "date-time" }, "content_check": { "$ref": "#/components/schemas/BroadcastMessageContentCheckRequest" } }, "required": [ "channel", "content_check", "is_sent", "message", "scheduled_at", "sent_at", "sent_by", "subject", "use_case" ], "title": "BroadcastMessageReadRequest" }, "BroadcastMessageRecipientCount": { "type": "object", "properties": { "total": { "type": "integer" }, "recipients": { "type": "integer" }, "no_sms_account": { "type": "integer" }, "opted_out_of_broadcast_messages": { "type": "integer" }, "opted_out_of_sms_marketing": { "type": "integer" }, "unclaimed_account": { "type": "integer" } }, "required": [ "recipients", "total" ], "title": "BroadcastMessageRecipientCount" }, "BroadcastMessageTargetRecipientsParamsRequest": { "oneOf": [ { "type": "object", "properties": { "query": { "type": "object", "additionalProperties": {}, "description": "A query defining which customers to include based on a filtration of associated attendances. The same filter parameters available on the `/attendances` list endpoint can be used." }, "query_type": { "type": "string", "enum": [ "attendance" ], "description": "Constant value: attendance" } }, "required": [ "query", "query_type" ], "title": "AttendanceCustomerQuery" }, { "type": "object", "properties": { "query": { "type": "object", "additionalProperties": {}, "description": "A query defining which customers to include based on a filtration of the customer profiles. Accepts the customer segment filter keys, plus an optional `segment` ID that limits recipients to that saved segment's members, resolved the same way as the customer report." }, "query_type": { "type": "string", "enum": [ "customer" ], "description": "Constant value: customer" } }, "required": [ "query", "query_type" ], "title": "CustomerQuery" } ], "title": "BroadcastMessageTargetRecipientsParamsRequest" }, "BulkAction": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "bulk_action" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "maxLength": 128 }, "job": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/Job" } ] } }, "required": [ "id", "object", "type" ], "title": "BulkAction" }, "BulkActionExportJob": { "type": "object", "properties": { "job": { "type": "string", "readOnly": true } }, "required": [ "job" ], "title": "BulkActionExportJob" }, "BulkActionResult": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "bulk_action_result" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "primary_object": { "type": "integer" }, "status": { "type": "string", "readOnly": true }, "error_message": { "type": "string", "nullable": true }, "job": { "$ref": "#/components/schemas/Job", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "id", "object", "primary_object", "status" ], "title": "BulkActionResult" }, "BulkCloseParamsRequest": { "type": "object", "properties": { "dates": { "type": "array", "items": { "type": "string", "format": "date" } } }, "required": [ "dates" ], "title": "BulkCloseParamsRequest" }, "BulkCreateHolds": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "object", "additionalProperties": {} }, "hold_type": { "enum": [ "open_ended", "finite" ], "type": "string", "description": "* `open_ended` - open_ended\n* `finite` - finite", "x-spec-enum-id": "7ac5a7f8eb084b1f" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "disable_prorates": { "type": "boolean" }, "extend_expirations": { "type": "boolean" } }, "required": [ "hold_type", "start_date" ], "title": "BulkCreateHolds" }, "BulkCreateHoldsRequest": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "object", "additionalProperties": {} }, "hold_type": { "enum": [ "open_ended", "finite" ], "type": "string", "description": "* `open_ended` - open_ended\n* `finite` - finite", "x-spec-enum-id": "7ac5a7f8eb084b1f" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "disable_prorates": { "type": "boolean" }, "extend_expirations": { "type": "boolean" } }, "required": [ "hold_type", "start_date" ], "title": "BulkCreateHoldsRequest" }, "BulkDeleteCustomersRequest": { "type": "object", "properties": { "customers": { "type": "object", "additionalProperties": {} }, "cancel_active_memberships": { "type": "boolean", "default": false }, "cancel_pending_payments": { "type": "boolean", "default": false } }, "title": "BulkDeleteCustomersRequest" }, "BulkEditHolds": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "object", "additionalProperties": {} }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "days_to_add": { "type": "integer", "maximum": 1000, "minimum": 1 }, "end_immediately": { "type": "boolean" }, "make_open_ended": { "type": "boolean" } }, "title": "BulkEditHolds" }, "BulkEditHoldsRequest": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "object", "additionalProperties": {} }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "days_to_add": { "type": "integer", "maximum": 1000, "minimum": 1 }, "end_immediately": { "type": "boolean" }, "make_open_ended": { "type": "boolean" } }, "title": "BulkEditHoldsRequest" }, "BulkExtendExpirationDates": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "days": { "type": "integer", "maximum": 1000, "minimum": 1 }, "customer_memberships": { "type": "object", "additionalProperties": {} } }, "required": [ "days" ], "title": "BulkExtendExpirationDates" }, "BulkExtendExpirationDatesRequest": { "type": "object", "properties": { "customermembership_ids": { "type": "array", "items": { "type": "integer" } }, "days": { "type": "integer", "maximum": 1000, "minimum": 1 }, "customer_memberships": { "type": "object", "additionalProperties": {} } }, "required": [ "days" ], "title": "BulkExtendExpirationDatesRequest" }, "BulkUpdateAvailabilityScheduleOfferingTypeRequest": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingTypeRequest" } } }, "required": [ "items" ], "title": "BulkUpdateAvailabilityScheduleOfferingTypeRequest" }, "BusinessAdvisorConfigRead": { "type": "object", "properties": { "business_type": { "type": "string", "nullable": true, "description": "How the provider describes their business (e.g. parkour gym, yoga studio, PT)." }, "typical_customers": { "type": "string", "nullable": true, "description": "Description of the provider's typical members or customers." }, "main_goal": { "type": "string", "nullable": true, "description": "The provider's main goal right now (e.g. grow memberships, reduce churn, increase revenue)." }, "additional_context": { "type": "string", "nullable": true, "description": "Any extra context the AI should know, such as things already tried or specific constraints." } }, "title": "BusinessAdvisorConfigRead" }, "BusinessAdvisorReport": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "business_advisor_report" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "available_at": { "type": "string", "format": "date-time", "nullable": true }, "headline": { "type": "string", "nullable": true, "description": "A brief headline summary of the report." }, "content": { "type": "string", "format": "uri", "readOnly": true } }, "required": [ "content", "end_date", "id", "object", "start_date" ], "title": "BusinessAdvisorReport" }, "BusinessClosure": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "business_closure" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "closure_date": { "type": "string", "format": "date" } }, "required": [ "closure_date", "id", "object" ], "title": "BusinessClosure" }, "CRMActionType": { "type": "object", "properties": { "compatible_triggers": { "type": "string", "readOnly": true, "description": "Workflow trigger types compatible with this action type." } }, "required": [ "compatible_triggers" ], "title": "CRMActionType" }, "CRMBulkStatusEvaluation": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_bulk_status_evaluation" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "queued", "dispatching", "in_progress", "completed", "cancelled" ], "description": "Processing status of the bulk evaluation run." }, "dispatch_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Scheduled start time of the evaluation." }, "status_updated_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Timestamp when the evaluation status last changed." }, "items_total": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "description": "Total number of customers to be evaluated." }, "items_completed": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "description": "Number of customers evaluated so far." }, "override_locked_status": { "type": "boolean", "description": "Whether manually locked customer statuses are overridden during this evaluation." } }, "required": [ "id", "object", "status" ], "title": "CRMBulkStatusEvaluation" }, "CRMConfig": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_config" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "allow_backward_status_transitions": { "type": "boolean", "description": "Whether manual status changes to lower-precedence statuses are permitted." }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "triggered_bulk_evaluation": { "type": "integer", "nullable": true, "readOnly": true, "description": "The ID of a bulk status evaluation triggered by the last update, if any." } }, "required": [ "id", "object", "triggered_bulk_evaluation", "updated_at" ], "title": "CRMConfig" }, "CRMInteractionRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_interaction" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer": { "type": "integer" }, "logged_by": { "type": "integer", "nullable": true, "description": "ID of the staff member who logged the interaction." }, "interaction_type": { "type": "string", "enum": [ "Call", "Contacted", "Email", "Meeting" ] }, "call_outcome": { "type": "string", "enum": [ "Connected", "No Answer", "Voicemail" ], "nullable": true, "description": "Outcome of the call; only relevant when interaction_type is a call." }, "note": { "type": "string", "description": "Free-text notes about the interaction." }, "created_at": { "type": "string", "format": "date-time" } }, "required": [ "call_outcome", "customer", "id", "interaction_type", "logged_by", "object" ], "title": "CRMInteractionRead" }, "CRMInteractionWriteRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "interaction_type": { "type": "string", "enum": [ "Call", "Contacted", "Email", "Meeting" ] }, "call_outcome": { "type": "string", "enum": [ "Connected", "No Answer", "Voicemail" ], "nullable": true, "description": "Outcome of the call; only relevant when interaction_type is a call." }, "note": { "type": "string", "description": "Free-text notes about the interaction." } }, "required": [ "customer", "interaction_type" ], "title": "CRMInteractionWriteRequest" }, "CRMStatusChange": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_status_change" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "new_status": { "type": "string", "nullable": true, "description": "Slug of the status the customer was changed TO; null if the status was removed." }, "old_status": { "type": "string", "nullable": true, "description": "Slug of the status the customer was changed FROM; null if this was the first assignment." }, "changed_by": { "type": "integer", "nullable": true, "description": "ID of the staff member or automation that triggered the change." }, "created_at": { "type": "string", "format": "date-time" } }, "required": [ "changed_by", "customer", "id", "new_status", "object", "old_status" ], "title": "CRMStatusChange" }, "CRMStatusRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_status" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true, "maxLength": 255 }, "slug": { "type": "string", "readOnly": true, "description": "URL-safe, auto-generated identifier for this status.", "pattern": "^[-a-zA-Z0-9_]+$" }, "color": { "type": "string", "nullable": true, "readOnly": true, "description": "6-digit hex color code used to display this status in the UI. Falls back to the color defined for the underlying default status when no color has been stored." }, "enabled": { "type": "boolean", "description": "Whether automatic assignment to this status is active." }, "condition_match_type": { "enum": [ "all", "any" ], "type": "string", "x-spec-enum-id": "0a55c3153ef51701", "description": "Whether all conditions (AND) or any single condition (OR) must match.\n\n* `all` - All\n* `any` - Any" }, "precedence": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "description": "Evaluation order among statuses; lower values are evaluated first." }, "updated_at": { "type": "string", "format": "date-time", "nullable": true }, "triggered_bulk_evaluation": { "type": "integer", "nullable": true, "readOnly": true, "description": "The ID of a bulk status evaluation that was triggered by last update to this status, if any." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/StatusCondition" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "color", "id", "object", "slug", "triggered_bulk_evaluation" ], "title": "CRMStatusRead" }, "CRMStatusWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "enabled": { "type": "boolean", "description": "Whether automatic assignment to this status is active." }, "color": { "type": "string", "minLength": 1, "description": "6-digit hex color code (without '#' prefix).", "maxLength": 6 }, "condition_match_type": { "enum": [ "all", "any" ], "type": "string", "x-spec-enum-id": "459b4c3ca3f51d1f", "description": "Whether all conditions (AND) or any single condition (OR) must match.\n\n* `all` - all\n* `any` - any" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/StatusConditionRequest" } }, "apply_to_existing_customers": { "type": "boolean", "default": false, "description": "When true and the conditions are modified, triggers a bulk re-evaluation to update the CRM status of all existing customers." }, "override_locked_status": { "type": "boolean", "default": false, "description": "When true and apply_to_existing_customers is true, the bulk re-evaluation will also update customers whose CRM status has been manually locked (is_crm_status_locked=True), overriding the lock." } }, "required": [ "color", "condition_match_type", "conditions", "enabled", "name" ], "title": "CRMStatusWriteRequest" }, "CRMWorkflowAction": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_workflow_action" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowCondition" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplate" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "x-spec-enum-id": "e0e2c7067615d3c9", "description": "Use case classification for this email action.\n\n* `marketing` - marketing\n* `general` - general" } }, "required": [ "action_type", "conditions", "email_template", "id", "object", "scheduled_delay", "workflow" ], "title": "EmailCustomerAction" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_workflow_action" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowCondition" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplate" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." } }, "required": [ "action_type", "conditions", "email_template", "id", "object", "scheduled_delay", "workflow" ], "title": "EmailStaffAction" } ], "title": "CRMWorkflowAction" }, "CRMWorkflowActionRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1 }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "x-spec-enum-id": "e0e2c7067615d3c9", "description": "Use case classification for this email action.\n\n* `marketing` - marketing\n* `general` - general" } }, "required": [ "action_type", "conditions", "email_template", "scheduled_delay", "workflow" ], "title": "EmailCustomerAction" }, { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1 }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." } }, "required": [ "action_type", "conditions", "email_template", "scheduled_delay", "workflow" ], "title": "EmailStaffAction" } ], "title": "CRMWorkflowActionRequest" }, "CRMWorkflowCondition": { "oneOf": [ { "type": "object", "properties": { "condition_type": { "enum": [ "status_change", "customer_label" ], "type": "string", "description": "* `status_change` - Status Change\n* `customer_label` - Has Crm Status", "x-spec-enum-id": "9f4d1dc92c5d5e21" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - Equals\n* `not_equals` - Not Equals", "x-spec-enum-id": "a1988808bd97ce31" }, "new_status": { "type": "string", "nullable": true, "description": "The status the customer was changed TO. If null, any new status matches." }, "old_status": { "type": "string", "nullable": true, "description": "The status the customer was changed FROM. If null, any old status matches." } }, "required": [ "condition_type", "operator" ], "title": "CustomerStatusChangedCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "status_change", "customer_label" ], "type": "string", "description": "* `status_change` - Status Change\n* `customer_label` - Has Crm Status", "x-spec-enum-id": "9f4d1dc92c5d5e21" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - Equals\n* `not_equals` - Not Equals", "x-spec-enum-id": "a1988808bd97ce31" }, "label": { "type": "string" } }, "required": [ "condition_type", "label", "operator" ], "title": "CustomerLabelCondition" } ], "title": "CRMWorkflowCondition" }, "CRMWorkflowConditionRequest": { "oneOf": [ { "type": "object", "properties": { "condition_type": { "enum": [ "status_change", "customer_label" ], "type": "string", "description": "* `status_change` - Status Change\n* `customer_label` - Has Crm Status", "x-spec-enum-id": "9f4d1dc92c5d5e21" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - Equals\n* `not_equals` - Not Equals", "x-spec-enum-id": "a1988808bd97ce31" }, "new_status": { "type": "string", "minLength": 1, "nullable": true, "description": "The status the customer was changed TO. If null, any new status matches." }, "old_status": { "type": "string", "minLength": 1, "nullable": true, "description": "The status the customer was changed FROM. If null, any old status matches." } }, "required": [ "condition_type", "operator" ], "title": "CustomerStatusChangedCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "status_change", "customer_label" ], "type": "string", "description": "* `status_change` - Status Change\n* `customer_label` - Has Crm Status", "x-spec-enum-id": "9f4d1dc92c5d5e21" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - Equals\n* `not_equals` - Not Equals", "x-spec-enum-id": "a1988808bd97ce31" }, "label": { "type": "string", "minLength": 1 } }, "required": [ "condition_type", "label", "operator" ], "title": "CustomerLabelCondition" } ], "title": "CRMWorkflowConditionRequest" }, "CRMWorkflowCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 255 }, "trigger": { "enum": [ "lead_form.submitted", "customer_status.changed" ], "type": "string", "x-spec-enum-id": "115c7411a7673eb1", "description": "The event type that triggers this workflow.\n\n* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed" } }, "required": [ "trigger" ], "title": "CRMWorkflowCreateRequest" }, "CRMWorkflowRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "crm_workflow" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true, "maxLength": 255 }, "trigger": { "enum": [ "lead_form.submitted", "customer_status.changed" ], "type": "string", "x-spec-enum-id": "115c7411a7673eb1", "description": "The event type that triggers this workflow.\n\n* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed" } }, "required": [ "id", "object", "trigger" ], "title": "CRMWorkflowRead" }, "CRMWorkflowUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 255 } }, "title": "CRMWorkflowUpdateRequest" }, "CalculatedFee": { "type": "object", "properties": { "pre_tax_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "post_tax_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "fee_line_items": { "type": "array", "items": { "$ref": "#/components/schemas/CalculatedLineItem" } } }, "required": [ "fee_line_items", "post_tax_price", "pre_tax_price" ], "title": "CalculatedFee" }, "CalculatedLineItem": { "type": "object", "properties": { "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "description": { "type": "string", "readOnly": true } }, "required": [ "amount", "description" ], "title": "CalculatedLineItem" }, "CalendarSourceAccountOAuthFlowRead": { "type": "object", "properties": { "uri": { "type": "string" }, "timeout_seconds": { "type": "integer" } }, "required": [ "timeout_seconds", "uri" ], "title": "CalendarSourceAccountOAuthFlowRead" }, "CalendarSourceAccountOAuthFlowWriteRequest": { "type": "object", "properties": { "calendar_source": { "enum": [ "GOOG", "MSFT" ], "type": "string", "description": "* `GOOG` - Google\n* `MSFT` - Microsoft", "x-spec-enum-id": "15fdd36b3768f6de" }, "redirect_uri": { "type": "string", "minLength": 1, "description": "Redirect URI for after the OAuth flow is completed (or errors out).Query parameters will be appended to this URI:\n'success' - 1 or 0, indicating whether the flow was successful, or failed\n'account_id' - if success is 1, this will be the account ID\n'error' - if success is 0, this will be some error code" } }, "required": [ "calendar_source", "redirect_uri" ], "title": "CalendarSourceAccountOAuthFlowWriteRequest" }, "CalendarSourceAccountRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "calendar_source": { "enum": [ "GOOG", "MSFT" ], "type": "string", "description": "* `GOOG` - Google\n* `MSFT` - Microsoft", "x-spec-enum-id": "15fdd36b3768f6de" }, "account_id": { "type": "string", "readOnly": true }, "username": { "type": "string", "readOnly": true } }, "required": [ "account_id", "calendar_source", "id", "username" ], "title": "CalendarSourceAccountRead" }, "CalendarSourceEventRead": { "type": "object", "properties": { "base64_calendar_source_calendar_id": { "type": "string", "readOnly": true }, "calendar_is_primary": { "type": "string", "readOnly": true }, "calendar_name": { "type": "string", "readOnly": true }, "calendar_source_calendar_id": { "type": "string", "readOnly": true, "description": "The ID of the calendar in the source system (ex: Google Calendar)." }, "calendar_source_created_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "calendar_source_event_id": { "type": "string", "readOnly": true, "description": "The ID of the event in the source system (ex: Google Calendar)." }, "calendar_source_updated_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "calendar_timezone": { "type": "string", "readOnly": true }, "description": { "type": "string", "readOnly": true, "nullable": true }, "end_datetime_utc": { "type": "string", "format": "date-time" }, "etag": { "type": "string", "readOnly": true, "nullable": true }, "is_all_day": { "type": "boolean", "readOnly": true }, "is_busy": { "type": "boolean", "readOnly": true }, "link": { "type": "string", "format": "uri", "readOnly": true, "nullable": true }, "location_address": { "type": "string", "readOnly": true, "nullable": true }, "location_latitude": { "type": "number", "format": "double", "readOnly": true, "nullable": true }, "location_longitude": { "type": "number", "format": "double", "readOnly": true, "nullable": true }, "location_name": { "type": "string", "readOnly": true, "nullable": true }, "start_datetime_utc": { "type": "string", "format": "date-time" }, "status": { "enum": [ "CONF", "TENT", "CANC", "UNKN" ], "type": "string", "description": "* `CONF` - Confirmed\n* `TENT` - Tentative\n* `CANC` - Cancelled\n* `UNKN` - Unknown", "x-spec-enum-id": "fdeadc30372b216f" }, "timezone": { "type": "string", "readOnly": true, "nullable": true }, "title": { "type": "string", "readOnly": true, "nullable": true }, "visibility": { "enum": [ "DEFT", "PUBL", "PRIV", "UNKN" ], "type": "string", "description": "* `DEFT` - Default\n* `PUBL` - Public\n* `PRIV` - Private\n* `UNKN` - Unknown", "x-spec-enum-id": "55e061dc18981a76" }, "calendar_source_account": { "$ref": "#/components/schemas/CalendarSourceAccountRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "base64_calendar_source_calendar_id", "calendar_is_primary", "calendar_name", "calendar_source_calendar_id", "calendar_source_created_at", "calendar_source_event_id", "calendar_source_updated_at", "calendar_timezone", "description", "end_datetime_utc", "etag", "is_all_day", "is_busy", "link", "location_address", "location_latitude", "location_longitude", "location_name", "start_datetime_utc", "status", "timezone", "title", "visibility" ], "title": "CalendarSourceEventRead" }, "CheckAccountRead": { "type": "object", "properties": { "account_exists": { "nullable": false, "type": "boolean" }, "has_identity_account": { "nullable": false, "type": "boolean" }, "is_claimed": { "nullable": false, "type": "boolean" }, "is_hidden": { "nullable": false, "type": "boolean" }, "web_auth_url": { "nullable": false, "type": "string" } }, "title": "CheckAccountRead" }, "CheckinCreateRequest": { "type": "object", "properties": { "date": { "type": "string", "format": "date" }, "venue": { "type": "integer" }, "customer": { "type": "integer" }, "customer_membership": { "type": "integer" }, "comped": { "type": "boolean", "default": false } }, "required": [ "customer", "date", "venue" ], "title": "CheckinCreateRequest" }, "CheckinRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "checkin" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "timestamp": { "type": "string", "format": "date-time" }, "comped": { "type": "boolean" }, "customer_membership": { "type": "integer", "readOnly": true } }, "required": [ "comped", "customer_membership", "id", "object", "timestamp" ], "title": "CheckinRead" }, "CheckinSettings": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "granularity": { "type": "string", "enum": [ "business", "venue" ] } }, "required": [ "granularity" ], "title": "CheckinSettings" }, "CheckinSettingsRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "granularity": { "type": "string", "enum": [ "business", "venue" ] } }, "required": [ "granularity" ], "title": "CheckinSettingsRequest" }, "ClassesReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "instructors": { "type": "string" }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "day_of_week": { "type": "array", "items": { "type": "string", "enum": [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ] } }, "status": { "type": "string" }, "starts_at_lte": { "type": "string", "format": "date-time" }, "starts_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "timeframe": { "type": "string" }, "durations": { "type": "array", "items": { "type": "integer" } }, "include_future": { "type": "boolean", "default": false }, "columns": { "type": "array", "items": { "enum": [ "id", "starts_at", "updated_at", "status", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "start_time", "duration_minutes", "day_of_week", "attendance_count", "late_cancel_count", "no_show_count" ], "type": "string", "description": "* `id` - id\n* `starts_at` - starts_at\n* `updated_at` - updated_at\n* `status` - status\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `start_time` - start_time\n* `duration_minutes` - duration_minutes\n* `day_of_week` - day_of_week\n* `attendance_count` - attendance_count\n* `late_cancel_count` - late_cancel_count\n* `no_show_count` - no_show_count", "x-spec-enum-id": "89ccdc814acfed39" } } }, "title": "ClassesReportParamsRequest" }, "ConfirmAttendanceParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer", "description": "The unique numeric identifier of the customer whose attendance to confirm." } }, "required": [ "customer" ], "title": "ConfirmAttendanceParamsRequest" }, "ContactInfo": { "type": "object", "properties": { "email": { "type": "string", "nullable": true, "readOnly": true }, "phone_number": { "type": "string", "nullable": true, "readOnly": true } }, "required": [ "email", "phone_number" ], "title": "ContactInfo" }, "Content": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "content" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 256 }, "description": { "type": "string" }, "collection": { "type": "integer", "readOnly": true }, "thumbnail": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "instructors": { "type": "array", "items": { "$ref": "#/components/schemas/Instructor" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/FilterTag" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "is_favorited_by_active_customer": { "type": "boolean", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "collection", "description", "id", "name", "object", "thumbnail" ], "title": "Content" }, "ContentAccessLinkCreateRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "ContentAccessLinkCreateRequest" }, "ContentAccessLinkRead": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" }, "is_external": { "type": "boolean" }, "oembed": {} }, "required": [ "is_external", "oembed", "url" ], "title": "ContentAccessLinkRead" }, "ContentAddFavoriteRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "ContentAddFavoriteRequest" }, "ContentCollection": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "content_collection" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 256 }, "description": { "type": "string", "maxLength": 160 }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768, "nullable": true }, "thumbnail": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "content_count": { "type": "integer" }, "memberships": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "active_customer_has_access": { "type": "boolean", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "content_thumbnail": { "$ref": "#/components/schemas/ContentThumbnail", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "content_count", "id", "object", "thumbnail" ], "title": "ContentCollection" }, "ContentFilter": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 32 }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "tags": { "type": "array", "items": { "$ref": "#/components/schemas/FilterTag" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "id" ], "title": "ContentFilter" }, "ContentRemoveFavoriteRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "ContentRemoveFavoriteRequest" }, "ContentThumbnail": { "type": "object", "properties": { "url": { "type": "string", "format": "uri" }, "original_width": { "type": "integer", "nullable": true }, "original_height": { "type": "integer", "nullable": true } }, "required": [ "original_height", "original_width", "url" ], "title": "ContentThumbnail" }, "ContentViewsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "content_id", "content.id", "content", "content_name", "content.name", "viewed_at" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `content_id` - content_id\n* `content.id` - content.id\n* `content` - content\n* `content_name` - content_name\n* `content.name` - content.name\n* `viewed_at` - viewed_at", "x-spec-enum-id": "ea75606005c95fd1" } }, "content": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "viewed_at_lte": { "type": "string", "format": "date-time" }, "viewed_at_gte": { "type": "string", "format": "date-time" }, "viewed_at_timeframe": { "type": "string" } }, "title": "ContentViewsParamsRequest" }, "CourseRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "course" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true, "title": "Course Name", "maxLength": 256 }, "offering_type": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeRead" } ] }, "published": { "type": "boolean" }, "course_sessions": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "CourseSessionRead[]", "items": { "$ref": "#/components/schemas/CourseSessionRead" } } ] } }, "required": [ "course_sessions", "id", "object", "offering_type" ], "title": "CourseRead" }, "CourseSeriesRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "course_series" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 256 }, "course": { "type": "integer" }, "session_count": { "type": "integer", "readOnly": true, "description": "The number of active sessions in the series. This is the ceiling a customer may register for (see ``CourseAttendance.max_allowed_course_date_registrations``)." }, "course_sessions": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "CourseSessionRead[]", "items": { "$ref": "#/components/schemas/CourseSessionRead" } } ] } }, "required": [ "course", "course_sessions", "id", "name", "object", "session_count" ], "title": "CourseSeriesRead" }, "CourseSessionAttendance": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "course_session_attendance" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "course_session": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CourseSessionRead" } ] }, "customer": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "status": { "type": "string", "enum": [ "registered", "attended", "no_show" ], "description": "The attendance's status." } }, "required": [ "course_session", "id", "object", "status" ], "title": "CourseSessionAttendance" }, "CourseSessionAttendancesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "course_session_id", "course_session.id", "course_session", "course_session_starts_at", "course_session.starts_at", "course_id", "course.id", "course", "course_name", "course.name", "course_series_id", "course_series.id", "course_series", "course_series_name", "course_series.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructors", "booking_method", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "is_makeup", "status" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `course_session_id` - course_session_id\n* `course_session.id` - course_session.id\n* `course_session` - course_session\n* `course_session_starts_at` - course_session_starts_at\n* `course_session.starts_at` - course_session.starts_at\n* `course_id` - course_id\n* `course.id` - course.id\n* `course` - course\n* `course_name` - course_name\n* `course.name` - course.name\n* `course_series_id` - course_series_id\n* `course_series.id` - course_series.id\n* `course_series` - course_series\n* `course_series_name` - course_series_name\n* `course_series.name` - course_series.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructors` - instructors\n* `booking_method` - booking_method\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `is_makeup` - is_makeup\n* `status` - status", "x-spec-enum-id": "b91007750448ae82" } }, "status": { "type": "array", "items": { "enum": [ "no_show", "registered", "attended" ], "type": "string", "description": "* `no_show` - no_show\n* `registered` - registered\n* `attended` - attended", "x-spec-enum-id": "47204a6d452cf619" } }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "instructors": { "type": "string" }, "customers": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "include_future": { "type": "boolean", "default": false }, "booking_methods": { "type": "array", "items": { "enum": [ "session_dropin", "membership", "course_dropin" ], "type": "string", "description": "* `session_dropin` - session_dropin\n* `membership` - membership\n* `course_dropin` - course_dropin", "x-spec-enum-id": "c776d7f1be44e761" } }, "is_makeup": { "type": "boolean" }, "session_starts_at_lte": { "type": "string", "format": "date-time" }, "session_starts_at_gte": { "type": "string", "format": "date-time" }, "session_timeframe": { "type": "string" } }, "title": "CourseSessionAttendancesParamsRequest" }, "CourseSessionRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "course_session" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true, "title": "Course Name", "readOnly": true }, "starts_at": { "type": "string", "format": "date-time", "readOnly": true }, "ends_at": { "type": "string", "format": "date-time", "readOnly": true }, "status": { "type": "string", "enum": [ "active", "cancelled" ] }, "attending_count": { "type": "integer" }, "max_occupancy": { "type": "integer", "nullable": true, "description": "None and 0 both represent unlimited occupancy.", "readOnly": true }, "venue": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "instructors": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "Instructor[]", "items": { "$ref": "#/components/schemas/Instructor" } } ] }, "course": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CourseRead" } ] }, "series": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CourseSeriesRead" } ] }, "session_number": { "type": "integer", "readOnly": true, "nullable": true, "description": "1-based position of this session among the active sessions of its series, ordered by start time (the N in 'N of M'). Null for a session that isn't active." }, "session_total": { "type": "integer", "readOnly": true, "description": "Number of active sessions in this session's series (the M in 'N of M')." }, "customer_url": { "type": "string", "readOnly": true }, "provider_url": { "type": "string", "readOnly": true } }, "required": [ "course", "customer_url", "ends_at", "id", "instructors", "name", "object", "provider_url", "series", "session_number", "session_total", "starts_at", "status", "venue" ], "title": "CourseSessionRead" }, "CreateImageRequest": { "type": "object", "properties": { "image": { "type": "string", "format": "binary" } }, "required": [ "image" ], "title": "CreateImageRequest" }, "CreateVenueRoomRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 64 }, "venue": { "type": "integer" }, "thumbnail": { "type": "integer", "nullable": true } }, "required": [ "name", "venue" ], "title": "CreateVenueRoomRequest" }, "Currency": { "type": "object", "properties": { "iso_currency_code": { "type": "string" }, "symbol": { "type": "string" }, "position": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "iso_currency_code", "position", "symbol" ], "title": "Currency" }, "CurrentBillingPeriod": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" } }, "required": [ "end_date", "start_date" ], "title": "CurrentBillingPeriod" }, "CustomerCreateRequest": { "oneOf": [ { "type": "object", "properties": { "first_name": { "type": "string", "minLength": 1 }, "last_name": { "type": "string", "minLength": 1 }, "field_values": { "allOf": [ { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" } ], "description": "Values for the signup form fields must be provided." }, "referral_code": { "type": "string", "minLength": 1 }, "venue": { "type": "integer" } }, "required": [ "first_name", "last_name" ], "title": "CreateCustomerBySelfSignUp" }, { "type": "object", "properties": { "first_name": { "type": "string", "minLength": 1 }, "last_name": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email", "minLength": 1 }, "invitation_note": { "type": "string", "minLength": 1 }, "field_values": { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" }, "send_invitation_email": { "type": "boolean", "default": true } }, "required": [ "first_name", "last_name" ], "title": "CreateCustomerByStaffInvite" } ], "title": "CustomerCreateRequest" }, "CustomerCreditsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "created_at", "amount", "balance", "memo" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `created_at` - created_at\n* `amount` - amount\n* `balance` - balance\n* `memo` - memo", "x-spec-enum-id": "8f249a21b85806da" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "created_at_gte": { "type": "string", "format": "date-time" }, "created_at_lte": { "type": "string", "format": "date-time" }, "created_at_timeframe": { "type": "string" } }, "title": "CustomerCreditsReportParamsRequest" }, "CustomerCrmProgressionReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "max_progressed_status_id", "max_progressed_status.id", "max_progressed_status", "max_progressed_status_name", "max_progressed_status.name", "max_progressed_status_slug", "max_progressed_status.slug", "current_status_id", "current_status.id", "current_status", "current_status_name", "current_status.name", "count" ], "type": "string", "description": "* `max_progressed_status_id` - max_progressed_status_id\n* `max_progressed_status.id` - max_progressed_status.id\n* `max_progressed_status` - max_progressed_status\n* `max_progressed_status_name` - max_progressed_status_name\n* `max_progressed_status.name` - max_progressed_status.name\n* `max_progressed_status_slug` - max_progressed_status_slug\n* `max_progressed_status.slug` - max_progressed_status.slug\n* `current_status_id` - current_status_id\n* `current_status.id` - current_status.id\n* `current_status` - current_status\n* `current_status_name` - current_status_name\n* `current_status.name` - current_status.name\n* `count` - count", "x-spec-enum-id": "b40ac56385a9a2b9" }, "description": "Select which columns to include in the report. Attribute columns with the same values are grouped into the same rows, and aggregate columns are calculated for each group.", "minItems": 1 }, "status_first_assigned_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose CRM status was first assigned at or after this date." }, "status_first_assigned_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose CRM status was first assigned at or before this date." }, "first_reached_status": { "type": "integer", "description": "Filter to customers who have ever reached a specific CRM status (by status ID)." }, "first_reached_status_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose first assignment to the specified status was at or after this date. Must be combined with first_reached_status." }, "first_reached_status_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose first assignment to the specified status was at or before this date. Must be combined with first_reached_status." } }, "required": [ "columns" ], "title": "CustomerCrmProgressionReportParamsRequest" }, "CustomerField": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "object": { "enum": [ "customer_field" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "label": { "type": "string", "description": "Short label of the field." }, "full_text": { "type": "string", "description": "The full question or complete description of the field." }, "type": { "type": "string", "enum": [ "short_text", "long_text", "boolean", "date", "datetime", "integer", "decimal", "choice", "multiple_choice", "address", "phone_number" ], "description": "The data type." }, "key": { "type": "string", "nullable": true, "maxLength": 32 }, "explanation_required_condition": { "type": "string", "enum": [ "always", "never", "optional", "if_true", "if_false" ], "description": "For boolean types, indicates when an explanation is required." }, "choices": { "type": "array", "items": { "$ref": "#/components/schemas/FieldChoice" }, "description": "For `multiple_choice` and `choice` field types, the available values to select." }, "is_required": { "type": "boolean" }, "is_visible_to_all_staff": { "type": "boolean", "nullable": true }, "show_on_customer_profile": { "type": "boolean", "title": "Customer Profile", "description": "Would you like this field to be displayed on the customer profile page along with other basic fields like their name and email?" }, "show_on_new_customer_form": { "type": "boolean", "title": "Customer Create", "description": "Should the business be prompted to fill in this field when creating a TeamUp customer profile?" }, "system_use": { "type": "string", "nullable": true, "readOnly": true }, "forms": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this field's forms. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "CustomerFormRead[]", "items": { "$ref": "#/components/schemas/CustomerFormRead" } } ] }, "is_deletable": { "type": "boolean", "readOnly": true } }, "required": [ "choices", "created_at", "explanation_required_condition", "forms", "full_text", "id", "is_deletable", "label", "object", "system_use", "type" ], "title": "CustomerField" }, "CustomerFieldChangesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "customers": { "type": "array", "items": { "type": "integer" } }, "customer_fields": { "type": "array", "items": { "type": "integer" } }, "changed_at_gte": { "type": "string", "format": "date-time" }, "changed_at_lte": { "type": "string", "format": "date-time" }, "changed_at_timeframe": { "type": "string" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "field_id", "field.id", "field", "field_label", "field.label", "changed_at", "previous_value", "new_value" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `field_id` - field_id\n* `field.id` - field.id\n* `field` - field\n* `field_label` - field_label\n* `field.label` - field.label\n* `changed_at` - changed_at\n* `previous_value` - previous_value\n* `new_value` - new_value", "x-spec-enum-id": "43be9a8252042c13" } } }, "title": "CustomerFieldChangesParamsRequest" }, "CustomerFieldCreateUpdateRequest": { "type": "object", "properties": { "label": { "type": "string", "minLength": 1, "description": "Short label of the field (optional if setting full_text)." }, "full_text": { "type": "string", "minLength": 1, "description": "The full question or complete description of the field (optional if setting label)." }, "type": { "type": "string", "enum": [ "short_text", "long_text", "boolean", "date", "datetime", "integer", "decimal", "choice", "multiple_choice", "address", "phone_number" ], "description": "The data type." }, "explanation_required_condition": { "type": "string", "enum": [ "always", "never", "optional", "if_true", "if_false" ], "default": "never", "description": "For boolean types, indicates when an explanation is required." }, "choices": { "type": "array", "items": { "$ref": "#/components/schemas/FieldChoiceRequest" }, "description": "For `multiple_choice` and `choice` field types, the available values to select." }, "forms": { "type": "array", "items": { "type": "integer" }, "description": "IDs of the provider forms this field should be included on." }, "is_required": { "type": "boolean" }, "is_visible_to_all_staff": { "type": "boolean", "nullable": true }, "show_on_customer_profile": { "type": "boolean", "title": "Customer Profile", "description": "Would you like this field to be displayed on the customer profile page along with other basic fields like their name and email?" }, "show_on_new_customer_form": { "type": "boolean", "title": "Customer Create", "description": "Should the business be prompted to fill in this field when creating a TeamUp customer profile?" } }, "required": [ "type" ], "title": "CustomerFieldCreateUpdateRequest" }, "CustomerFieldValueCreate": { "oneOf": [ { "properties": { "value": { "type": "array", "items": { "type": "string", "description": "The value of the choice." } }, "field": { "type": "integer", "description": "The unique identifier of the field." }, "customer": { "type": "integer", "description": "The unique identifier of the customer." } }, "title": "ChoiceMultipleCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "date", "description": "A date." } }, "required": [ "customer", "field", "value" ], "title": "DateCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" } }, "required": [ "customer", "field", "value" ], "title": "DecimalCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ValueWrite" } }, "required": [ "customer", "field", "value" ], "title": "AddressCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "description": "The phone number." } }, "required": [ "customer", "field", "value" ], "title": "PhoneCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ValueWrite" } }, "required": [ "customer", "field", "value" ], "title": "BooleanCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string" } }, "required": [ "customer", "field", "value" ], "title": "LongTextCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "integer" } }, "required": [ "customer", "field", "value" ], "title": "IntegerCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "date-time", "description": "A date-time." } }, "required": [ "customer", "field", "value" ], "title": "DateTimeCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string" } }, "required": [ "customer", "field", "value" ], "title": "ShortTextCreate" }, { "properties": { "value": { "type": "string", "description": "The value of the choice." }, "field": { "type": "integer", "description": "The unique identifier of the field." }, "customer": { "type": "integer", "description": "The unique identifier of the customer." } }, "title": "ChoiceCreate" } ], "title": "CustomerFieldValueCreate" }, "CustomerFieldValueCreateRequest": { "oneOf": [ { "properties": { "value": { "type": "array", "items": { "type": "string", "description": "The value of the choice." } }, "field": { "type": "integer", "description": "The unique identifier of the field." }, "customer": { "type": "integer", "description": "The unique identifier of the customer." } }, "title": "ChoiceMultipleCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "date", "description": "A date." } }, "required": [ "customer", "field", "value" ], "title": "DateCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" } }, "required": [ "customer", "field", "value" ], "title": "DecimalCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "customer", "field", "value" ], "title": "AddressCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "minLength": 1, "description": "The phone number." } }, "required": [ "customer", "field", "value" ], "title": "PhoneCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "customer", "field", "value" ], "title": "BooleanCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "minLength": 1 } }, "required": [ "customer", "field", "value" ], "title": "LongTextCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "integer" } }, "required": [ "customer", "field", "value" ], "title": "IntegerCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "format": "date-time", "description": "A date-time." } }, "required": [ "customer", "field", "value" ], "title": "DateTimeCreate" }, { "type": "object", "properties": { "field": { "type": "integer" }, "customer": { "type": "integer" }, "value": { "type": "string", "minLength": 1 } }, "required": [ "customer", "field", "value" ], "title": "ShortTextCreate" }, { "properties": { "value": { "type": "string", "description": "The value of the choice." }, "field": { "type": "integer", "description": "The unique identifier of the field." }, "customer": { "type": "integer", "description": "The unique identifier of the customer." } }, "title": "ChoiceCreate" } ], "title": "CustomerFieldValueCreateRequest" }, "CustomerFieldValueRead": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string", "description": "The phone number." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "PhoneRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string", "format": "date-time", "description": "A date-time." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "DateTimeRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "LongTextRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "$ref": "#/components/schemas/_ValueRead" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "AddressRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "DecimalRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "IntegerRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string", "format": "date", "description": "A date." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "DateRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string", "readOnly": true }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "ChoiceRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "string" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "ShortTextRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "type": "array", "items": { "type": "string" }, "description": "A list of selected values." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "ChoiceMultipleRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_field_value" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "value": { "$ref": "#/components/schemas/_ReadValue" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "id", "last_updated_at", "object", "value" ], "title": "BooleanRead" } ], "title": "CustomerFieldValueRead" }, "CustomerFieldValueReadRequest": { "oneOf": [ { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "minLength": 1, "description": "The phone number." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "PhoneRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "format": "date-time", "description": "A date-time." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "DateTimeRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "minLength": 1 }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "LongTextRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ValueReadRequest" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "AddressRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "DecimalRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "IntegerRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "format": "date", "description": "A date." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "DateRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at" ], "title": "ChoiceRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "string", "minLength": 1 }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "ShortTextRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "A list of selected values." }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "ChoiceMultipleRead" }, { "type": "object", "properties": { "field": { "type": "integer" }, "value": { "$ref": "#/components/schemas/_ReadValueRequest" }, "created_at": { "type": "string", "format": "date-time" }, "last_updated_at": { "type": "string", "format": "date-time" } }, "required": [ "created_at", "field", "last_updated_at", "value" ], "title": "BooleanRead" } ], "title": "CustomerFieldValueReadRequest" }, "CustomerFieldValueUpdateRequest": { "oneOf": [ { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 } }, "required": [ "value" ], "title": "ShortTextUpdate" }, { "properties": { "value": { "type": "string", "description": "The value of the choice." } }, "title": "ChoiceUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1, "description": "The phone number." } }, "required": [ "value" ], "title": "PhoneUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "format": "date", "description": "A date." } }, "required": [ "value" ], "title": "DateUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 } }, "required": [ "value" ], "title": "LongTextUpdate" }, { "properties": { "value": { "type": "array", "items": { "type": "string", "description": "The value of the choice." } } }, "title": "ChoiceMultipleUpdate" }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "value" ], "title": "BooleanUpdate" }, { "type": "object", "properties": { "value": { "type": "integer" } }, "required": [ "value" ], "title": "IntegerUpdate" }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "value" ], "title": "AddressUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" } }, "required": [ "value" ], "title": "DecimalUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "format": "date-time", "description": "A date-time." } }, "required": [ "value" ], "title": "DateTimeUpdate" } ], "title": "CustomerFieldValueUpdateRequest" }, "CustomerFieldValuesWriteRequest": { "type": "array", "items": { "oneOf": [ { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "type": "integer" }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "properties": { "value": { "type": "string", "description": "The value of the choice." }, "field": { "type": "string", "description": "The unique identifier of the field." } } }, { "properties": { "value": { "type": "array", "items": { "type": "string", "description": "The value of the choice." } }, "field": { "type": "string", "description": "The unique identifier of the field." } } }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "type": "string", "format": "date", "description": "A date." }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1, "description": "The phone number." }, "field": { "type": "string", "description": "The unique identifier of the field." } }, "required": [ "value" ] } ] }, "title": "CustomerFieldValuesWriteRequest" }, "CustomerFormCreateUpdate": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 128 }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "offering_types_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "memberships_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "memberships": { "type": "array", "items": { "type": "integer" } }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormOfferingTypeSetting" } }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormMembershipSetting" } }, "submissions_expire_after": { "type": "string", "nullable": true }, "force_stale_updates": { "type": "boolean", "nullable": true }, "fields": { "type": "array", "items": { "type": "integer" } } }, "required": [ "created_at", "id", "name" ], "title": "CustomerFormCreateUpdate" }, "CustomerFormCreateUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 128 }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "offering_types_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "memberships_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "memberships": { "type": "array", "items": { "type": "integer" } }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormOfferingTypeSettingRequest" } }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormMembershipSettingRequest" } }, "submissions_expire_after": { "type": "string", "nullable": true }, "force_stale_updates": { "type": "boolean", "nullable": true }, "fields": { "type": "array", "items": { "type": "integer" } } }, "required": [ "name" ], "title": "CustomerFormCreateUpdateRequest" }, "CustomerFormRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 128 }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "offering_types_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "offering_types": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this form's offering types. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "OfferingTypeRead[]", "items": { "$ref": "#/components/schemas/OfferingTypeRead" } } ] }, "memberships_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ], "readOnly": true }, "memberships": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this form's memberships. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipRead[]", "items": { "$ref": "#/components/schemas/MembershipRead" } } ] }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ], "readOnly": true }, "submissions_expire_after": { "type": "string", "nullable": true }, "force_stale_updates": { "type": "boolean", "nullable": true }, "is_deletable": { "type": "boolean", "readOnly": true }, "fields": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this form's fields. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "CustomerField[]", "items": { "$ref": "#/components/schemas/CustomerField" } } ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormOfferingTypeSetting" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormMembershipSetting" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "stale_submissions_count": { "type": "integer", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "created_at", "fields", "id", "is_deletable", "memberships", "memberships_applies_to", "name", "offering_types", "offering_types_applies_to", "timing_mode" ], "title": "CustomerFormRead" }, "CustomerFormSubmission": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "latest_values": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFieldValueRead" }, "readOnly": true }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "form": { "type": "integer" } }, "required": [ "created_at", "customer", "form", "id", "latest_values" ], "title": "CustomerFormSubmission" }, "CustomerFormSubmissionRequest": { "type": "object", "properties": { "values": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFieldValueCreateRequest" }, "writeOnly": true }, "customer": { "type": "integer" }, "form": { "type": "integer" } }, "required": [ "customer", "form", "values" ], "title": "CustomerFormSubmissionRequest" }, "CustomerIssueRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_issue" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 256 }, "customer": { "type": "integer", "readOnly": true }, "status": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "properties": { "importance": { "type": "string", "enum": [ "Flag on Profiles", "Normal", "Consider case closed" ] } }, "required": [ "importance" ] } ] }, "case_type": { "$ref": "#/components/schemas/ProviderCaseType", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "customer", "id", "name", "object", "status" ], "title": "CustomerIssueRead" }, "CustomerMembershipCancelRequest": { "type": "object", "properties": { "forced_expiration_date": { "type": "string", "format": "date", "nullable": true } }, "title": "CustomerMembershipCancelRequest" }, "CustomerMembershipCreateRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "membership": { "type": "integer" }, "start_date": { "type": "string", "format": "date" }, "payment_plan": { "type": "integer" } }, "required": [ "customer", "membership" ], "title": "CustomerMembershipCreateRequest" }, "CustomerMembershipHold": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_membership_hold" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer_membership": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerMembershipRead" } ] }, "active": { "type": "boolean" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "days_to_add": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "prorate_usage": { "type": "boolean", "nullable": true } }, "required": [ "customer_membership", "end_date", "id", "object", "start_date" ], "title": "CustomerMembershipHold" }, "CustomerMembershipHoldsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "customers": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular customers." }, "memberships": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular memberships." }, "membership_types": { "type": "array", "items": { "type": "string", "enum": [ "pack", "prepaid", "recurring" ] }, "title": "Only include holds for particular membership types." }, "created_at_lte": { "type": "string", "format": "date", "title": "Only include holds created on or before a timestamp." }, "created_at_gte": { "type": "string", "format": "date", "title": "Only include holds created on or after a timestamp." }, "updated_at_lte": { "type": "string", "format": "date", "title": "Only include holds updated on or before a timestamp." }, "updated_at_gte": { "type": "string", "format": "date", "title": "Only include holds updated on or after a timestamp." }, "created_at_timeframe": { "type": "string", "title": "Only include holds created within a timeframe." }, "start_date_lte": { "type": "string", "format": "date", "title": "Only include holds starting on or before a date." }, "start_date_gte": { "type": "string", "format": "date", "title": "Only include holds starting on or after a date." }, "start_timeframe": { "type": "string", "title": "Only include holds starting within a timeframe." }, "end_date_lte": { "type": "string", "format": "date", "title": "Only include holds ending on or before a date." }, "end_date_gte": { "type": "string", "format": "date", "title": "Only include holds ending on or after a date." }, "end_timeframe": { "type": "string", "title": "Only include holds ending within a timeframe." }, "status": { "type": "array", "items": { "enum": [ "active", "ended", "upcoming" ], "type": "string", "description": "* `active` - active\n* `ended` - ended\n* `upcoming` - upcoming", "x-spec-enum-id": "ca64ef7c06a0a488" }, "title": "Only include holds with a particular status." }, "payment_resolution_type": { "type": "array", "items": { "enum": [ "charge", "credit", "none" ], "type": "string", "description": "* `charge` - charge\n* `credit` - credit\n* `none` - none", "x-spec-enum-id": "daf90168e108ff08" }, "title": "Only include holds with a particular payment resolution type." }, "is_usage_prorated": { "type": "boolean", "title": "Include holds based on whether they are prorated or not." }, "columns": { "type": "array", "items": { "enum": [ "id", "created_at", "updated_at", "start_date", "end_date", "status", "is_usage_prorated", "credit_amount", "reactivation_charge_amount", "is_payment_resolution_customized", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "customer_membership_id", "customer_membership.id", "customer_membership", "membership_id", "customer_membership.membership.id", "customer_membership.membership", "membership_type", "customer_membership.membership.type", "membership_name", "customer_membership.membership.name", "membership_start_date", "customer_membership.start_date", "membership_expiration_date", "customer_membership.expiration_date", "membership_allowed_cancellation_date", "customer_membership.allowed_cancellation_date", "previous_expiration_date", "previous_allowed_cancellation_date", "other_active_customer_memberships", "days_to_add" ], "type": "string", "description": "* `id` - id\n* `created_at` - created_at\n* `updated_at` - updated_at\n* `start_date` - start_date\n* `end_date` - end_date\n* `status` - status\n* `is_usage_prorated` - is_usage_prorated\n* `credit_amount` - credit_amount\n* `reactivation_charge_amount` - reactivation_charge_amount\n* `is_payment_resolution_customized` - is_payment_resolution_customized\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `customer_membership_id` - customer_membership_id\n* `customer_membership.id` - customer_membership.id\n* `customer_membership` - customer_membership\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership.membership` - customer_membership.membership\n* `membership_type` - membership_type\n* `customer_membership.membership.type` - customer_membership.membership.type\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `membership_start_date` - membership_start_date\n* `customer_membership.start_date` - customer_membership.start_date\n* `membership_expiration_date` - membership_expiration_date\n* `customer_membership.expiration_date` - customer_membership.expiration_date\n* `membership_allowed_cancellation_date` - membership_allowed_cancellation_date\n* `customer_membership.allowed_cancellation_date` - customer_membership.allowed_cancellation_date\n* `previous_expiration_date` - previous_expiration_date\n* `previous_allowed_cancellation_date` - previous_allowed_cancellation_date\n* `other_active_customer_memberships` - other_active_customer_memberships\n* `days_to_add` - days_to_add", "x-spec-enum-id": "34292b7dc48a4eaa" }, "title": "Only include particular columns." } }, "title": "CustomerMembershipHoldsRequest" }, "CustomerMembershipRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customermembership" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "readOnly": true }, "start_date": { "type": "string", "format": "date" }, "expiration_date": { "type": "string", "format": "date", "nullable": true }, "renewal_date": { "type": "string", "format": "date", "readOnly": true }, "status": { "type": "string", "enum": [ "active", "hold", "completed", "cancelled" ], "readOnly": true }, "membership": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/MembershipRead" } ] }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "discount_code": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/DiscountCodeRead" } ] }, "billed_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "active_hold": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerMembershipHold" } ] }, "payment_subscription": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PaymentSubscription" } ] }, "discount_code_makes_free_forever": { "type": "string", "readOnly": true }, "is_set_for_cancellation": { "type": "string", "readOnly": true }, "cancellation_reason": { "type": "string", "enum": [ "upgraded", "cancelled", "mistake", "downgraded", "no_auto_renew" ] }, "renew_from": { "type": "integer", "readOnly": true, "nullable": true }, "next_billing_date": { "type": "string", "format": "date", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "shared_with": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "usage_summary": { "$ref": "#/components/schemas/UsageSummary", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "plan_change_options": { "type": "array", "title": "PlanChangeOption[]", "items": { "type": "object", "properties": { "plan": { "type": "integer" }, "membership": { "type": "integer" }, "name": { "type": "string" }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_with_period": { "type": "string", "readOnly": true }, "billing_period_length": { "type": "integer" }, "direction": { "type": "string" }, "price_delta": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_delta_period": { "type": "string", "enum": [ "months", "weeks" ] }, "effective_date": { "type": "string", "format": "date", "nullable": true }, "is_prorated": { "type": "boolean" }, "cancellation_notice_days": { "type": "integer", "nullable": true }, "committed_billing_periods": { "type": "integer", "nullable": true }, "commitment_expiration_scheme": { "type": "string", "enum": [ "stop_contract", "renew_contract", "continue_by_period" ] } }, "required": [ "billing_period_length", "cancellation_notice_days", "commitment_expiration_scheme", "committed_billing_periods", "direction", "effective_date", "is_prorated", "membership", "name", "plan", "price", "price_delta", "price_delta_period", "price_with_period" ] }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "active_hold", "billed_price", "customer", "discount_code", "discount_code_makes_free_forever", "id", "is_set_for_cancellation", "membership", "name", "object", "payment_subscription", "renew_from", "renewal_date", "start_date", "status" ], "title": "CustomerMembershipRead" }, "CustomerMembershipReadRequest": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date" }, "expiration_date": { "type": "string", "format": "date", "nullable": true }, "membership": { "type": "integer" }, "customer": { "type": "integer" }, "billed_price": { "type": "string", "example": "10.99" }, "active_hold": { "type": "integer" }, "cancellation_reason": { "type": "string", "enum": [ "upgraded", "cancelled", "mistake", "downgraded", "no_auto_renew" ] } }, "required": [ "active_hold", "billed_price", "customer", "membership", "start_date" ], "title": "CustomerMembershipReadRequest" }, "CustomerMembershipsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "ids": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "membership_categories": { "type": "array", "items": { "type": "integer" } }, "payment_processors": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } }, "has_expiration_date": { "type": "boolean" }, "has_active_hold": { "type": "boolean" }, "has_custom_limits": { "type": "boolean" }, "is_first_membership": { "type": "boolean" }, "start_date_lte": { "type": "string", "format": "date" }, "start_date_gte": { "type": "string", "format": "date" }, "start_date_timeframe": { "type": "string" }, "expiration_date_lte": { "type": "string", "format": "date" }, "expiration_date_gte": { "type": "string", "format": "date" }, "expiration_date_timeframe": { "type": "string" }, "renewal_date_lte": { "type": "string", "format": "date" }, "renewal_date_gte": { "type": "string", "format": "date" }, "renewal_date_timeframe": { "type": "string" }, "downgrade_date_lte": { "type": "string", "format": "date" }, "downgrade_date_gte": { "type": "string", "format": "date" }, "downgrade_date_timeframe": { "type": "string" }, "upgrade_date_lte": { "type": "string", "format": "date" }, "upgrade_date_gte": { "type": "string", "format": "date" }, "upgrade_date_timeframe": { "type": "string" }, "active_hold_start_date_lte": { "type": "string", "format": "date" }, "active_hold_start_date_gte": { "type": "string", "format": "date" }, "active_hold_end_date_lte": { "type": "string", "format": "date" }, "active_hold_end_date_gte": { "type": "string", "format": "date" }, "purchased_at_lte": { "type": "string", "format": "date-time" }, "purchased_at_gte": { "type": "string", "format": "date-time" }, "purchased_at_timeframe": { "type": "string" }, "cancelled_at_lte": { "type": "string", "format": "date-time" }, "cancelled_at_gte": { "type": "string", "format": "date-time" }, "cancelled_at_timeframe": { "type": "string" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "status": { "type": "array", "items": { "enum": [ "active", "hold", "cancelled", "completed", "upgraded", "downgraded" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `cancelled` - cancelled\n* `completed` - completed\n* `upgraded` - upgraded\n* `downgraded` - downgraded", "x-spec-enum-id": "9bb0cd1aca3216b8" } }, "types": { "type": "array", "items": { "enum": [ "pack", "prepaid", "recurring" ], "type": "string", "description": "* `pack` - pack\n* `prepaid` - prepaid\n* `recurring` - recurring", "x-spec-enum-id": "758f3720c00cb886" } }, "columns": { "type": "array", "items": { "enum": [ "id", "updated_at", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "other_active", "membership_id", "membership.id", "membership", "membership_name", "membership.name", "type", "status", "payment_processor", "purchase_date", "start_date", "expiration_date", "renewal_date", "cancelled_date", "downgraded_date", "upgraded_date", "has_custom_limits", "is_first_membership", "billed_price", "cancellation_reason", "completed_at" ], "type": "string", "description": "* `id` - id\n* `updated_at` - updated_at\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `other_active` - other_active\n* `membership_id` - membership_id\n* `membership.id` - membership.id\n* `membership` - membership\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `type` - type\n* `status` - status\n* `payment_processor` - payment_processor\n* `purchase_date` - purchase_date\n* `start_date` - start_date\n* `expiration_date` - expiration_date\n* `renewal_date` - renewal_date\n* `cancelled_date` - cancelled_date\n* `downgraded_date` - downgraded_date\n* `upgraded_date` - upgraded_date\n* `has_custom_limits` - has_custom_limits\n* `is_first_membership` - is_first_membership\n* `billed_price` - billed_price\n* `cancellation_reason` - cancellation_reason\n* `completed_at` - completed_at", "x-spec-enum-id": "2ba7d07e38a2b5a3" } } }, "title": "CustomerMembershipsReportParamsRequest" }, "CustomerRead": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time" }, "email": { "type": "string" }, "family_role": { "type": "string", "enum": [ "manager", "child" ], "nullable": true }, "family": { "type": "integer", "nullable": true }, "first_name": { "type": "string", "nullable": true, "maxLength": 256 }, "id": { "type": "integer", "readOnly": true }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "invitation_url": { "type": "string", "nullable": true, "readOnly": true }, "is_lead": { "type": "boolean", "readOnly": true }, "last_name": { "type": "string", "nullable": true, "maxLength": 256 }, "lead_source": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/LeadSource" } ] }, "object": { "enum": [ "customer" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "participating": { "type": "boolean" }, "provider": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProviderRead" } ] }, "referral_code": { "$ref": "#/components/schemas/ReferralCode" }, "visibility": { "type": "string", "enum": [ "visible", "hidden" ] }, "status": { "type": "string", "nullable": true }, "is_status_locked": { "type": "boolean" }, "field_values": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFieldValueRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "is_opted_into_broadcast_messages": { "type": "boolean", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "is_opted_into_sms_marketing": { "type": "boolean", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "sms_account": { "$ref": "#/components/schemas/SMSAccountRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "customer_venue": { "$ref": "#/components/schemas/VenueRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "credit_balance": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "staff_assignments": { "type": "array", "items": { "$ref": "#/components/schemas/StaffAssignmentRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "created_at", "email", "family_role", "id", "image", "invitation_url", "is_lead", "is_status_locked", "object", "participating", "provider", "referral_code", "status", "visibility" ], "title": "CustomerRead" }, "CustomerReadRequest": { "type": "object", "properties": { "created_at": { "type": "string", "format": "date-time" }, "email": { "type": "string", "minLength": 1 }, "family_role": { "type": "string", "enum": [ "manager", "child" ], "nullable": true }, "family": { "type": "integer", "nullable": true }, "first_name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 256 }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "last_name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 256 }, "lead_source": { "type": "integer", "nullable": true }, "participating": { "type": "boolean" }, "provider": { "type": "integer" }, "referral_code": { "$ref": "#/components/schemas/ReferralCodeRequest" }, "visibility": { "type": "string", "enum": [ "visible", "hidden" ] }, "status": { "type": "string", "minLength": 1, "nullable": true }, "is_status_locked": { "type": "boolean" } }, "required": [ "created_at", "email", "family_role", "image", "is_status_locked", "participating", "provider", "referral_code", "status", "visibility" ], "title": "CustomerReadRequest" }, "CustomerReferralSettingsRead": { "type": "object", "properties": { "enabled": { "type": "boolean", "nullable": true }, "referral_reward_type": { "type": "string", "enum": [ "nothing", "account_credit" ] }, "referral_bonus_credit": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "signup_free_membership": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/MembershipRead" } ] } }, "required": [ "referral_bonus_credit", "referral_reward_type", "signup_free_membership" ], "title": "CustomerReferralSettingsRead" }, "CustomerReferralsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "referring_customers": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referring customers. Format as comma-separated customer id values." }, "signup_customers": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referred customers. Format as comma-separated customer id values." }, "memberships": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for referrals with particular signup memberships. Format as comma-separated membership id values." }, "status": { "type": "array", "items": { "enum": [ "pending", "confirmed" ], "type": "string", "description": "* `pending` - pending\n* `confirmed` - confirmed", "x-spec-enum-id": "2194144715280128" }, "title": "Only return rows for referrals with a particular status." }, "signup_date_lte": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or before a particular date." }, "signup_date_gte": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or after a particular date." }, "signup_date_timeframe": { "type": "string", "title": "Only return rows for referrals with a singup date within a particular timeframe. See section on timeframe syntax for formatting." }, "confirmation_date_lte": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or before a particular date." }, "confirmation_date_gte": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or after a particular date." }, "confirmation_date_timeframe": { "type": "string", "title": "Only return rows for referrals that were confirmed within a particular timeframe. See section on timeframe syntax for formatting." }, "updated_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "columns": { "type": "array", "items": { "enum": [ "id", "referring_customer_id", "referring_customer.id", "referring_customer", "referrering_customer_name", "referring_customer.name", "referrering_customer_email", "referring_customer.email", "referring_customer_venue_id", "referring_customer.venue.id", "referring_customer.venue", "referring_customer_venue_name", "referring_customer.venue.name", "signup_customer_id", "signup_customer.id", "signup_customer", "signup_customer_name", "signup_customer.name", "signup_customer_email", "signup_customer.email", "customer_membership_id", "signup_customer_membership.id", "signup_customer_membership", "customer_membership_status", "signup_customer_membership.status", "signup_customer_venue_id", "signup_customer.venue.id", "signup_customer.venue", "signup_customer_venue_name", "signup_customer.venue.name", "membership_id", "signup_customer_membership.membership.id", "signup_customer_membership.membership", "membership_name", "signup_customer_membership.membership.name", "credit_given", "signup_date", "confirmation_date", "updated_at", "status", "membership_use_count", "signup_customer_membership.use_count" ], "type": "string", "description": "* `id` - id\n* `referring_customer_id` - referring_customer_id\n* `referring_customer.id` - referring_customer.id\n* `referring_customer` - referring_customer\n* `referrering_customer_name` - referrering_customer_name\n* `referring_customer.name` - referring_customer.name\n* `referrering_customer_email` - referrering_customer_email\n* `referring_customer.email` - referring_customer.email\n* `referring_customer_venue_id` - referring_customer_venue_id\n* `referring_customer.venue.id` - referring_customer.venue.id\n* `referring_customer.venue` - referring_customer.venue\n* `referring_customer_venue_name` - referring_customer_venue_name\n* `referring_customer.venue.name` - referring_customer.venue.name\n* `signup_customer_id` - signup_customer_id\n* `signup_customer.id` - signup_customer.id\n* `signup_customer` - signup_customer\n* `signup_customer_name` - signup_customer_name\n* `signup_customer.name` - signup_customer.name\n* `signup_customer_email` - signup_customer_email\n* `signup_customer.email` - signup_customer.email\n* `customer_membership_id` - customer_membership_id\n* `signup_customer_membership.id` - signup_customer_membership.id\n* `signup_customer_membership` - signup_customer_membership\n* `customer_membership_status` - customer_membership_status\n* `signup_customer_membership.status` - signup_customer_membership.status\n* `signup_customer_venue_id` - signup_customer_venue_id\n* `signup_customer.venue.id` - signup_customer.venue.id\n* `signup_customer.venue` - signup_customer.venue\n* `signup_customer_venue_name` - signup_customer_venue_name\n* `signup_customer.venue.name` - signup_customer.venue.name\n* `membership_id` - membership_id\n* `signup_customer_membership.membership.id` - signup_customer_membership.membership.id\n* `signup_customer_membership.membership` - signup_customer_membership.membership\n* `membership_name` - membership_name\n* `signup_customer_membership.membership.name` - signup_customer_membership.membership.name\n* `credit_given` - credit_given\n* `signup_date` - signup_date\n* `confirmation_date` - confirmation_date\n* `updated_at` - updated_at\n* `status` - status\n* `membership_use_count` - membership_use_count\n* `signup_customer_membership.use_count` - signup_customer_membership.use_count", "x-spec-enum-id": "8431681923a85a3a" }, "title": "Only return particular columns. Format as comma-separated column names." } }, "title": "CustomerReferralsReportParamsRequest" }, "CustomerRegistrationBlockRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "customer": { "type": "integer" }, "is_active": { "type": "boolean" }, "created_at": { "type": "string", "format": "date-time" }, "deactivated_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "customer", "id", "is_active" ], "title": "CustomerRegistrationBlockRead" }, "CustomerRegistrationParamsRequest": { "type": "object", "properties": { "email": { "type": "string", "format": "email", "minLength": 1 }, "password": { "type": "string", "minLength": 1 }, "first_name": { "type": "string", "minLength": 1, "maxLength": 255 }, "last_name": { "type": "string", "minLength": 1, "maxLength": 255 }, "venue": { "type": "integer" }, "referral_code": { "type": "string", "nullable": true, "minLength": 1 }, "field_values": { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" }, "direct_auth_key": { "type": "string", "minLength": 1 }, "verification_key": { "type": "string", "minLength": 1, "maxLength": 32 } }, "required": [ "direct_auth_key", "email", "first_name", "last_name", "password" ], "title": "CustomerRegistrationParamsRequest" }, "CustomerRegistrationRead": { "type": "object", "properties": { "customer": { "$ref": "#/components/schemas/CustomerRead" }, "credentials": { "$ref": "#/components/schemas/GetAccessTokenSuccess" } }, "required": [ "credentials", "customer" ], "title": "CustomerRegistrationRead" }, "CustomerSegmentCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "segment_type": { "enum": [ 1, 2 ], "type": "integer", "description": "* `1` - Static\n* `2` - Dynamic", "x-spec-enum-id": "f9c41c175b181174" }, "query": { "$ref": "#/components/schemas/FilterCriteriaRequest" } }, "required": [ "name", "query", "segment_type" ], "title": "CustomerSegmentCreateRequest" }, "CustomerSegmentRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "customer_segment" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 255 }, "segment_type": { "enum": [ 1, 2 ], "type": "integer", "description": "* `1` - Static\n* `2` - Dynamic", "x-spec-enum-id": "f9c41c175b181174" }, "query": { "$ref": "#/components/schemas/FilterCriteria" }, "created_at": { "type": "string", "format": "date-time" }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "id", "name", "object", "query", "segment_type", "updated_at" ], "title": "CustomerSegmentRead" }, "CustomerSegmentUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 } }, "required": [ "name" ], "title": "CustomerSegmentUpdateRequest" }, "CustomersReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "segment": { "type": "integer", "description": "Apply filters from a saved customer segment by ID. The segment must belong to the authenticated provider. Segment filters are combined with any additional ad-hoc filters in this request." }, "columns": { "type": "array", "items": { "enum": [ "id", "full_name", "first_name", "last_name", "email", "created_at", "deleted_at", "is_active", "date_of_birth", "age", "phone_number", "address", "days_until_birthday", "gender", "is_claimed", "is_new", "is_slipping_away", "registration_blocked", "has_failed_payments", "has_retry_payments", "family_id", "family.id", "family", "family_name", "family.name", "family_role", "family.role", "family_managers", "family.managers", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "referral_code", "thumbnail_url", "active_customer_memberships", "inactive_customer_memberships", "on_hold_customer_memberships", "referring_member_id", "referring_member.id", "referring_member", "referrering_member_name", "referring_member.name", "account_credit_balance", "total_spend_amount", "last_payment_at", "last_payment_amount", "last_broadcast_at", "registered_and_attended_count", "registrations_count", "attendances_count", "late_cancels_count", "no_shows_count", "latest_registration", "next_registration_starts_at", "next_registration.starts_at", "next_registration", "next_registration_id", "next_registration.id", "next_registration_type", "next_registration.type", "last_registration_starts_at", "last_registration.starts_at", "last_registration", "last_registration_id", "last_registration.id", "last_registration_type", "last_registration.type", "emergency_contact_name", "emergency_contact.name", "emergency_contact", "emergency_contact_relationship", "emergency_contact.relationship", "emergency_contact_phone", "emergency_contact.phone", "lead_source", "lead_source.name", "is_lead", "status_slug", "status.slug", "status", "issues" ], "type": "string", "description": "* `id` - id\n* `full_name` - full_name\n* `first_name` - first_name\n* `last_name` - last_name\n* `email` - email\n* `created_at` - created_at\n* `deleted_at` - deleted_at\n* `is_active` - is_active\n* `date_of_birth` - date_of_birth\n* `age` - age\n* `phone_number` - phone_number\n* `address` - address\n* `days_until_birthday` - days_until_birthday\n* `gender` - gender\n* `is_claimed` - is_claimed\n* `is_new` - is_new\n* `is_slipping_away` - is_slipping_away\n* `registration_blocked` - registration_blocked\n* `has_failed_payments` - has_failed_payments\n* `has_retry_payments` - has_retry_payments\n* `family_id` - family_id\n* `family.id` - family.id\n* `family` - family\n* `family_name` - family_name\n* `family.name` - family.name\n* `family_role` - family_role\n* `family.role` - family.role\n* `family_managers` - family_managers\n* `family.managers` - family.managers\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `referral_code` - referral_code\n* `thumbnail_url` - thumbnail_url\n* `active_customer_memberships` - active_customer_memberships\n* `inactive_customer_memberships` - inactive_customer_memberships\n* `on_hold_customer_memberships` - on_hold_customer_memberships\n* `referring_member_id` - referring_member_id\n* `referring_member.id` - referring_member.id\n* `referring_member` - referring_member\n* `referrering_member_name` - referrering_member_name\n* `referring_member.name` - referring_member.name\n* `account_credit_balance` - account_credit_balance\n* `total_spend_amount` - total_spend_amount\n* `last_payment_at` - last_payment_at\n* `last_payment_amount` - last_payment_amount\n* `last_broadcast_at` - last_broadcast_at\n* `registered_and_attended_count` - registered_and_attended_count\n* `registrations_count` - registrations_count\n* `attendances_count` - attendances_count\n* `late_cancels_count` - late_cancels_count\n* `no_shows_count` - no_shows_count\n* `latest_registration` - latest_registration\n* `next_registration_starts_at` - next_registration_starts_at\n* `next_registration.starts_at` - next_registration.starts_at\n* `next_registration` - next_registration\n* `next_registration_id` - next_registration_id\n* `next_registration.id` - next_registration.id\n* `next_registration_type` - next_registration_type\n* `next_registration.type` - next_registration.type\n* `last_registration_starts_at` - last_registration_starts_at\n* `last_registration.starts_at` - last_registration.starts_at\n* `last_registration` - last_registration\n* `last_registration_id` - last_registration_id\n* `last_registration.id` - last_registration.id\n* `last_registration_type` - last_registration_type\n* `last_registration.type` - last_registration.type\n* `emergency_contact_name` - emergency_contact_name\n* `emergency_contact.name` - emergency_contact.name\n* `emergency_contact` - emergency_contact\n* `emergency_contact_relationship` - emergency_contact_relationship\n* `emergency_contact.relationship` - emergency_contact.relationship\n* `emergency_contact_phone` - emergency_contact_phone\n* `emergency_contact.phone` - emergency_contact.phone\n* `lead_source` - lead_source\n* `lead_source.name` - lead_source.name\n* `is_lead` - is_lead\n* `status_slug` - status_slug\n* `status.slug` - status.slug\n* `status` - status\n* `issues` - issues", "x-spec-enum-id": "6ec3170453cd440a" }, "description": "Specify which columns to include." }, "query": { "type": "string", "minLength": 1, "description": "Filter by a free-text string. Checks the `email` and name fields." }, "include_deleted": { "type": "boolean", "default": false, "description": "Whether to include deleted customers in the report." }, "created_at_lte": { "type": "string", "format": "date-time", "description": "Only return rows for customers that were created on or before a particular timestamp." }, "created_at_gte": { "type": "string", "format": "date-time", "description": "Only return rows for customers that were created on or after a particular timestamp." }, "latest_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers who latest-registered event occurs on or before this timestamp." }, "latest_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers who latest-registered event occurs on or after this timestamp." }, "next_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose next registration starts on or before this timestamp." }, "next_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose next registration starts on or after this timestamp." }, "last_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose last registration starts on or before this timestamp." }, "last_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose last registration starts on or after this timestamp." }, "date_of_birth_lte": { "type": "string", "format": "date", "description": "Only return rows for customers with a date of birth on or before this date." }, "date_of_birth_gte": { "type": "string", "format": "date", "description": "Only return rows for customers with a date of birth on or after this date." }, "created_at_timeframe": { "type": "string", "description": "Only return rows for customers that were created within a particular timeframe. See section on timeframe syntax for formatting." }, "ids": { "type": "array", "items": { "type": "integer" }, "description": "Only return rows for customers with particular unique identifiers. Format as comma-separated `id` values." }, "is_new": { "type": "boolean", "description": "Return rows based on whether customers are new or not." }, "is_claimed": { "type": "boolean", "nullable": true, "description": "Return rows based on whether customers are claimed or not. Pass `null` to return unclaimed family members, whose accounts cannot be claimed; `false` excludes them and returns only accounts that can still be claimed." }, "is_active": { "type": "boolean", "description": "Return rows based on whether customers are active or not." }, "is_slipping_away": { "type": "boolean", "description": "Return rows based on whether customers are slipping away or not." }, "is_any": { "type": "array", "items": { "enum": [ "new", "claimed", "slipping_away", "inactive", "active", "registration_blocked", "lead" ], "type": "string", "description": "* `new` - new\n* `claimed` - claimed\n* `slipping_away` - slipping_away\n* `inactive` - inactive\n* `active` - active\n* `registration_blocked` - registration_blocked\n* `lead` - lead", "x-spec-enum-id": "18aceac25139e991" }, "description": "Only include customers who have certain traits." }, "registration_blocked": { "type": "boolean" }, "has_account_credit": { "type": "boolean", "description": "Return rows based on whether customers have account credit or not." }, "total_spend_amount_gte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with total spend amount greater than or equal to this value." }, "total_spend_amount_lte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with total spend amount less than or equal to this value." }, "last_payment_amount_gte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with last payment amount greater than or equal to this value." }, "last_payment_amount_lte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with last payment amount less than or equal to this value." }, "last_broadcast_at_gte": { "type": "string", "format": "date-time", "description": "Only return customers last broadcast on or after this timestamp." }, "last_broadcast_at_lte": { "type": "string", "format": "date-time", "description": "Only return customers last broadcast on or before this timestamp." }, "registered_and_attended_count_gte": { "type": "integer", "description": "Only return customers with total registrations greater than or equal to this value." }, "registered_and_attended_count_lte": { "type": "integer", "description": "Only return customers with total registrations less than or equal to this value." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Only return customers who have particular memberships that are active. Format as comma-separated membership `id` values." }, "has_active_membership": { "type": "boolean", "description": "Return rows based on whether customers have an active membership or not." }, "has_open_issues": { "type": "boolean", "description": "Return rows based on whether customers have open issues or not." }, "has_failed_payments": { "type": "boolean", "description": "Return rows based on whether customers have failed payments or not." }, "assigned_staff": { "type": "array", "items": { "type": "integer" }, "description": "Only return customers assigned to specific staff members. Format as comma-separated staff (ProviderUser) `id` values." }, "status": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Filter customers by status. Format as comma-separated status slugs. Pass `null` to filter for customers without a status." }, "lead_source": { "type": "array", "items": { "type": "integer" }, "description": "Filter customers by lead source IDs. Format as comma-separated lead source `id` values." } }, "title": "CustomersReportParamsRequest" }, "DefaultRegistrationSettings": { "type": "object", "properties": { "registrations_open_interval": { "type": "string", "readOnly": true }, "registrations_close_interval": { "type": "string", "readOnly": true }, "cancellation_notice_interval": { "type": "string", "readOnly": true } }, "required": [ "cancellation_notice_interval", "registrations_close_interval", "registrations_open_interval" ], "title": "DefaultRegistrationSettings" }, "DefaultsResponse": { "type": "object", "properties": { "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/StatusCondition" } }, "condition_match_type": { "enum": [ "all", "any", null ], "type": "string", "x-spec-enum-id": "0a55c3153ef51701", "nullable": true, "description": "Default condition match type for this status; null if no default is defined.\n\n* `all` - All\n* `any` - Any" }, "enabled": { "type": "boolean", "nullable": true, "description": "Default enabled flag for this status; null if no default is defined." } }, "required": [ "condition_match_type", "conditions", "enabled" ], "title": "DefaultsResponse" }, "DiscountApplicableItemWriteFieldRequest": { "type": "object", "properties": { "id": { "type": "integer" }, "type": { "enum": [ "store_product", "offering_type", "membership", "event", "course" ], "type": "string", "description": "* `store_product` - store_product\n* `offering_type` - offering_type\n* `membership` - membership\n* `event` - event\n* `course` - course", "x-spec-enum-id": "42e58d94b3ff71fe" } }, "required": [ "id", "type" ], "title": "DiscountApplicableItemWriteFieldRequest" }, "DiscountCodeApplicabilityRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "discount_code_applicability" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "allow_use": { "type": "boolean" }, "item": { "type": "string" }, "discount_code": { "type": "integer" } }, "required": [ "discount_code", "id", "item", "object" ], "title": "DiscountCodeApplicabilityRead" }, "DiscountCodeApplicabilityWriteRequest": { "type": "object", "properties": { "discount_code": { "type": "integer" }, "allow_use": { "type": "boolean" }, "item": { "$ref": "#/components/schemas/DiscountApplicableItemWriteFieldRequest" } }, "required": [ "discount_code", "item" ], "title": "DiscountCodeApplicabilityWriteRequest" }, "DiscountCodeCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "allowed_uses": { "type": "integer", "nullable": true }, "allowed_uses_per_customer": { "type": "integer", "nullable": true }, "discount_type": { "type": "string", "enum": [ "flat", "percent" ] }, "discount_amount": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,5}(?:\\.\\d{0,2})?$" }, "usable_start_date": { "type": "string", "format": "date", "nullable": true }, "usable_end_date": { "type": "string", "format": "date", "nullable": true }, "usable_purchase_types": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "store", "joining_fee" ] } }, "usable_by_new_customers_only": { "type": "boolean" }, "usable_by_default_for_purchase_types": { "type": "boolean" }, "applicable_billing_cycles": { "type": "integer" }, "code": { "type": "string", "minLength": 1, "maxLength": 20 } }, "required": [ "allowed_uses", "allowed_uses_per_customer", "applicable_billing_cycles", "code", "discount_amount", "discount_type", "name", "usable_by_default_for_purchase_types", "usable_by_new_customers_only", "usable_purchase_types" ], "title": "DiscountCodeCreateRequest" }, "DiscountCodeGroupRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 100 } }, "required": [ "id", "name" ], "title": "DiscountCodeGroupRead" }, "DiscountCodeGroupReadRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 } }, "required": [ "name" ], "title": "DiscountCodeGroupReadRequest" }, "DiscountCodePreviewCode": { "type": "object", "properties": { "id": { "type": "integer" }, "code": { "type": "string" }, "name": { "type": "string" } }, "required": [ "code", "id", "name" ], "title": "DiscountCodePreviewCode" }, "DiscountCodePreviewRead": { "type": "object", "properties": { "valid": { "type": "boolean" }, "reason": { "type": "string", "nullable": true }, "original_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "adjusted_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "discount_value": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "discount_code": { "allOf": [ { "$ref": "#/components/schemas/DiscountCodePreviewCode" } ], "nullable": true } }, "required": [ "adjusted_total", "discount_code", "discount_value", "original_total", "reason", "valid" ], "title": "DiscountCodePreviewRead" }, "DiscountCodePreviewWriteRequest": { "type": "object", "properties": { "item": { "$ref": "#/components/schemas/UniversalCheckoutItemRequest" }, "discount_code": { "type": "string", "minLength": 1 }, "customer": { "type": "integer", "nullable": true } }, "required": [ "discount_code", "item" ], "title": "DiscountCodePreviewWriteRequest" }, "DiscountCodeRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "discount_code" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 100 }, "code": { "type": "string", "maxLength": 20 }, "status": { "type": "string", "enum": [ "inactive", "active" ], "default": "active" }, "uses": { "type": "integer" }, "allowed_uses": { "type": "integer" }, "allowed_uses_per_customer": { "type": "integer" }, "discount_type": { "type": "string", "enum": [ "flat", "percent" ] }, "discount_amount": { "oneOf": [ { "type": "object", "additionalProperties": {} }, { "type": "number", "format": "double" } ], "readOnly": true }, "usable_start_date": { "type": "string", "format": "date" }, "usable_end_date": { "type": "string", "format": "date" }, "usable_purchase_types": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "store", "joining_fee" ] } }, "usable_by_new_customers_only": { "type": "boolean" }, "usable_by_default_for_purchase_types": { "type": "boolean" }, "applicable_billing_cycles": { "type": "integer" }, "group": { "$ref": "#/components/schemas/DiscountCodeGroupRead" } }, "required": [ "allowed_uses", "allowed_uses_per_customer", "applicable_billing_cycles", "code", "discount_amount", "discount_type", "group", "id", "name", "object", "usable_by_default_for_purchase_types", "usable_by_new_customers_only", "usable_end_date", "usable_purchase_types", "usable_start_date", "uses" ], "title": "DiscountCodeRead" }, "DiscountCodeReadRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "code": { "type": "string", "minLength": 1, "maxLength": 20 }, "status": { "type": "string", "enum": [ "inactive", "active" ], "default": "active" }, "uses": { "type": "integer" }, "allowed_uses": { "type": "integer" }, "allowed_uses_per_customer": { "type": "integer" }, "discount_type": { "type": "string", "enum": [ "flat", "percent" ] }, "usable_start_date": { "type": "string", "format": "date" }, "usable_end_date": { "type": "string", "format": "date" }, "usable_purchase_types": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "store", "joining_fee" ] } }, "usable_by_new_customers_only": { "type": "boolean" }, "usable_by_default_for_purchase_types": { "type": "boolean" }, "applicable_billing_cycles": { "type": "integer" }, "group": { "$ref": "#/components/schemas/DiscountCodeGroupReadRequest" } }, "required": [ "allowed_uses", "allowed_uses_per_customer", "applicable_billing_cycles", "code", "discount_type", "group", "name", "usable_by_default_for_purchase_types", "usable_by_new_customers_only", "usable_end_date", "usable_purchase_types", "usable_start_date", "uses" ], "title": "DiscountCodeReadRequest" }, "DiscountCodeUsesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "discount_code_id", "discount_code.id", "discount_code", "discount_code_name", "discount_code.name", "discount_code_code", "discount_code.code", "group_id", "group.id", "group", "group_name", "group.name", "use_type", "used_for", "used_at" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `discount_code_id` - discount_code_id\n* `discount_code.id` - discount_code.id\n* `discount_code` - discount_code\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code_code` - discount_code_code\n* `discount_code.code` - discount_code.code\n* `group_id` - group_id\n* `group.id` - group.id\n* `group` - group\n* `group_name` - group_name\n* `group.name` - group.name\n* `use_type` - use_type\n* `used_for` - used_for\n* `used_at` - used_at", "x-spec-enum-id": "0a65fa88d13ffefd" } }, "discount_codes": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "groups": { "type": "array", "items": { "type": "integer" } }, "use_types": { "type": "array", "items": { "enum": [ "class", "course", "membership", "store_order" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `membership` - membership\n* `store_order` - store_order", "x-spec-enum-id": "aea60e1efb622221" } }, "used_at_lte": { "type": "string", "format": "date-time" }, "used_at_gte": { "type": "string", "format": "date-time" }, "used_at_timeframe": { "type": "string" } }, "title": "DiscountCodeUsesParamsRequest" }, "DiscountUpdateUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "allowed_uses": { "type": "integer", "nullable": true }, "allowed_uses_per_customer": { "type": "integer", "nullable": true }, "discount_type": { "type": "string", "enum": [ "flat", "percent" ] }, "discount_amount": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,5}(?:\\.\\d{0,2})?$" }, "usable_start_date": { "type": "string", "format": "date", "nullable": true }, "usable_end_date": { "type": "string", "format": "date", "nullable": true }, "usable_purchase_types": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "store", "joining_fee" ] } }, "usable_by_new_customers_only": { "type": "boolean" }, "usable_by_default_for_purchase_types": { "type": "boolean" }, "applicable_billing_cycles": { "type": "integer" }, "status": { "type": "string", "enum": [ "inactive", "active" ], "default": "active" } }, "required": [ "allowed_uses", "allowed_uses_per_customer", "applicable_billing_cycles", "discount_amount", "discount_type", "name", "usable_by_default_for_purchase_types", "usable_by_new_customers_only", "usable_purchase_types" ], "title": "DiscountUpdateUpdateRequest" }, "EmailQuota": { "type": "object", "properties": { "limit": { "type": "integer" }, "used": { "type": "integer" }, "remaining": { "type": "integer" }, "billing_period_start": { "type": "string", "format": "date" }, "billing_period_end": { "type": "string", "format": "date", "nullable": true }, "resets_at": { "type": "string", "format": "date" } }, "required": [ "billing_period_end", "billing_period_start", "limit", "remaining", "resets_at", "used" ], "title": "EmailQuota" }, "EmailSettingsRead": { "type": "object", "properties": { "base_template": { "type": "string" } }, "required": [ "base_template" ], "title": "EmailSettingsRead" }, "EmailTemplate": { "type": "object", "properties": { "subject": { "type": "string" }, "body": { "type": "string" } }, "required": [ "body", "subject" ], "title": "EmailTemplate" }, "EmailTemplateRequest": { "type": "object", "properties": { "subject": { "type": "string", "minLength": 1 }, "body": { "type": "string", "minLength": 1 } }, "required": [ "body", "subject" ], "title": "EmailTemplateRequest" }, "EmbedBootstrap": { "type": "object", "properties": { "available": { "type": "boolean", "description": "Whether this provider's embed widgets are switched on. When false, the widget shows a link to `customer_site_url` instead." }, "customer_site_url": { "type": "string", "description": "The provider's customer site schedule, used as a fallback link." }, "session_data": { "type": "object", "additionalProperties": {}, "nullable": true, "description": "Provider-only bootstrap data in the customer SPA's shape. Null when `available` is false." } }, "required": [ "available", "customer_site_url", "session_data" ], "title": "EmbedBootstrap" }, "EmbedWidgetCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "type": { "type": "string", "enum": [ "schedule", "memberships", "appointments", "store", "lead_form", "courses" ] }, "config": { "$ref": "#/components/schemas/WidgetConfigRequest" } }, "required": [ "name", "type" ], "title": "EmbedWidgetCreateRequest" }, "EmbedWidgetRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "embed_widget" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 100 }, "type": { "type": "string", "enum": [ "schedule", "memberships", "appointments", "store", "lead_form", "courses" ] }, "config": { "description": "The widget's settings. Its shape depends on `type`." }, "schema_version": { "type": "integer", "maximum": 65535, "minimum": 0 }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "config", "created_at", "id", "name", "object", "type", "updated_at" ], "title": "EmbedWidgetRead" }, "EmbedWidgetUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "config": { "$ref": "#/components/schemas/WidgetConfigRequest" } }, "required": [ "config", "name" ], "title": "EmbedWidgetUpdateRequest" }, "EventBulkCancelParamsRequest": { "type": "object", "properties": { "events": { "type": "object", "additionalProperties": {}, "description": "A query defining which events to include. The same filter parameters available on the `/events` listing endpoint can be used." } }, "required": [ "events" ], "title": "EventBulkCancelParamsRequest" }, "EventBulkUncancelParamsRequest": { "type": "object", "properties": { "events": { "type": "object", "additionalProperties": {}, "description": "A query defining which events to include. The same filter parameters available on the `/events` listing endpoint can be used." } }, "required": [ "events" ], "title": "EventBulkUncancelParamsRequest" }, "EventCreateRequest": { "oneOf": [ { "type": "object", "properties": { "starts_at": { "type": "string", "format": "date-time", "description": "When the class starts. If no timezone offset is included, it will default to the venue's timezone." }, "ends_at": { "type": "string", "format": "date-time", "description": "When the class ends. If no timezone offset is included, it will default to the venue's timezone." }, "name": { "type": "string", "minLength": 1 }, "venue": { "type": "integer" }, "offering_type": { "type": "integer" }, "instructors": { "type": "array", "items": { "type": "integer" }, "minItems": 1 }, "category": { "type": "integer", "nullable": true, "description": "Customize the class category. If not set, the offering type's category will be used." }, "max_occupancy": { "type": "integer", "minimum": 1, "nullable": true, "description": "The maximum number of people that can register for this class. Use `null` to indicate no limit." }, "description": { "type": "string", "nullable": true, "minLength": 1, "description": "Customize the description displayed to customers. If not set, the offering type's description will be displayed." }, "registration_timelines": { "type": "array", "items": { "type": "integer" }, "nullable": true, "description": "Customize the registration timelines associated with the class. If not set, the offering type's registration timelines will be used." }, "calendar_opens_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Customize when the class is opened (revealed) on the calendar to customers. Overrides any setting on the registration timelines." }, "external_id": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 50 } }, "required": [ "ends_at", "instructors", "name", "offering_type", "starts_at", "venue" ], "title": "ClassCreate" } ], "title": "EventCreateRequest" }, "EventJoinWaitlistRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "EventJoinWaitlistRequest" }, "EventPushScheduleRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "push_class_reminder" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "minutes": { "type": "integer", "readOnly": true, "description": "How long before or after the start of the class the reminder sends, in minutes. From 1 to 10080 (7 days)." }, "timing": { "type": "string", "enum": [ "before", "after" ], "readOnly": true, "description": "Whether the reminder sends before or after the start of the class." }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "updated_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true } }, "required": [ "created_at", "id", "minutes", "object", "timing", "updated_at" ], "title": "EventPushScheduleRead" }, "EventPushScheduleWriteRequest": { "type": "object", "properties": { "minutes": { "type": "integer", "maximum": 10080, "minimum": 1, "description": "How long before or after the start of the class the reminder sends, in minutes. From 1 to 10080 (7 days)." }, "timing": { "type": "string", "enum": [ "before", "after" ], "description": "Whether the reminder sends before or after the start of the class." } }, "required": [ "minutes", "timing" ], "title": "EventPushScheduleWriteRequest" }, "EventRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "event" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 200 }, "starts_at": { "type": "string", "format": "date-time", "readOnly": true }, "ends_at": { "type": "string", "format": "date-time", "readOnly": true }, "status": { "type": "string", "enum": [ "active", "cancelled" ] }, "max_occupancy": { "type": "integer", "nullable": true, "description": "None and 0 both represent unlimited occupancy.", "readOnly": true }, "waitlist_max_override": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "attending_count": { "type": "integer", "description": "The number of customers who are currently registered. Note: this field is automatically omitted if the business has chosen to hide attendee counts and the request is made in customer mode" }, "waiting_count": { "type": "integer" }, "is_appointment": { "type": "string", "readOnly": true }, "small_session_attendances": { "oneOf": [ { "type": "array", "items": { "type": "integer" }, "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "AttendanceRead[]", "items": { "$ref": "#/components/schemas/AttendanceRead" } } ] }, "venue": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "venue_room": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRoom" } ] }, "registrations_open_at": { "type": "string", "format": "date-time", "readOnly": true }, "registrations_close_at": { "type": "string", "format": "date-time", "readOnly": true }, "late_cancel_deadline": { "type": "string", "format": "date-time", "readOnly": true }, "instructors": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Hyperlink to collection of instructors for this event. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "Instructor[]", "items": { "$ref": "#/components/schemas/Instructor" } } ] }, "offering_type": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeRead" } ] }, "customer_url": { "type": "string", "readOnly": true }, "provider_url": { "type": "string", "readOnly": true }, "description": { "type": "string" }, "schedule_type": { "type": "string" }, "is_full": { "type": "boolean", "readOnly": true, "description": "Indicates whether the number of current registrations has reached the event's attendance limit. " }, "category": { "$ref": "#/components/schemas/OfferingTypeCategoryRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "active_registration_status": { "$ref": "#/components/schemas/ActiveRegistrationStatus", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "overriden_registration_timelines": { "type": "array", "items": { "$ref": "#/components/schemas/RegistrationTimelineRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "attending_count", "customer_url", "description", "ends_at", "id", "instructors", "is_appointment", "is_full", "late_cancel_deadline", "max_occupancy", "name", "object", "offering_type", "provider_url", "registrations_close_at", "registrations_open_at", "schedule_type", "small_session_attendances", "starts_at", "status", "waiting_count" ], "title": "EventRead" }, "EventRegisterParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "customer_membership": { "type": "integer" }, "comped": { "type": "boolean", "default": false, "description": "Whether this registration is comped or not. Only available in provider mode." } }, "required": [ "customer" ], "title": "EventRegisterParamsRequest" }, "EventRegisterSuccess": { "type": "object", "properties": { "attendance": { "type": "integer" } }, "required": [ "attendance" ], "title": "EventRegisterSuccess" }, "EventUpdateRequest": { "oneOf": [ { "type": "object", "properties": { "starts_at": { "type": "string", "format": "date-time", "description": "When the class starts. If no timezone offset is included, it will default to the venue's timezone." }, "ends_at": { "type": "string", "format": "date-time", "description": "When the class ends. If no timezone offset is included, it will default to the venue's timezone." }, "name": { "type": "string", "minLength": 1 }, "venue": { "type": "integer" }, "instructors": { "type": "array", "items": { "type": "integer" }, "minItems": 1 }, "category": { "type": "integer", "nullable": true, "description": "Customize the class category. If not set, the offering type's category will be used." }, "max_occupancy": { "type": "integer", "minimum": 1, "nullable": true, "description": "The maximum number of people that can register for this class. Use `null` to indicate no limit." }, "description": { "type": "string", "nullable": true, "minLength": 1, "description": "Customize the description displayed to customers. If not set, the offering type's description will be displayed." }, "registration_timelines": { "type": "array", "items": { "type": "integer" }, "nullable": true, "description": "Customize the registration timelines associated with the class. If not set, the offering type's registration timelines will be used." }, "calendar_opens_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Customize when the class is opened (revealed) on the calendar to customers. Overrides any setting on the registration timelines." }, "notify": { "allOf": [ { "$ref": "#/components/schemas/NotifyOptionsRequest" } ], "nullable": true } }, "required": [ "ends_at", "instructors", "name", "starts_at", "venue" ], "title": "ClassUpdate" } ], "title": "EventUpdateRequest" }, "FamilyInviteCreateRequest": { "type": "object", "properties": { "first_name": { "type": "string", "minLength": 1, "maxLength": 256 }, "last_name": { "type": "string", "minLength": 1, "maxLength": 256 }, "email": { "type": "string", "format": "email", "minLength": 1, "maxLength": 254 } }, "required": [ "email", "first_name", "last_name" ], "title": "FamilyInviteCreateRequest" }, "FamilyInviteRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "family_invite" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "first_name": { "type": "string", "maxLength": 256 }, "last_name": { "type": "string", "maxLength": 256 }, "email": { "type": "string", "format": "email", "maxLength": 254 }, "claim_url": { "type": "string", "readOnly": true }, "claimed_by": { "type": "integer", "nullable": true } }, "required": [ "claim_url", "email", "first_name", "id", "last_name", "object" ], "title": "FamilyInviteRead" }, "FeatureFlagRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "feature_flag" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "short_name": { "type": "string", "readOnly": true }, "name": { "type": "string", "readOnly": true }, "strategy": { "type": "string", "enum": [ "always_off", "always_on", "opt_in", "opt_out" ] }, "scope": { "type": "string", "enum": [ "provider", "user" ] } }, "required": [ "id", "name", "object", "scope", "short_name", "strategy" ], "title": "FeatureFlagRead" }, "FeatureFlagStatusRead": { "type": "object", "properties": { "active": { "type": "boolean", "readOnly": true }, "detail": { "type": "string", "readOnly": true } }, "required": [ "active", "detail" ], "title": "FeatureFlagStatusRead" }, "FeeLineItem": { "type": "object", "properties": { "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "purchase_fee": { "$ref": "#/components/schemas/PurchaseFeeRead" } }, "required": [ "amount", "purchase_fee" ], "title": "FeeLineItem" }, "FeesBulkCalculatorParamsRequest": { "type": "object", "properties": { "items": { "type": "array", "items": { "$ref": "#/components/schemas/FeesCalculatorParamsRequest" }, "maxItems": 100, "minItems": 1 } }, "required": [ "items" ], "title": "FeesBulkCalculatorParamsRequest" }, "FeesBulkCalculatorResponse": { "type": "object", "properties": { "results": { "type": "array", "items": { "$ref": "#/components/schemas/CalculatedFee" } } }, "required": [ "results" ], "title": "FeesBulkCalculatorResponse" }, "FeesCalculatorParamsRequest": { "type": "object", "properties": { "pre_tax_price": { "type": "string", "example": "10.99" }, "post_tax_price": { "type": "string", "example": "10.99" }, "purchase_type": { "enum": [ "event", "course", "membership", "recurring_membership", "store", "gift_card", "joining_fee" ], "type": "string", "description": "* `event` - event\n* `course` - course\n* `membership` - membership\n* `recurring_membership` - recurring_membership\n* `store` - store\n* `gift_card` - gift_card\n* `joining_fee` - joining_fee", "x-spec-enum-id": "bad75df9406fbc57" } }, "required": [ "purchase_type" ], "title": "FeesCalculatorParamsRequest" }, "FieldChoice": { "type": "object", "properties": { "value": { "type": "string" }, "label": { "type": "string", "readOnly": true }, "order": { "type": "integer" }, "created_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "created_at", "label", "order", "value" ], "title": "FieldChoice" }, "FieldChoiceRequest": { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 }, "order": { "type": "integer" } }, "required": [ "order", "value" ], "title": "FieldChoiceRequest" }, "FilterCriteria": { "type": "object", "properties": { "query": { "type": "string", "description": "Free-text search by customer name, email, or indexed phone number." }, "ids": { "type": "array", "items": { "type": "integer" }, "description": "Filter by customer IDs." }, "status": { "type": "array", "items": { "type": "string" }, "description": "Filter by CRM lifecycle status slugs. Pass 'null' to include customers without a status." }, "lead_source": { "type": "array", "items": { "type": "integer" }, "description": "Filter by lead source IDs." }, "is_claimed": { "type": "boolean", "nullable": true, "description": "Filter by whether a customer's account is claimed. Pass null for unclaimed family members." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Filter by active membership IDs." }, "has_active_membership": { "type": "boolean", "description": "Filter by whether the customer has an active membership." }, "has_open_issues": { "type": "boolean", "description": "Filter by whether a customer has open issues." }, "assigned_staff": { "type": "array", "items": { "type": "integer" }, "description": "Filter by assigned staff IDs." }, "created_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers created on or before this date." }, "created_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers created on or after this date." }, "date_of_birth_lte": { "type": "string", "format": "date", "description": "Filter customers with date of birth on or before this date." }, "date_of_birth_gte": { "type": "string", "format": "date", "description": "Filter customers with date of birth on or after this date." }, "registration_blocked": { "type": "boolean", "description": "Filter by whether the customer is blocked from registering." }, "has_account_credit": { "type": "boolean", "description": "Filter by whether the customer has a positive account credit balance." }, "has_failed_payments": { "type": "boolean", "description": "Filter by whether the customer has failed payments." }, "total_spend_amount_gte": { "type": "number", "format": "double", "description": "Filter customers whose total spend is greater than or equal to this amount." }, "total_spend_amount_lte": { "type": "number", "format": "double", "description": "Filter customers whose total spend is less than or equal to this amount." }, "last_payment_amount_gte": { "type": "number", "format": "double", "description": "Filter customers whose last payment amount is greater than or equal to this amount." }, "last_payment_amount_lte": { "type": "number", "format": "double", "description": "Filter customers whose last payment amount is less than or equal to this amount." }, "registered_and_attended_count_gte": { "type": "integer", "description": "Filter customers who have registered or attended at least this many events." }, "registered_and_attended_count_lte": { "type": "integer", "description": "Filter customers who have registered or attended at most this many events." }, "next_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose next upcoming registration starts at or after this datetime." }, "next_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose next upcoming registration starts at or before this datetime." }, "last_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose last past registration starts at or after this datetime." }, "last_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose last past registration starts at or before this datetime." }, "last_broadcast_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose last broadcast was sent at or after this datetime." }, "last_broadcast_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose last broadcast was sent at or before this datetime." } }, "title": "FilterCriteria" }, "FilterCriteriaRequest": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "description": "Free-text search by customer name, email, or indexed phone number." }, "ids": { "type": "array", "items": { "type": "integer" }, "description": "Filter by customer IDs." }, "status": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Filter by CRM lifecycle status slugs. Pass 'null' to include customers without a status." }, "lead_source": { "type": "array", "items": { "type": "integer" }, "description": "Filter by lead source IDs." }, "is_claimed": { "type": "boolean", "nullable": true, "description": "Filter by whether a customer's account is claimed. Pass null for unclaimed family members." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Filter by active membership IDs." }, "has_active_membership": { "type": "boolean", "description": "Filter by whether the customer has an active membership." }, "has_open_issues": { "type": "boolean", "description": "Filter by whether a customer has open issues." }, "assigned_staff": { "type": "array", "items": { "type": "integer" }, "description": "Filter by assigned staff IDs." }, "created_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers created on or before this date." }, "created_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers created on or after this date." }, "date_of_birth_lte": { "type": "string", "format": "date", "description": "Filter customers with date of birth on or before this date." }, "date_of_birth_gte": { "type": "string", "format": "date", "description": "Filter customers with date of birth on or after this date." }, "registration_blocked": { "type": "boolean", "description": "Filter by whether the customer is blocked from registering." }, "has_account_credit": { "type": "boolean", "description": "Filter by whether the customer has a positive account credit balance." }, "has_failed_payments": { "type": "boolean", "description": "Filter by whether the customer has failed payments." }, "total_spend_amount_gte": { "type": "number", "format": "double", "description": "Filter customers whose total spend is greater than or equal to this amount." }, "total_spend_amount_lte": { "type": "number", "format": "double", "description": "Filter customers whose total spend is less than or equal to this amount." }, "last_payment_amount_gte": { "type": "number", "format": "double", "description": "Filter customers whose last payment amount is greater than or equal to this amount." }, "last_payment_amount_lte": { "type": "number", "format": "double", "description": "Filter customers whose last payment amount is less than or equal to this amount." }, "registered_and_attended_count_gte": { "type": "integer", "description": "Filter customers who have registered or attended at least this many events." }, "registered_and_attended_count_lte": { "type": "integer", "description": "Filter customers who have registered or attended at most this many events." }, "next_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose next upcoming registration starts at or after this datetime." }, "next_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose next upcoming registration starts at or before this datetime." }, "last_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose last past registration starts at or after this datetime." }, "last_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose last past registration starts at or before this datetime." }, "last_broadcast_at_gte": { "type": "string", "format": "date-time", "description": "Filter customers whose last broadcast was sent at or after this datetime." }, "last_broadcast_at_lte": { "type": "string", "format": "date-time", "description": "Filter customers whose last broadcast was sent at or before this datetime." } }, "title": "FilterCriteriaRequest" }, "FilterTag": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 32 }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "filter": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ContentFilter" } ] } }, "required": [ "filter", "id", "name" ], "title": "FilterTag" }, "FormMembershipSetting": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "membership": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "id", "membership", "timing" ], "title": "FormMembershipSetting" }, "FormMembershipSettingRequest": { "type": "object", "properties": { "membership": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "membership", "timing" ], "title": "FormMembershipSettingRequest" }, "FormOfferingTypeSetting": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "offering_type": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "id", "offering_type", "timing" ], "title": "FormOfferingTypeSetting" }, "FormOfferingTypeSettingRequest": { "type": "object", "properties": { "offering_type": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "offering_type", "timing" ], "title": "FormOfferingTypeSettingRequest" }, "FranchiseFeeIssue": { "type": "object", "properties": { "status": { "type": "string" }, "manager": { "$ref": "#/components/schemas/FranchiseFeeIssueManager" } }, "required": [ "manager", "status" ], "title": "FranchiseFeeIssue" }, "FranchiseFeeIssueManager": { "type": "object", "properties": { "name": { "type": "string" } }, "required": [ "name" ], "title": "FranchiseFeeIssueManager" }, "GenerateOnlineAccessLinkParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "GenerateOnlineAccessLinkParamsRequest" }, "GenerateOnlineAccessLinkRead": { "type": "object", "properties": { "access_link": { "type": "string", "format": "uri" } }, "required": [ "access_link" ], "title": "GenerateOnlineAccessLinkRead" }, "GetAccessTokenSuccess": { "type": "object", "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "integer", "nullable": true, "readOnly": true }, "refresh_token": { "type": "string" }, "refresh_token_expires_in": { "type": "integer", "nullable": true, "readOnly": true } }, "required": [ "access_token", "expires_in", "refresh_token", "refresh_token_expires_in" ], "title": "GetAccessTokenSuccess" }, "GiftCardConfigRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "is_enabled_provider_site": { "type": "boolean" }, "is_enabled_customer_site": { "type": "boolean" }, "image_choices": { "type": "array", "items": { "$ref": "#/components/schemas/ReadImage" } }, "amount_choices": {}, "do_gift_cards_expire": { "type": "boolean" }, "redemption_expiration_days": { "type": "integer" }, "redemption_email_template": { "$ref": "#/components/schemas/EmailTemplate" } }, "required": [ "amount_choices", "do_gift_cards_expire", "id", "image_choices", "is_enabled_customer_site", "is_enabled_provider_site", "redemption_email_template", "redemption_expiration_days" ], "title": "GiftCardConfigRead" }, "GiftCardRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "gift_card" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "provider": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProviderRead" } ] }, "purchaser": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "purchased_at": { "type": "string", "format": "date-time", "readOnly": true }, "recipient_email": { "type": "string", "format": "email", "readOnly": true }, "recipient_name": { "type": "string", "readOnly": true }, "recipient": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "image": { "allOf": [ { "$ref": "#/components/schemas/ReadImage" } ], "readOnly": true }, "redeem_by": { "type": "string", "format": "date-time", "readOnly": true }, "deliver_on_date": { "type": "string", "format": "date", "readOnly": true }, "is_delivered": { "type": "boolean", "readOnly": true }, "delivered_at": { "type": "string", "format": "date-time", "readOnly": true }, "is_redeemed": { "type": "boolean", "readOnly": true }, "redeemed_at": { "type": "string", "format": "date-time", "readOnly": true }, "is_expired": { "type": "boolean", "readOnly": true }, "status": { "type": "string", "readOnly": true } }, "required": [ "amount", "deliver_on_date", "delivered_at", "id", "image", "is_delivered", "is_expired", "is_redeemed", "object", "provider", "purchased_at", "purchaser", "recipient", "recipient_email", "recipient_name", "redeem_by", "redeemed_at", "status" ], "title": "GiftCardRead" }, "GiftCardsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "purchased_at", "purchaser_pk", "purchaser_id", "purchaser_name", "recipient_email", "recipient_name", "amount", "redeem_by", "deliver_on_date", "is_delivered", "delivered_at", "is_redeemed", "redeemed_at", "status", "is_paid" ], "type": "string", "description": "* `id` - id\n* `purchased_at` - purchased_at\n* `purchaser_pk` - purchaser_pk\n* `purchaser_id` - purchaser_id\n* `purchaser_name` - purchaser_name\n* `recipient_email` - recipient_email\n* `recipient_name` - recipient_name\n* `amount` - amount\n* `redeem_by` - redeem_by\n* `deliver_on_date` - deliver_on_date\n* `is_delivered` - is_delivered\n* `delivered_at` - delivered_at\n* `is_redeemed` - is_redeemed\n* `redeemed_at` - redeemed_at\n* `status` - status\n* `is_paid` - is_paid", "x-spec-enum-id": "3f519d1ca05307b4" } }, "purchasers": { "type": "array", "items": { "type": "integer" } }, "purchased_at_lte": { "type": "string", "format": "date-time" }, "purchased_at_gte": { "type": "string", "format": "date-time" }, "purchased_at_timeframe": { "type": "string" }, "status": { "type": "array", "items": { "enum": [ "scheduled", "delivered", "redeemed", "expired" ], "type": "string", "description": "* `scheduled` - scheduled\n* `delivered` - delivered\n* `redeemed` - redeemed\n* `expired` - expired", "x-spec-enum-id": "1abd45139cd2065e" } } }, "title": "GiftCardsReportParamsRequest" }, "GoCardless": { "type": "object", "properties": { "verified": { "type": "boolean" }, "verify_url": { "type": "string" } }, "required": [ "verified", "verify_url" ], "title": "GoCardless" }, "GroupedAttendanceInfractionsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "attendance_status", "attendance.status", "attendance", "rule_applies_to", "rule.applies_to", "rule", "offering_type_id", "event.offering_type.id", "event", "event.offering_type", "offering_type_name", "event.offering_type.name", "venue_id", "event.venue.id", "event.venue", "venue_name", "event.venue.name", "membership_id", "customer_membership.membership.id", "customer_membership", "customer_membership.membership", "membership_name", "customer_membership.membership.name", "day_of_week", "event_start_time", "event.start_time", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `attendance_status` - attendance_status\n* `attendance.status` - attendance.status\n* `attendance` - attendance\n* `rule_applies_to` - rule_applies_to\n* `rule.applies_to` - rule.applies_to\n* `rule` - rule\n* `offering_type_id` - offering_type_id\n* `event.offering_type.id` - event.offering_type.id\n* `event` - event\n* `event.offering_type` - event.offering_type\n* `offering_type_name` - offering_type_name\n* `event.offering_type.name` - event.offering_type.name\n* `venue_id` - venue_id\n* `event.venue.id` - event.venue.id\n* `event.venue` - event.venue\n* `venue_name` - venue_name\n* `event.venue.name` - event.venue.name\n* `membership_id` - membership_id\n* `customer_membership.membership.id` - customer_membership.membership.id\n* `customer_membership` - customer_membership\n* `customer_membership.membership` - customer_membership.membership\n* `membership_name` - membership_name\n* `customer_membership.membership.name` - customer_membership.membership.name\n* `day_of_week` - day_of_week\n* `event_start_time` - event_start_time\n* `event.start_time` - event.start_time\n* `count` - count", "x-spec-enum-id": "805b6f45b1baddff" }, "minItems": 1 }, "customers": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for particular customers." }, "status": { "type": "array", "items": { "type": "string", "enum": [ "open", "voided", "expired", "in_penalty_sequence", "upcoming_charge", "charged", "charge_skipped" ] }, "description": "Only include infractions with a particular status." }, "attendance_status": { "type": "array", "items": { "enum": [ "late_cancel", "no_show" ], "type": "string", "description": "* `late_cancel` - late_cancel\n* `no_show` - no_show", "x-spec-enum-id": "a75ca351ea76bf90" }, "description": "Only include infractions for a particular attendance status." }, "rule_applies_to": { "type": "array", "items": { "enum": [ "no_shows", "late_cancels", "late_cancels_or_no_shows" ], "type": "string", "description": "* `no_shows` - no_shows\n* `late_cancels` - late_cancels\n* `late_cancels_or_no_shows` - late_cancels_or_no_shows", "x-spec-enum-id": "4dd98ed3daee5b73" }, "description": "Only include infractions for rules with different applicabilities." }, "memberships": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions associated with particular memberships." }, "offering_types": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for attended events with particular offering types." }, "venues": { "type": "array", "items": { "type": "integer" }, "description": "Only include infractions for attended events at particular venues." }, "penalty": { "type": "integer", "description": "Only include infractions part of a sequence that triggered a particular penalty." }, "event_starts_at_lte": { "type": "string", "format": "date-time" }, "event_starts_at_gte": { "type": "string", "format": "date-time" }, "pivot": { "enum": [ "all", "year", "month", "week" ], "type": "string", "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all" }, "max_pivot_columns": { "type": "integer", "maximum": 12, "default": 4 } }, "required": [ "columns" ], "title": "GroupedAttendanceInfractionsParamsRequest" }, "GroupedAttendancesReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "day_of_week", "event_start_time", "event.start_time", "event", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "booking_method", "booking_source", "status", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `day_of_week` - day_of_week\n* `event_start_time` - event_start_time\n* `event.start_time` - event.start_time\n* `event` - event\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `booking_method` - booking_method\n* `booking_source` - booking_source\n* `status` - status\n* `count` - count", "x-spec-enum-id": "5d72b04f943154dd" }, "minItems": 1 }, "customers": { "type": "array", "items": { "type": "integer" } }, "customer_memberships": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "status": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } }, "attendance_status": { "type": "array", "items": { "enum": [ "attended", "registered", "no_show", "late_cancelled" ], "type": "string", "description": "* `attended` - attended\n* `registered` - registered\n* `no_show` - no_show\n* `late_cancelled` - late_cancelled", "x-spec-enum-id": "97220ebb68847e1b" } }, "booking_methods": { "type": "array", "items": { "enum": [ "membership", "dropin", "free" ], "type": "string", "description": "* `membership` - membership\n* `dropin` - dropin\n* `free` - free", "x-spec-enum-id": "cc40e32d85afa928" } }, "booking_sources": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } }, "event_types": { "type": "array", "items": { "enum": [ "appointment", "class" ], "type": "string", "description": "* `appointment` - appointment\n* `class` - class", "x-spec-enum-id": "ebe505573a59b601" } }, "include_future": { "type": "boolean", "default": false }, "instructors": { "type": "string" }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "event_start_lte": { "type": "string", "format": "date-time" }, "event_start_gte": { "type": "string", "format": "date-time" }, "event_timeframe": { "type": "string" }, "pivot": { "enum": [ "all", "year", "month", "week" ], "type": "string", "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all" }, "max_pivot_columns": { "type": "integer", "maximum": 12, "default": 4 } }, "required": [ "columns" ], "title": "GroupedAttendancesReportParamsRequest" }, "GroupedClassesReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "instructors": { "type": "string" }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "day_of_week": { "type": "array", "items": { "type": "string", "enum": [ "sunday", "monday", "tuesday", "wednesday", "thursday", "friday", "saturday" ] } }, "status": { "type": "string" }, "starts_at_lte": { "type": "string", "format": "date-time" }, "starts_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "timeframe": { "type": "string" }, "durations": { "type": "array", "items": { "type": "integer" } }, "include_future": { "type": "boolean", "default": false }, "columns": { "type": "array", "items": { "enum": [ "start_time", "day_of_week", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "duration_minutes", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "year", "month", "average_attendees", "count" ], "type": "string", "description": "* `start_time` - start_time\n* `day_of_week` - day_of_week\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `duration_minutes` - duration_minutes\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `year` - year\n* `month` - month\n* `average_attendees` - average_attendees\n* `count` - count", "x-spec-enum-id": "ece4fa9a94c3c12b" }, "minItems": 1 } }, "required": [ "columns" ], "title": "GroupedClassesReportParamsRequest" }, "GroupedContentViewsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "content_id", "content.id", "content", "content_name", "content.name", "month", "year", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `content_id` - content_id\n* `content.id` - content.id\n* `content` - content\n* `content_name` - content_name\n* `content.name` - content.name\n* `month` - month\n* `year` - year\n* `count` - count", "x-spec-enum-id": "226bcb1f58e45c17" }, "minItems": 1 }, "content": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "viewed_at_lte": { "type": "string", "format": "date-time" }, "viewed_at_gte": { "type": "string", "format": "date-time" }, "viewed_at_timeframe": { "type": "string" } }, "required": [ "columns" ], "title": "GroupedContentViewsParamsRequest" }, "GroupedCourseSessionAttendancesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "booking_method", "is_makeup", "status", "course_session_start_time", "course_session.start_time", "course_session", "day_of_week", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `booking_method` - booking_method\n* `is_makeup` - is_makeup\n* `status` - status\n* `course_session_start_time` - course_session_start_time\n* `course_session.start_time` - course_session.start_time\n* `course_session` - course_session\n* `day_of_week` - day_of_week\n* `count` - count", "x-spec-enum-id": "4190cdb9addea1b0" }, "minItems": 1 }, "status": { "type": "array", "items": { "enum": [ "no_show", "registered", "attended" ], "type": "string", "description": "* `no_show` - no_show\n* `registered` - registered\n* `attended` - attended", "x-spec-enum-id": "47204a6d452cf619" } }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "instructors": { "type": "string" }, "customers": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "include_future": { "type": "boolean", "default": false }, "booking_methods": { "type": "array", "items": { "enum": [ "session_dropin", "membership", "course_dropin" ], "type": "string", "description": "* `session_dropin` - session_dropin\n* `membership` - membership\n* `course_dropin` - course_dropin", "x-spec-enum-id": "c776d7f1be44e761" } }, "is_makeup": { "type": "boolean" }, "session_starts_at_lte": { "type": "string", "format": "date-time" }, "session_starts_at_gte": { "type": "string", "format": "date-time" }, "session_timeframe": { "type": "string" }, "pivot": { "enum": [ "all", "year", "month", "week" ], "type": "string", "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all" }, "max_pivot_columns": { "type": "integer", "maximum": 12, "default": 4 } }, "required": [ "columns" ], "title": "GroupedCourseSessionAttendancesParamsRequest" }, "GroupedCustomerMembershipHoldsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "customers": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular customers." }, "memberships": { "type": "array", "items": { "type": "integer" }, "title": "Only include holds for particular memberships." }, "membership_types": { "type": "array", "items": { "type": "string", "enum": [ "pack", "prepaid", "recurring" ] }, "title": "Only include holds for particular membership types." }, "created_at_lte": { "type": "string", "format": "date", "title": "Only include holds created on or before a timestamp." }, "created_at_gte": { "type": "string", "format": "date", "title": "Only include holds created on or after a timestamp." }, "updated_at_lte": { "type": "string", "format": "date", "title": "Only include holds updated on or before a timestamp." }, "updated_at_gte": { "type": "string", "format": "date", "title": "Only include holds updated on or after a timestamp." }, "created_at_timeframe": { "type": "string", "title": "Only include holds created within a timeframe." }, "start_date_lte": { "type": "string", "format": "date", "title": "Only include holds starting on or before a date." }, "start_date_gte": { "type": "string", "format": "date", "title": "Only include holds starting on or after a date." }, "start_timeframe": { "type": "string", "title": "Only include holds starting within a timeframe." }, "end_date_lte": { "type": "string", "format": "date", "title": "Only include holds ending on or before a date." }, "end_date_gte": { "type": "string", "format": "date", "title": "Only include holds ending on or after a date." }, "end_timeframe": { "type": "string", "title": "Only include holds ending within a timeframe." }, "status": { "type": "array", "items": { "enum": [ "active", "ended", "upcoming" ], "type": "string", "description": "* `active` - active\n* `ended` - ended\n* `upcoming` - upcoming", "x-spec-enum-id": "ca64ef7c06a0a488" }, "title": "Only include holds with a particular status." }, "payment_resolution_type": { "type": "array", "items": { "enum": [ "charge", "credit", "none" ], "type": "string", "description": "* `charge` - charge\n* `credit` - credit\n* `none` - none", "x-spec-enum-id": "daf90168e108ff08" }, "title": "Only include holds with a particular payment resolution type." }, "is_usage_prorated": { "type": "boolean", "title": "Include holds based on whether they are prorated or not." }, "columns": { "type": "array", "items": { "enum": [ "status", "membership_name", "membership.name", "membership", "membership_type", "membership.type", "payment_resolution_type", "start_month", "start_year", "end_month", "end_year", "average_hold_duration", "count" ], "type": "string", "description": "* `status` - status\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `membership` - membership\n* `membership_type` - membership_type\n* `membership.type` - membership.type\n* `payment_resolution_type` - payment_resolution_type\n* `start_month` - start_month\n* `start_year` - start_year\n* `end_month` - end_month\n* `end_year` - end_year\n* `average_hold_duration` - average_hold_duration\n* `count` - count", "x-spec-enum-id": "13bb016d9187a43c" }, "minItems": 1 }, "pivot": { "enum": [ "all", "year", "month", "week" ], "type": "string", "description": "* `all` - all\n* `year` - year\n* `month` - month\n* `week` - week", "x-spec-enum-id": "dac807cb5d7916d5", "default": "all" }, "max_pivot_columns": { "type": "integer", "maximum": 12, "default": 4 } }, "required": [ "columns" ], "title": "GroupedCustomerMembershipHoldsRequest" }, "GroupedCustomerMembershipsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "ids": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "membership_categories": { "type": "array", "items": { "type": "integer" } }, "payment_processors": { "type": "array", "items": { "type": "string", "minLength": 1, "pattern": "^(\\d+|none)$" } }, "has_expiration_date": { "type": "boolean" }, "has_active_hold": { "type": "boolean" }, "has_custom_limits": { "type": "boolean" }, "is_first_membership": { "type": "boolean" }, "start_date_lte": { "type": "string", "format": "date" }, "start_date_gte": { "type": "string", "format": "date" }, "start_date_timeframe": { "type": "string" }, "expiration_date_lte": { "type": "string", "format": "date" }, "expiration_date_gte": { "type": "string", "format": "date" }, "expiration_date_timeframe": { "type": "string" }, "renewal_date_lte": { "type": "string", "format": "date" }, "renewal_date_gte": { "type": "string", "format": "date" }, "renewal_date_timeframe": { "type": "string" }, "downgrade_date_lte": { "type": "string", "format": "date" }, "downgrade_date_gte": { "type": "string", "format": "date" }, "downgrade_date_timeframe": { "type": "string" }, "upgrade_date_lte": { "type": "string", "format": "date" }, "upgrade_date_gte": { "type": "string", "format": "date" }, "upgrade_date_timeframe": { "type": "string" }, "active_hold_start_date_lte": { "type": "string", "format": "date" }, "active_hold_start_date_gte": { "type": "string", "format": "date" }, "active_hold_end_date_lte": { "type": "string", "format": "date" }, "active_hold_end_date_gte": { "type": "string", "format": "date" }, "purchased_at_lte": { "type": "string", "format": "date-time" }, "purchased_at_gte": { "type": "string", "format": "date-time" }, "purchased_at_timeframe": { "type": "string" }, "cancelled_at_lte": { "type": "string", "format": "date-time" }, "cancelled_at_gte": { "type": "string", "format": "date-time" }, "cancelled_at_timeframe": { "type": "string" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "status": { "type": "array", "items": { "enum": [ "active", "hold", "cancelled", "completed", "upgraded", "downgraded" ], "type": "string", "description": "* `active` - active\n* `hold` - hold\n* `cancelled` - cancelled\n* `completed` - completed\n* `upgraded` - upgraded\n* `downgraded` - downgraded", "x-spec-enum-id": "9bb0cd1aca3216b8" } }, "types": { "type": "array", "items": { "enum": [ "pack", "prepaid", "recurring" ], "type": "string", "description": "* `pack` - pack\n* `prepaid` - prepaid\n* `recurring` - recurring", "x-spec-enum-id": "758f3720c00cb886" } }, "columns": { "type": "array", "items": { "enum": [ "type", "status", "payment_processor", "purchase_month", "purchase_year", "start_month", "start_year", "expiration_month", "expiration_year", "cancelled_month", "cancelled_year", "membership_id", "membership.id", "membership", "membership_name", "membership.name", "count", "billed_price" ], "type": "string", "description": "* `type` - type\n* `status` - status\n* `payment_processor` - payment_processor\n* `purchase_month` - purchase_month\n* `purchase_year` - purchase_year\n* `start_month` - start_month\n* `start_year` - start_year\n* `expiration_month` - expiration_month\n* `expiration_year` - expiration_year\n* `cancelled_month` - cancelled_month\n* `cancelled_year` - cancelled_year\n* `membership_id` - membership_id\n* `membership.id` - membership.id\n* `membership` - membership\n* `membership_name` - membership_name\n* `membership.name` - membership.name\n* `count` - count\n* `billed_price` - billed_price", "x-spec-enum-id": "95e0633d14d08aa2" } }, "pivot": { "enum": [ "active_by_year", "active_by_month" ], "type": "string", "description": "* `active_by_year` - active_by_year\n* `active_by_month` - active_by_month", "x-spec-enum-id": "db6ee22767df080e" }, "max_pivot_columns": { "type": "integer", "maximum": 12, "default": 4 } }, "required": [ "columns" ], "title": "GroupedCustomerMembershipsReportParamsRequest" }, "GroupedCustomerReferralsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "referring_customers": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referring customers. Format as comma-separated customer id values." }, "signup_customers": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for particular referred customers. Format as comma-separated customer id values." }, "memberships": { "type": "array", "items": { "type": "integer" }, "title": "Only return rows for referrals with particular signup memberships. Format as comma-separated membership id values." }, "status": { "type": "array", "items": { "enum": [ "pending", "confirmed" ], "type": "string", "description": "* `pending` - pending\n* `confirmed` - confirmed", "x-spec-enum-id": "2194144715280128" }, "title": "Only return rows for referrals with a particular status." }, "signup_date_lte": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or before a particular date." }, "signup_date_gte": { "type": "string", "format": "date", "title": "Only return rows for referrals with a signup on or after a particular date." }, "signup_date_timeframe": { "type": "string", "title": "Only return rows for referrals with a singup date within a particular timeframe. See section on timeframe syntax for formatting." }, "confirmation_date_lte": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or before a particular date." }, "confirmation_date_gte": { "type": "string", "format": "date", "title": "Only return rows for referrals that were confirmed on or after a particular date." }, "confirmation_date_timeframe": { "type": "string", "title": "Only return rows for referrals that were confirmed within a particular timeframe. See section on timeframe syntax for formatting." }, "updated_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "columns": { "type": "array", "items": { "enum": [ "referring_customer_id", "referring_customer.id", "referring_customer", "referrering_customer_name", "referring_customer.name", "referrering_customer_email", "referring_customer.email", "membership_id", "signup_membership.id", "signup_membership", "membership_name", "signup_membership.name", "signup_month", "signup_year", "status", "count" ], "type": "string", "description": "* `referring_customer_id` - referring_customer_id\n* `referring_customer.id` - referring_customer.id\n* `referring_customer` - referring_customer\n* `referrering_customer_name` - referrering_customer_name\n* `referring_customer.name` - referring_customer.name\n* `referrering_customer_email` - referrering_customer_email\n* `referring_customer.email` - referring_customer.email\n* `membership_id` - membership_id\n* `signup_membership.id` - signup_membership.id\n* `signup_membership` - signup_membership\n* `membership_name` - membership_name\n* `signup_membership.name` - signup_membership.name\n* `signup_month` - signup_month\n* `signup_year` - signup_year\n* `status` - status\n* `count` - count", "x-spec-enum-id": "be3c25680cb02380" }, "title": "Only return particular columns. Format as comma-separated column names." } }, "required": [ "columns" ], "title": "GroupedCustomerReferralsReportParamsRequest" }, "GroupedCustomersReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "segment": { "type": "integer", "description": "Apply filters from a saved customer segment by ID. The segment must belong to the authenticated provider. Segment filters are combined with any additional ad-hoc filters in this request." }, "columns": { "type": "array", "items": { "enum": [ "created_date", "is_claimed", "is_active", "has_account_credit", "created_month", "created_year", "birth_month", "gender", "created_hour", "age", "is_new", "is_slipping_away", "registration_blocked", "count" ], "type": "string", "description": "* `created_date` - created_date\n* `is_claimed` - is_claimed\n* `is_active` - is_active\n* `has_account_credit` - has_account_credit\n* `created_month` - created_month\n* `created_year` - created_year\n* `birth_month` - birth_month\n* `gender` - gender\n* `created_hour` - created_hour\n* `age` - age\n* `is_new` - is_new\n* `is_slipping_away` - is_slipping_away\n* `registration_blocked` - registration_blocked\n* `count` - count", "x-spec-enum-id": "d257d7286420a21b" }, "description": "Select which columns to include in the report. Attribute columns with the same values are grouped into the same rows, and aggregate columns are calculated for each group.", "minItems": 1 }, "query": { "type": "string", "minLength": 1, "description": "Filter by a free-text string. Checks the `email` and name fields." }, "include_deleted": { "type": "boolean", "default": false, "description": "Whether to include deleted customers in the report." }, "created_at_lte": { "type": "string", "format": "date-time", "description": "Only return rows for customers that were created on or before a particular timestamp." }, "created_at_gte": { "type": "string", "format": "date-time", "description": "Only return rows for customers that were created on or after a particular timestamp." }, "latest_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers who latest-registered event occurs on or before this timestamp." }, "latest_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers who latest-registered event occurs on or after this timestamp." }, "next_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose next registration starts on or before this timestamp." }, "next_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose next registration starts on or after this timestamp." }, "last_registration_starts_at_lte": { "type": "string", "format": "date-time", "description": "Only include customers whose last registration starts on or before this timestamp." }, "last_registration_starts_at_gte": { "type": "string", "format": "date-time", "description": "Only include customers whose last registration starts on or after this timestamp." }, "date_of_birth_lte": { "type": "string", "format": "date", "description": "Only return rows for customers with a date of birth on or before this date." }, "date_of_birth_gte": { "type": "string", "format": "date", "description": "Only return rows for customers with a date of birth on or after this date." }, "created_at_timeframe": { "type": "string", "description": "Only return rows for customers that were created within a particular timeframe. See section on timeframe syntax for formatting." }, "ids": { "type": "array", "items": { "type": "integer" }, "description": "Only return rows for customers with particular unique identifiers. Format as comma-separated `id` values." }, "is_new": { "type": "boolean", "description": "Return rows based on whether customers are new or not." }, "is_claimed": { "type": "boolean", "nullable": true, "description": "Return rows based on whether customers are claimed or not. Pass `null` to return unclaimed family members, whose accounts cannot be claimed; `false` excludes them and returns only accounts that can still be claimed." }, "is_active": { "type": "boolean", "description": "Return rows based on whether customers are active or not." }, "is_slipping_away": { "type": "boolean", "description": "Return rows based on whether customers are slipping away or not." }, "is_any": { "type": "array", "items": { "enum": [ "new", "claimed", "slipping_away", "inactive", "active", "registration_blocked", "lead" ], "type": "string", "description": "* `new` - new\n* `claimed` - claimed\n* `slipping_away` - slipping_away\n* `inactive` - inactive\n* `active` - active\n* `registration_blocked` - registration_blocked\n* `lead` - lead", "x-spec-enum-id": "18aceac25139e991" }, "description": "Only include customers who have certain traits." }, "registration_blocked": { "type": "boolean" }, "has_account_credit": { "type": "boolean", "description": "Return rows based on whether customers have account credit or not." }, "total_spend_amount_gte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with total spend amount greater than or equal to this value." }, "total_spend_amount_lte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with total spend amount less than or equal to this value." }, "last_payment_amount_gte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with last payment amount greater than or equal to this value." }, "last_payment_amount_lte": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,8}(?:\\.\\d{0,2})?$", "description": "Only return customers with last payment amount less than or equal to this value." }, "last_broadcast_at_gte": { "type": "string", "format": "date-time", "description": "Only return customers last broadcast on or after this timestamp." }, "last_broadcast_at_lte": { "type": "string", "format": "date-time", "description": "Only return customers last broadcast on or before this timestamp." }, "registered_and_attended_count_gte": { "type": "integer", "description": "Only return customers with total registrations greater than or equal to this value." }, "registered_and_attended_count_lte": { "type": "integer", "description": "Only return customers with total registrations less than or equal to this value." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Only return customers who have particular memberships that are active. Format as comma-separated membership `id` values." }, "has_active_membership": { "type": "boolean", "description": "Return rows based on whether customers have an active membership or not." }, "has_open_issues": { "type": "boolean", "description": "Return rows based on whether customers have open issues or not." }, "has_failed_payments": { "type": "boolean", "description": "Return rows based on whether customers have failed payments or not." }, "assigned_staff": { "type": "array", "items": { "type": "integer" }, "description": "Only return customers assigned to specific staff members. Format as comma-separated staff (ProviderUser) `id` values." }, "status": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Filter customers by status. Format as comma-separated status slugs. Pass `null` to filter for customers without a status." }, "lead_source": { "type": "array", "items": { "type": "integer" }, "description": "Filter customers by lead source IDs. Format as comma-separated lead source `id` values." } }, "required": [ "columns" ], "title": "GroupedCustomersReportParamsRequest" }, "GroupedDiscountCodeUsesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "discount_code_id", "discount_code.id", "discount_code", "discount_code_name", "discount_code.name", "discount_code_code", "discount_code.code", "group_id", "group.id", "group", "group_name", "group.name", "use_type", "month", "year", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `discount_code_id` - discount_code_id\n* `discount_code.id` - discount_code.id\n* `discount_code` - discount_code\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code_code` - discount_code_code\n* `discount_code.code` - discount_code.code\n* `group_id` - group_id\n* `group.id` - group.id\n* `group` - group\n* `group_name` - group_name\n* `group.name` - group.name\n* `use_type` - use_type\n* `month` - month\n* `year` - year\n* `count` - count", "x-spec-enum-id": "f063beaca29c2e44" }, "minItems": 1 }, "discount_codes": { "type": "array", "items": { "type": "integer" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "groups": { "type": "array", "items": { "type": "integer" } }, "use_types": { "type": "array", "items": { "enum": [ "class", "course", "membership", "store_order" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `membership` - membership\n* `store_order` - store_order", "x-spec-enum-id": "aea60e1efb622221" } }, "used_at_lte": { "type": "string", "format": "date-time" }, "used_at_gte": { "type": "string", "format": "date-time" }, "used_at_timeframe": { "type": "string" } }, "required": [ "columns" ], "title": "GroupedDiscountCodeUsesParamsRequest" }, "GroupedInvoiceLineItemsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "total_amount", "type" ], "type": "string", "description": "* `total_amount` - total_amount\n* `type` - type", "x-spec-enum-id": "b8eab35afa0f4693" } }, "invoice_status": { "type": "string" }, "invoice_due_date_gte": { "type": "string", "format": "date" }, "invoice_due_date_lte": { "type": "string", "format": "date" }, "invoice_paid_at_gte": { "type": "string", "format": "date-time" }, "invoice_paid_at_lte": { "type": "string", "format": "date-time" }, "invoice_updated_at_gte": { "type": "string", "format": "date-time" }, "invoice_updated_at_lte": { "type": "string", "format": "date-time" }, "invoice_confirmed_at_gte": { "type": "string", "format": "date-time" }, "invoice_confirmed_at_lte": { "type": "string", "format": "date-time" } }, "title": "GroupedInvoiceLineItemsParamsRequest" }, "GroupedInvoicesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "status", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "purchase_type", "payment_processor", "due_date_month", "due_date_year", "payment_month", "payment_year", "payout_month", "payout_year", "purchased_item", "purchase_fee_type", "count" ], "type": "string", "description": "* `status` - status\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `purchase_type` - purchase_type\n* `payment_processor` - payment_processor\n* `due_date_month` - due_date_month\n* `due_date_year` - due_date_year\n* `payment_month` - payment_month\n* `payment_year` - payment_year\n* `payout_month` - payout_month\n* `payout_year` - payout_year\n* `purchased_item` - purchased_item\n* `purchase_fee_type` - purchase_fee_type\n* `count` - count", "x-spec-enum-id": "1d70fdbc10c69fa0" }, "minItems": 1 }, "customers": { "type": "array", "items": { "type": "integer" } }, "payment_processors": { "type": "array", "items": { "type": "integer" } }, "purchase_types": { "type": "array", "items": { "enum": [ "class", "course", "course_session", "membership", "store" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `course_session` - course_session\n* `membership` - membership\n* `store` - store", "x-spec-enum-id": "e151cefcdf6191ed" } }, "status": { "type": "string" }, "due_date_gte": { "type": "string", "format": "date" }, "due_date_lte": { "type": "string", "format": "date" }, "due_date_timeframe": { "type": "string" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "confirmed_at_gte": { "type": "string", "format": "date-time" }, "confirmed_at_lte": { "type": "string", "format": "date-time" }, "paid_at_gte": { "type": "string", "format": "date-time" }, "paid_at_lte": { "type": "string", "format": "date-time" }, "paid_at_timeframe": { "type": "string" }, "customer_memberships": { "type": "array", "items": { "type": "integer" } }, "discount_applied": { "type": "boolean" }, "credit_applied": { "type": "boolean" } }, "required": [ "columns" ], "title": "GroupedInvoicesParamsRequest" }, "GroupedSMSMessagesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "interaction_trigger", "interaction.trigger", "interaction", "count" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `interaction_trigger` - interaction_trigger\n* `interaction.trigger` - interaction.trigger\n* `interaction` - interaction\n* `count` - count", "x-spec-enum-id": "e3bbea99a3f96ccb" }, "minItems": 1 }, "status": { "type": "array", "items": { "type": "string", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] }, "description": "Only include rows with particular statuses." }, "interaction_triggers": { "type": "array", "items": { "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ], "type": "string", "description": "* `waitlist_added` - waitlist_added\n* `waitlist_spot_available` - waitlist_spot_available\n* `waitlist_spot_expired` - waitlist_spot_expired\n* `waitlist_removed` - waitlist_removed\n* `event_cancelled` - event_cancelled\n* `event_changed` - event_changed\n* `event_registration_confirmed` - event_registration_confirmed\n* `event_reminder` - event_reminder\n* `verification_code` - verification_code\n* `two_factor_authentication` - two_factor_authentication\n* `broadcast_message` - broadcast_message\n* `boxmate_journey` - boxmate_journey", "x-spec-enum-id": "09bdc98710126411" }, "description": "Only include rows with particular triggers." }, "customers": { "type": "array", "items": { "type": "integer" }, "description": "Only include rows for particular customers. Formas as customer `id` values." }, "status_updated_at_lte": { "type": "string", "format": "date-time", "description": "Only include messages with a status update on or before a timestamp." }, "status_updated_at_gte": { "type": "string", "format": "date-time", "description": "Only include messages with a status update on or after a timestamp." }, "status_updated_at_timeframe": { "type": "string", "description": "Only include messages with a status update within a particular timeframe." } }, "required": [ "columns" ], "title": "GroupedSMSMessagesParamsRequest" }, "GroupedStoreOrderItemsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "product_id", "product_variant.product.id", "product_variant", "product_variant.product", "product_name", "product_variant.product.name", "total_quantity", "summed_line_total", "orders_count", "month", "year" ], "type": "string", "description": "* `product_id` - product_id\n* `product_variant.product.id` - product_variant.product.id\n* `product_variant` - product_variant\n* `product_variant.product` - product_variant.product\n* `product_name` - product_name\n* `product_variant.product.name` - product_variant.product.name\n* `total_quantity` - total_quantity\n* `summed_line_total` - summed_line_total\n* `orders_count` - orders_count\n* `month` - month\n* `year` - year", "x-spec-enum-id": "b4345f8dca03b39c" }, "minItems": 1 }, "customers": { "type": "array", "items": { "type": "integer" } }, "products": { "type": "array", "items": { "type": "integer" } }, "payment_status": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } }, "delivery_status": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } }, "ordered_at_lte": { "type": "string", "format": "date-time" }, "ordered_at_gte": { "type": "string", "format": "date-time" }, "ordered_at_timeframe": { "type": "string" } }, "required": [ "columns" ], "title": "GroupedStoreOrderItemsParamsRequest" }, "GympassBooking": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "gympass_booking" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "is_access_validated": { "type": "boolean" }, "access_validation_error": { "type": "string" }, "access_validation_attempted_at": { "type": "string", "format": "date-time", "nullable": true }, "booking_number": { "type": "string" }, "checked_in_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true } }, "required": [ "access_validation_error", "booking_number", "checked_in_at", "id", "object" ], "title": "GympassBooking" }, "GympassVenueMappingCreateRequest": { "type": "object", "properties": { "gym_id": { "type": "integer" }, "venue": { "type": "integer" }, "offering_types": { "type": "string" } }, "required": [ "gym_id", "offering_types", "venue" ], "title": "GympassVenueMappingCreateRequest" }, "GympassVenueMappingRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "gympass_venue_mapping" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "gym_id": { "type": "integer" }, "venue": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "offering_types": { "oneOf": [ { "type": "string", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "OfferingTypeRead[]", "items": { "$ref": "#/components/schemas/OfferingTypeRead" } } ] } }, "required": [ "gym_id", "id", "object", "offering_types", "venue" ], "title": "GympassVenueMappingRead" }, "GympassVenueMappingUpdateRequest": { "type": "object", "properties": { "offering_types": { "type": "string" } }, "required": [ "offering_types" ], "title": "GympassVenueMappingUpdateRequest" }, "HoldPaymentResolution": { "type": "object", "properties": { "prorate_strategy": { "enum": [ "usage", "days" ], "type": "string", "readOnly": true }, "start_billing_period": { "allOf": [ { "$ref": "#/components/schemas/StartBillingPeriod" } ], "nullable": true, "readOnly": true }, "reactivation_billing_period": { "allOf": [ { "$ref": "#/components/schemas/ReactivationBillingPeriod" } ], "nullable": true, "readOnly": true }, "resolution": { "allOf": [ { "$ref": "#/components/schemas/Resolution" } ], "nullable": true, "readOnly": true } }, "required": [ "prorate_strategy", "reactivation_billing_period", "resolution", "start_billing_period" ], "title": "HoldPaymentResolution" }, "ICalendarLinks": { "type": "object", "properties": { "link": { "type": "string", "format": "uri", "readOnly": true, "title": "iCalendar (.isc) URL." }, "webcal_url": { "type": "string", "format": "uri", "readOnly": true, "title": "webcal:// protocol URL that points to the same URL as `link`." }, "integrations": { "type": "array", "items": {}, "readOnly": true, "title": "Calendar integrations (connect iCalendar to common applications)." } }, "required": [ "integrations", "link", "webcal_url" ], "title": "ICalendarLinks" }, "InitiateEventPurchaseParamsRequest": { "type": "object", "properties": { "return_to": { "type": "string", "format": "uri", "minLength": 1, "maxLength": 2000 }, "customer": { "type": "integer" }, "customer_membership": { "type": "integer", "nullable": true }, "select_drop_in": { "type": "boolean", "default": false } }, "required": [ "customer", "return_to" ], "title": "InitiateEventPurchaseParamsRequest" }, "InitiateEventPurchaseRead": { "type": "object", "properties": { "next_url": { "type": "string", "format": "uri" }, "expires_at": { "type": "string", "format": "date-time" } }, "required": [ "expires_at", "next_url" ], "title": "InitiateEventPurchaseRead" }, "InitiatePurchaseParamsRequest": { "type": "object", "properties": { "return_to": { "type": "string", "format": "uri", "minLength": 1 }, "customer": { "type": "integer" }, "payment_plan": { "type": "integer", "nullable": true, "description": "Required when purchasing a recurring membership. The payment plan to purchase." }, "event": { "type": "integer", "nullable": true, "description": "Use when the customer would like to register for an event in the same transaction. Typically, the purchased membership will enable registering for the provided event." }, "appointment_slot": { "type": "string", "nullable": true, "minLength": 1, "description": "An optional appointment slot to reserve as part of this purchase." } }, "required": [ "customer", "return_to" ], "title": "InitiatePurchaseParamsRequest" }, "InitiatePurchaseRead": { "type": "object", "properties": { "next_url": { "type": "string", "format": "uri" }, "expires_at": { "type": "string", "format": "date-time" } }, "required": [ "expires_at", "next_url" ], "title": "InitiatePurchaseRead" }, "InstructedSessionsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "name", "offering_type_id", "offering_type.id", "offering_type", "offering_type_name", "offering_type.name", "instructor_id", "instructor.id", "instructor", "instructor_name", "instructor.name", "instructor_thumbnail_url", "instructor.thumbnail_url", "starts_at", "venue_id", "venue.id", "venue", "venue_name", "venue.name", "venue_timezone", "max_occupancy", "hours", "attended_count", "no_show_count", "late_cancel_count", "attended_comped_count", "comped_counts.attended", "comped_counts", "session_type", "instructor_pay_rate_id", "instructor_pay_rate.id", "instructor_pay_rate", "instructor_pay_rate_name", "instructor_pay_rate.name", "instructor_pay_rate_type", "instructor_pay_rate.type", "instructor_pay_rate_base", "instructor_pay_rate.base", "instructor_pay", "pay_rate_tiers", "instructor_pay_rate.tiers", "instructor_pay_calculation_pending" ], "type": "string", "description": "* `id` - id\n* `name` - name\n* `offering_type_id` - offering_type_id\n* `offering_type.id` - offering_type.id\n* `offering_type` - offering_type\n* `offering_type_name` - offering_type_name\n* `offering_type.name` - offering_type.name\n* `instructor_id` - instructor_id\n* `instructor.id` - instructor.id\n* `instructor` - instructor\n* `instructor_name` - instructor_name\n* `instructor.name` - instructor.name\n* `instructor_thumbnail_url` - instructor_thumbnail_url\n* `instructor.thumbnail_url` - instructor.thumbnail_url\n* `starts_at` - starts_at\n* `venue_id` - venue_id\n* `venue.id` - venue.id\n* `venue` - venue\n* `venue_name` - venue_name\n* `venue.name` - venue.name\n* `venue_timezone` - venue_timezone\n* `max_occupancy` - max_occupancy\n* `hours` - hours\n* `attended_count` - attended_count\n* `no_show_count` - no_show_count\n* `late_cancel_count` - late_cancel_count\n* `attended_comped_count` - attended_comped_count\n* `comped_counts.attended` - comped_counts.attended\n* `comped_counts` - comped_counts\n* `session_type` - session_type\n* `instructor_pay_rate_id` - instructor_pay_rate_id\n* `instructor_pay_rate.id` - instructor_pay_rate.id\n* `instructor_pay_rate` - instructor_pay_rate\n* `instructor_pay_rate_name` - instructor_pay_rate_name\n* `instructor_pay_rate.name` - instructor_pay_rate.name\n* `instructor_pay_rate_type` - instructor_pay_rate_type\n* `instructor_pay_rate.type` - instructor_pay_rate.type\n* `instructor_pay_rate_base` - instructor_pay_rate_base\n* `instructor_pay_rate.base` - instructor_pay_rate.base\n* `instructor_pay` - instructor_pay\n* `pay_rate_tiers` - pay_rate_tiers\n* `instructor_pay_rate.tiers` - instructor_pay_rate.tiers\n* `instructor_pay_calculation_pending` - instructor_pay_calculation_pending", "x-spec-enum-id": "93bc3d013a580a2c" } }, "instructors": { "type": "string" }, "session_types": { "type": "array", "items": { "enum": [ "class", "course_session" ], "type": "string", "description": "* `class` - class\n* `course_session` - course_session", "x-spec-enum-id": "2e08a88661d67892" } }, "pay_rates": { "type": "array", "items": { "type": "integer" } }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "starts_at_gte": { "type": "string", "format": "date-time" }, "starts_at_lte": { "type": "string", "format": "date-time" }, "timeframe": { "type": "string" } }, "title": "InstructedSessionsParamsRequest" }, "Instructor": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "instructor" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "readOnly": true }, "picture_url": { "type": "string", "readOnly": true }, "description": { "type": "string", "readOnly": true }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } }, "staff": { "type": "integer", "readOnly": true }, "availability_schedules": { "type": "array", "items": { "$ref": "#/components/schemas/InstructorAvailabilitySchedule" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "icalendar_links": { "$ref": "#/components/schemas/ICalendarLinks", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "description", "id", "name", "object", "permissions", "picture_url", "staff" ], "title": "Instructor" }, "InstructorAvailabilitySchedule": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ null ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 32 }, "venue": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/Intervals" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" }, "instructor": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/Instructor" } ] }, "is_default": { "type": "string", "readOnly": true }, "has_availability": { "type": "string", "readOnly": true }, "offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "availability_schedule_offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingType" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "has_availability", "id", "instructor", "is_default", "object" ], "title": "InstructorAvailabilitySchedule" }, "InstructorCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email", "minLength": 1 }, "description": { "type": "string" }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } } }, "required": [ "email", "name", "permissions" ], "title": "InstructorCreateRequest" }, "InstructorPayRateCoverage": { "type": "object", "properties": { "venues": { "type": "array", "items": { "$ref": "#/components/schemas/VenueOfferingTypePayRates" }, "readOnly": true } }, "required": [ "venues" ], "title": "InstructorPayRateCoverage" }, "InstructorPayRateCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "instructor": { "type": "integer" }, "type": { "type": "string", "enum": [ "per_customer", "per_hour", "per_customer_tiered" ] }, "base": { "type": "string", "example": "10.99", "writeOnly": true, "nullable": true }, "empty_session_amount": { "type": "string", "example": "10.99", "writeOnly": true, "nullable": true }, "max_amount": { "type": "string", "example": "10.99", "writeOnly": true, "nullable": true }, "include_late_cancels": { "type": "boolean", "default": false }, "include_no_shows": { "type": "boolean", "default": false }, "include_comped": { "type": "boolean", "default": false }, "session_criteria": { "type": "array", "items": { "$ref": "#/components/schemas/SessionCriterionWriteRequest" } }, "tiers": { "type": "array", "items": { "$ref": "#/components/schemas/TieredRateWriteRequest" }, "description": "Required if type is `per_customer_tiered`." }, "min_amount": { "type": "string", "example": "10.99", "writeOnly": true, "nullable": true } }, "required": [ "instructor", "name", "type" ], "title": "InstructorPayRateCreateRequest" }, "InstructorPayRateRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 255 }, "status": { "type": "string", "enum": [ "active", "archived" ] }, "created_at": { "type": "string", "format": "date-time" }, "archived_at": { "type": "string", "format": "date-time", "nullable": true }, "instructor": { "type": "integer" }, "type": { "type": "string", "enum": [ "per_customer", "per_hour", "per_customer_tiered" ] }, "base": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "empty_session_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "include_late_cancels": { "type": "boolean" }, "include_no_shows": { "type": "boolean" }, "include_comped": { "type": "boolean" }, "max_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "session_criteria": { "type": "string", "readOnly": true }, "min_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "tiers": { "type": "array", "items": { "$ref": "#/components/schemas/TieredRateRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "base", "empty_session_amount", "id", "instructor", "max_amount", "min_amount", "name", "session_criteria", "status", "type" ], "title": "InstructorPayRateRead" }, "InstructorPayRateUpdateRequest": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "active", "archived" ] } }, "required": [ "status" ], "title": "InstructorPayRateUpdateRequest" }, "InstructorsReportParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "instructors": { "type": "string" }, "starts_at_gte": { "type": "string", "format": "date-time" }, "starts_at_lte": { "type": "string", "format": "date-time" }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "venues": { "type": "array", "items": { "type": "integer" } }, "pay_rates": { "type": "array", "items": { "type": "integer" } }, "timeframe": { "type": "string" } }, "title": "InstructorsReportParamsRequest" }, "Intervals": { "type": "object", "properties": { "start": { "type": "string", "format": "time" }, "end": { "type": "string", "format": "time" } }, "required": [ "end", "start" ], "title": "Intervals" }, "IntervalsRequest": { "type": "object", "properties": { "start": { "type": "string", "format": "time" }, "end": { "type": "string", "format": "time" } }, "required": [ "end", "start" ], "title": "IntervalsRequest" }, "InvoiceAdjustment": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_adjustment" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } } }, "required": [ "amount", "id", "object" ], "title": "InvoiceAdjustment" }, "InvoiceCharge": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_charge" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "payment_processor": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PaymentProcessor" } ] } }, "required": [ "id", "object", "payment_processor" ], "title": "InvoiceCharge" }, "InvoiceCredit": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_credit" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } } }, "required": [ "amount", "id", "object" ], "title": "InvoiceCredit" }, "InvoiceDiscount": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_discount" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "discount_code": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/DiscountCodeRead" } ] }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } } }, "required": [ "amount", "discount_code", "id", "object" ], "title": "InvoiceDiscount" }, "InvoiceLineItem": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_line_item" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "billed_item": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_membership" ], "description": "Constant value: billed_membership" } }, "required": [ "id", "name", "type" ], "title": "BilledMembership" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_joining_fee" ], "description": "Constant value: billed_joining_fee" } }, "required": [ "id", "name", "type" ], "title": "BilledJoiningFee" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "quantity": { "type": "integer" }, "memo": { "type": "string" }, "type": { "type": "string", "enum": [ "billed_store_product" ], "description": "Constant value: billed_store_product" } }, "required": [ "id", "memo", "name", "quantity", "type" ], "title": "BilledStoreProduct" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_course_session_registration" ], "description": "Constant value: billed_course_session_registration" } }, "required": [ "id", "name", "type" ], "title": "BilledCourseSessionRegistration" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_course_registration" ], "description": "Constant value: billed_course_registration" } }, "required": [ "id", "name", "type" ], "title": "BilledCourseRegistration" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_gift_card" ], "description": "Constant value: billed_gift_card" } }, "required": [ "id", "name", "type" ], "title": "BilledGiftCard" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_membership_penalty" ], "description": "Constant value: billed_membership_penalty" } }, "required": [ "id", "name", "type" ], "title": "BilledMembershipPenalty" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_flat_fee" ], "description": "Constant value: billed_flat_fee" } }, "required": [ "id", "name", "type" ], "title": "BilledFlatFee" }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string", "readOnly": true }, "type": { "type": "string", "enum": [ "billed_event_registration" ], "description": "Constant value: billed_event_registration" } }, "required": [ "id", "name", "type" ], "title": "BilledEventRegistration" } ] } ] }, "type": { "type": "string", "enum": [ "flat_fee", "course_session", "store_order", "course", "event_registration", "recurring_plan_membership", "prepaid_plan_membership", "pack_membership", "membership_penalty_fee", "joining_fee", "gift_card" ] }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "total_amount_due": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } } }, "required": [ "billed_item", "id", "object", "price", "total_amount_due", "type" ], "title": "InvoiceLineItem" }, "InvoiceLineItemsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "invoice_id", "invoice.id", "invoice", "due_date", "invoice.due_date", "invoice_number", "invoice.number", "invoice_confirmed_at", "invoice.confirmed_at", "paid_at", "invoice.paid_at", "invoice_updated_at", "invoice.updated_at", "invoice_status", "invoice.status", "invoice_is_credit_note", "invoice.is_credit_note", "discount_code_name", "invoice.discount_code.name", "invoice.discount_code", "discount_code", "invoice.discount_code.code", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "amount", "type", "billed_item", "description", "tax_amount", "discount_amount", "credit_amount", "refund_amount" ], "type": "string", "description": "* `id` - id\n* `invoice_id` - invoice_id\n* `invoice.id` - invoice.id\n* `invoice` - invoice\n* `due_date` - due_date\n* `invoice.due_date` - invoice.due_date\n* `invoice_number` - invoice_number\n* `invoice.number` - invoice.number\n* `invoice_confirmed_at` - invoice_confirmed_at\n* `invoice.confirmed_at` - invoice.confirmed_at\n* `paid_at` - paid_at\n* `invoice.paid_at` - invoice.paid_at\n* `invoice_updated_at` - invoice_updated_at\n* `invoice.updated_at` - invoice.updated_at\n* `invoice_status` - invoice_status\n* `invoice.status` - invoice.status\n* `invoice_is_credit_note` - invoice_is_credit_note\n* `invoice.is_credit_note` - invoice.is_credit_note\n* `discount_code_name` - discount_code_name\n* `invoice.discount_code.name` - invoice.discount_code.name\n* `invoice.discount_code` - invoice.discount_code\n* `discount_code` - discount_code\n* `invoice.discount_code.code` - invoice.discount_code.code\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `amount` - amount\n* `type` - type\n* `billed_item` - billed_item\n* `description` - description\n* `tax_amount` - tax_amount\n* `discount_amount` - discount_amount\n* `credit_amount` - credit_amount\n* `refund_amount` - refund_amount", "x-spec-enum-id": "3975bf75dfbdd625" } }, "invoice_status": { "type": "string" }, "invoice_due_date_gte": { "type": "string", "format": "date" }, "invoice_due_date_lte": { "type": "string", "format": "date" }, "invoice_paid_at_gte": { "type": "string", "format": "date-time" }, "invoice_paid_at_lte": { "type": "string", "format": "date-time" }, "invoice_updated_at_gte": { "type": "string", "format": "date-time" }, "invoice_updated_at_lte": { "type": "string", "format": "date-time" }, "invoice_confirmed_at_gte": { "type": "string", "format": "date-time" }, "invoice_confirmed_at_lte": { "type": "string", "format": "date-time" } }, "title": "InvoiceLineItemsParamsRequest" }, "InvoiceRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "open", "paid", "pending_offline", "pending", "failed", "voided", "retrying", "retry_failed", "upcoming", "draft", "skipped" ] }, "due_date": { "type": "string", "format": "date" }, "created_at": { "type": "string", "format": "date-time" }, "is_credit_note": { "type": "boolean", "readOnly": true }, "total_amount_due": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "payer": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ] } ] }, "legacy_invoice_key": { "type": "string" }, "receipt_url": { "type": "string", "nullable": true, "readOnly": true }, "charges": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceCharge" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "line_items": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceLineItem" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "discounts": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceDiscount" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "adjustments": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceAdjustment" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "applied_credits": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceCredit" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "taxes": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceTax" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "credit_notes": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "created_at", "due_date", "id", "is_credit_note", "legacy_invoice_key", "object", "payer", "receipt_url", "status", "total_amount_due" ], "title": "InvoiceRead" }, "InvoiceTax": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "invoice_tax" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "purchase_fee": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "purchase_fee" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 100 }, "description": { "type": "string" }, "type": { "type": "string", "enum": [ "percent", "flat" ] } }, "required": [ "description", "id", "name", "object", "type" ] } ] } }, "required": [ "amount", "id", "object", "purchase_fee" ], "title": "InvoiceTax" }, "InvoicesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 } }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "due_date", "confirmed_at", "paid_at", "status", "is_credit_note", "refunded_invoice_id", "refunded_invoice.id", "refunded_invoice", "number", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "customer_venue_id", "customer.venue.id", "customer.venue", "customer_venue_name", "customer.venue.name", "total_amount", "subtotal_amount", "discount_amount", "tax_amount", "credit_amount", "adjustment_amount", "expected_payment_amount", "refund_amount", "refund_date", "discount_code_name", "discount_code.name", "discount_code", "discount_code.code", "payment_processor", "purchase_type", "purchase_items", "payout", "applied_credits", "charges", "updated_at", "legacy_mapping" ], "type": "string", "description": "* `id` - id\n* `due_date` - due_date\n* `confirmed_at` - confirmed_at\n* `paid_at` - paid_at\n* `status` - status\n* `is_credit_note` - is_credit_note\n* `refunded_invoice_id` - refunded_invoice_id\n* `refunded_invoice.id` - refunded_invoice.id\n* `refunded_invoice` - refunded_invoice\n* `number` - number\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `customer_venue_id` - customer_venue_id\n* `customer.venue.id` - customer.venue.id\n* `customer.venue` - customer.venue\n* `customer_venue_name` - customer_venue_name\n* `customer.venue.name` - customer.venue.name\n* `total_amount` - total_amount\n* `subtotal_amount` - subtotal_amount\n* `discount_amount` - discount_amount\n* `tax_amount` - tax_amount\n* `credit_amount` - credit_amount\n* `adjustment_amount` - adjustment_amount\n* `expected_payment_amount` - expected_payment_amount\n* `refund_amount` - refund_amount\n* `refund_date` - refund_date\n* `discount_code_name` - discount_code_name\n* `discount_code.name` - discount_code.name\n* `discount_code` - discount_code\n* `discount_code.code` - discount_code.code\n* `payment_processor` - payment_processor\n* `purchase_type` - purchase_type\n* `purchase_items` - purchase_items\n* `payout` - payout\n* `applied_credits` - applied_credits\n* `charges` - charges\n* `updated_at` - updated_at\n* `legacy_mapping` - legacy_mapping", "x-spec-enum-id": "7e7898caab001a75" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "payment_processors": { "type": "array", "items": { "type": "integer" } }, "purchase_types": { "type": "array", "items": { "enum": [ "class", "course", "course_session", "membership", "store" ], "type": "string", "description": "* `class` - class\n* `course` - course\n* `course_session` - course_session\n* `membership` - membership\n* `store` - store", "x-spec-enum-id": "e151cefcdf6191ed" } }, "status": { "type": "string" }, "due_date_gte": { "type": "string", "format": "date" }, "due_date_lte": { "type": "string", "format": "date" }, "due_date_timeframe": { "type": "string" }, "updated_at_gte": { "type": "string", "format": "date-time" }, "updated_at_lte": { "type": "string", "format": "date-time" }, "confirmed_at_gte": { "type": "string", "format": "date-time" }, "confirmed_at_lte": { "type": "string", "format": "date-time" }, "paid_at_gte": { "type": "string", "format": "date-time" }, "paid_at_lte": { "type": "string", "format": "date-time" }, "paid_at_timeframe": { "type": "string" }, "customer_memberships": { "type": "array", "items": { "type": "integer" } }, "discount_applied": { "type": "boolean" }, "credit_applied": { "type": "boolean" } }, "title": "InvoicesParamsRequest" }, "Job": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "job" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "result_url": { "type": "string", "format": "uri" }, "total_items": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "complete_items": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "required": [ "id", "object", "result_url", "total_items" ], "title": "Job" }, "JoiningFee": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "joining_fee" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "applies_to": { "enum": [ "all", "new_customers" ], "type": "string", "x-spec-enum-id": "a854e4ea60f05c8d", "readOnly": true, "description": "Who is charged the fee: every customer, or only customers the business still counts as new.\n\n* `all` - All\n* `new_customers` - New Customers" } }, "required": [ "amount", "applies_to", "id", "object" ], "title": "JoiningFee" }, "KisiConfig": { "type": "object", "properties": { "object": { "enum": [ "kisi_config" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "api_key": { "type": "string", "nullable": true, "maxLength": 100 }, "enabled": { "type": "boolean", "readOnly": true }, "organization_name": { "type": "string", "readOnly": true } }, "required": [ "api_key", "enabled", "object", "organization_name" ], "title": "KisiConfig" }, "KisiConfigRequest": { "type": "object", "properties": { "api_key": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 100 } }, "required": [ "api_key" ], "title": "KisiConfigRequest" }, "KisiGroup": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "kisi_group" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "readOnly": true }, "exclude_blocked_customer_memberships": { "type": "boolean" }, "before_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "after_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "allow_full_day_offering_access": { "type": "boolean" }, "synced_memberships": { "oneOf": [ { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipRead[]", "items": { "$ref": "#/components/schemas/MembershipRead" } } ] }, "synced_offering_types": { "oneOf": [ { "type": "string", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "OfferingTypeRead[]", "items": { "$ref": "#/components/schemas/OfferingTypeRead" } } ] } }, "required": [ "after_offering_start_leeway_minutes", "before_offering_start_leeway_minutes", "id", "name", "object" ], "title": "KisiGroup" }, "KisiGroupRequest": { "type": "object", "properties": { "exclude_blocked_customer_memberships": { "type": "boolean" }, "before_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "after_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "allow_full_day_offering_access": { "type": "boolean" }, "synced_memberships": { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." } }, "synced_offering_types": { "type": "string" } }, "required": [ "after_offering_start_leeway_minutes", "before_offering_start_leeway_minutes" ], "title": "KisiGroupRequest" }, "LeadForm": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "lead_form" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "uuid": { "type": "string", "format": "uuid", "readOnly": true, "nullable": true, "description": "Public UUID used to embed or reference this form on external pages." }, "name": { "type": "string", "maxLength": 255 }, "description": { "type": "string", "nullable": true }, "lead_source": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/LeadSource" } ] }, "redirect_url": { "type": "string", "format": "uri", "nullable": true, "description": "URL to redirect the customer to after a successful form submission.", "maxLength": 200 }, "send_invite_email": { "type": "boolean", "description": "Whether to send a TeamUp account invite email after a successful submission." } }, "required": [ "id", "name", "object", "uuid" ], "title": "LeadForm" }, "LeadFormCustomerField": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "lead_form_customer_field" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer_field": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerField" } ] }, "order": { "type": "integer", "readOnly": true } }, "required": [ "customer_field", "id", "object", "order" ], "title": "LeadFormCustomerField" }, "LeadFormCustomerFieldRequest": { "type": "object", "properties": { "customer_field": { "type": "integer" } }, "required": [ "customer_field" ], "title": "LeadFormCustomerFieldRequest" }, "LeadFormRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "description": { "type": "string", "nullable": true, "minLength": 1 }, "lead_source": { "type": "integer", "nullable": true }, "redirect_url": { "type": "string", "format": "uri", "nullable": true, "description": "URL to redirect the customer to after a successful form submission.", "maxLength": 200 }, "send_invite_email": { "type": "boolean", "description": "Whether to send a TeamUp account invite email after a successful submission." }, "customer_fields": { "type": "array", "items": { "$ref": "#/components/schemas/LeadFormCustomerFieldRequest" }, "writeOnly": true } }, "required": [ "name" ], "title": "LeadFormRequest" }, "LeadFormSubmitRequest": { "type": "object", "properties": { "first_name": { "type": "string", "minLength": 1 }, "last_name": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email", "minLength": 1 }, "customer_field_values": { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" } }, "required": [ "email", "first_name", "last_name" ], "title": "LeadFormSubmitRequest" }, "LeadFormSubmitResponse": { "type": "object", "properties": { "customer": { "type": "string", "readOnly": true, "description": "The `id` of the customer created by the submission." } }, "required": [ "customer" ], "title": "LeadFormSubmitResponse" }, "LeadSource": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "lead_source" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 255 }, "slug": { "type": "string", "nullable": true, "description": "URL-safe slug derived from the lead source name.", "maxLength": 255 }, "archived": { "type": "boolean", "description": "Whether this lead source is archived and hidden from new selections." } }, "required": [ "id", "name", "object" ], "title": "LeadSource" }, "LeadSourceRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "slug": { "type": "string", "nullable": true, "description": "URL-safe slug derived from the lead source name.", "maxLength": 255 }, "archived": { "type": "boolean", "description": "Whether this lead source is archived and hidden from new selections." } }, "required": [ "name" ], "title": "LeadSourceRequest" }, "LeaveWaitlistParams": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "LeaveWaitlistParams" }, "LeaveWaitlistParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "LeaveWaitlistParamsRequest" }, "M2MTokenRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "m2m_token" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "application": { "type": "integer", "readOnly": true }, "token": { "type": "string", "readOnly": true }, "created_at": { "type": "string", "format": "date-time" }, "expires_at": { "type": "string", "format": "date-time", "readOnly": true, "nullable": true }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } }, "readOnly": true }, "is_read_only": { "type": "boolean", "readOnly": true } }, "required": [ "application", "created_at", "expires_at", "id", "is_read_only", "object", "permissions", "token" ], "title": "M2MTokenRead" }, "M2MTokenWriteRequest": { "type": "object", "properties": { "application": { "type": "integer" }, "expires_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Explicit datetime when the token expires. Null means it never expires." }, "permissions": { "type": "array", "items": { "enum": [ "email_notifications", "revenue", "attendances", "super_admin", "customers", "discount_codes", "manage_events", "store", "developer", "customer_payments", "instructor_attendances", "instructor_manage_events", "pos", "crm_all_customer_records", "crm_own_customer_records", "crm_lifecycle_status_admin", "perform_by_boxmate", "marketing_suite" ], "type": "string", "description": "* `email_notifications` - email_notifications\n* `revenue` - revenue\n* `attendances` - attendances\n* `super_admin` - super_admin\n* `customers` - customers\n* `discount_codes` - discount_codes\n* `manage_events` - manage_events\n* `store` - store\n* `developer` - developer\n* `customer_payments` - customer_payments\n* `instructor_attendances` - instructor_attendances\n* `instructor_manage_events` - instructor_manage_events\n* `pos` - pos\n* `crm_all_customer_records` - crm_all_customer_records\n* `crm_own_customer_records` - crm_own_customer_records\n* `crm_lifecycle_status_admin` - crm_lifecycle_status_admin\n* `perform_by_boxmate` - perform_by_boxmate\n* `marketing_suite` - marketing_suite", "x-spec-enum-id": "937285b060a807d0" }, "nullable": true, "description": "List of ProviderUserPermissions values to grant. Null or omitted means all permissions (super_admin)." }, "is_read_only": { "type": "boolean", "description": "If true, the token can only read data: requests that create, update, or delete data are rejected. Defaults to false on create." } }, "title": "M2MTokenWriteRequest" }, "MarketingSuiteConfig": { "type": "object", "properties": { "object": { "enum": [ "marketing_suite_config" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "active", "disabled" ], "readOnly": true }, "status_updated_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "object", "status" ], "title": "MarketingSuiteConfig" }, "MarketingSuiteLaunchSSO": { "type": "object", "properties": { "sso_url": { "type": "string", "nullable": true } }, "required": [ "sso_url" ], "title": "MarketingSuiteLaunchSSO" }, "MembershipAllotmentRead": { "type": "object", "properties": { "ignore_no_shows": { "type": "boolean" }, "period_limits": { "type": "array", "items": { "$ref": "#/components/schemas/PeriodLimitRead" } }, "types": { "type": "array", "items": { "enum": [ "event", "course" ], "type": "string" }, "readOnly": true } }, "required": [ "ignore_no_shows", "period_limits", "types" ], "title": "MembershipAllotmentRead" }, "MembershipAllotmentUpdateRequest": { "type": "object", "properties": { "ignore_no_shows": { "type": "boolean", "default": false }, "types": { "type": "array", "items": { "type": "string", "description": "The type of offerings usable with this membership. One of: `event`, `class`, `course`." }, "minItems": 1 }, "period_limits": { "type": "array", "items": { "$ref": "#/components/schemas/PeriodLimitUpdateRequest" } } }, "required": [ "period_limits", "types" ], "title": "MembershipAllotmentUpdateRequest" }, "MembershipCategoryCreateRequest": { "type": "object", "properties": { "provider": { "type": "string", "nullable": true }, "name": { "type": "string", "minLength": 1, "title": "Category Name", "maxLength": 256 }, "order": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "required": [ "name" ], "title": "MembershipCategoryCreateRequest" }, "MembershipCategoryRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_category" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "title": "Category Name", "maxLength": 256 }, "order": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "memberships_count": { "type": "integer", "readOnly": true, "description": "How many memberships in this category the requester may see: for a customer, those on sale and visible to them; for a provider, all of them. Always the whole category, so a paginated membership list can be counted without loading every page." } }, "required": [ "id", "memberships_count", "name", "object" ], "title": "MembershipCategoryRead" }, "MembershipCategoryUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "title": "Category Name", "maxLength": 256 }, "order": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "required": [ "name" ], "title": "MembershipCategoryUpdateRequest" }, "MembershipPaymentPlanCreateRequest": { "type": "object", "properties": { "membership": { "type": "integer" }, "price": { "type": "string", "example": "10.99" }, "billing_period_length": { "type": "integer", "minimum": 1 }, "billing_period_unit": { "type": "string", "enum": [ "months", "weeks" ] }, "committed_billing_periods": { "type": "integer", "minimum": 1, "nullable": true }, "fixed_billing_day_of_month": { "type": "integer", "maximum": 31, "minimum": 1 }, "fixed_billing_day_of_week": { "type": "string", "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "commitment_expiration_scheme": { "type": "string", "enum": [ "stop_contract", "renew_contract", "continue_by_period" ], "default": "continue_by_period" }, "cancellation_notice_days": { "type": "integer", "nullable": true } }, "required": [ "billing_period_length", "billing_period_unit", "membership", "price" ], "title": "MembershipPaymentPlanCreateRequest" }, "MembershipPaymentPlanRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_payment_plan" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "for_sale", "unavailable" ] }, "membership": { "type": "integer" }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "billing_period_length": { "type": "integer" }, "billing_period_unit": { "type": "string", "enum": [ "months", "weeks" ] }, "committed_billing_periods": { "type": "integer", "minimum": 1, "nullable": true }, "fixed_billing_day_of_month": { "type": "integer" }, "fixed_billing_day_of_week": { "type": "string", "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "commitment_expiration_scheme": { "type": "string", "enum": [ "stop_contract", "renew_contract", "continue_by_period" ], "default": "continue_by_period" }, "cancellation_notice_days": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "enrollment_schedule": { "type": "string", "enum": [ "purchase_date", "next_possible_prorate" ] }, "duration_description": { "type": "string", "readOnly": true }, "price_with_period": { "type": "string", "readOnly": true }, "joining_fee": { "$ref": "#/components/schemas/JoiningFee", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "billing_period_length", "billing_period_unit", "committed_billing_periods", "duration_description", "enrollment_schedule", "fixed_billing_day_of_month", "fixed_billing_day_of_week", "id", "membership", "object", "price", "price_with_period", "status" ], "title": "MembershipPaymentPlanRead" }, "MembershipPaymentPlanUpdateRequest": { "type": "object", "properties": { "cancellation_notice_days": { "type": "integer", "nullable": true }, "price": { "type": "string", "example": "10.99" }, "status": { "type": "string", "enum": [ "for_sale", "unavailable" ] } }, "required": [ "cancellation_notice_days", "price", "status" ], "title": "MembershipPaymentPlanUpdateRequest" }, "MembershipPenaltyMessageRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_penalty_message" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "email_template": { "$ref": "#/components/schemas/EmailTemplate" }, "trigger_type": { "type": "string", "enum": [ "non_penalized_infraction", "penalty" ] }, "penalty_systems": { "oneOf": [ { "type": "array", "items": { "type": "integer", "description": "The unique identifier of the membership penalty system." }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipPenaltySystemRead[]", "items": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } } ] } }, "required": [ "email_template", "id", "object", "penalty_systems", "trigger_type" ], "title": "MembershipPenaltyMessageRead" }, "MembershipPenaltyMessageWriteRequest": { "type": "object", "properties": { "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "trigger_type": { "type": "string", "enum": [ "non_penalized_infraction", "penalty" ] }, "penalty_systems": { "type": "array", "items": { "type": "integer", "description": "The unique identifier of the membership penalty system." } } }, "required": [ "email_template", "penalty_systems", "trigger_type" ], "title": "MembershipPenaltyMessageWriteRequest" }, "MembershipPenaltyRule": { "type": "object", "properties": { "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "max_infractions": { "type": "integer", "minimum": 1 }, "days": { "type": "integer", "minimum": 5 } }, "required": [ "days", "max_infractions", "price" ], "title": "MembershipPenaltyRule" }, "MembershipPenaltyRuleRequest": { "type": "object", "properties": { "price": { "type": "string", "example": "10.99" }, "max_infractions": { "type": "integer", "minimum": 1 }, "days": { "type": "integer", "minimum": 5 } }, "required": [ "days", "max_infractions", "price" ], "title": "MembershipPenaltyRuleRequest" }, "MembershipPenaltySystemRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_penalty_system" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "memberships": { "oneOf": [ { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipRead[]", "items": { "$ref": "#/components/schemas/MembershipRead" } } ] }, "name": { "type": "string", "description": "The system's name." }, "status": { "type": "string", "enum": [ "active", "archived" ], "description": "The system's status." }, "no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRule" } ], "description": "The rule to apply for no-shows." }, "late_cancel_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRule" } ], "description": "The rule to apply for late-cancels." }, "late_cancel_or_no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRule" } ], "description": "The rule to apply for late-cancels or no-shows." }, "deferred_charge_days": { "type": "integer", "description": "The number of days to wait after a penalty is issued before charging a customer." }, "archived_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "archived_at", "deferred_charge_days", "id", "late_cancel_or_no_show_rule", "late_cancel_rule", "memberships", "name", "no_show_rule", "object", "status" ], "title": "MembershipPenaltySystemRead" }, "MembershipPenaltySystemReadRequest": { "type": "object", "properties": { "memberships": { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." } }, "name": { "type": "string", "minLength": 1, "description": "The system's name." }, "status": { "type": "string", "enum": [ "active", "archived" ], "description": "The system's status." }, "no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "description": "The rule to apply for no-shows." }, "late_cancel_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "description": "The rule to apply for late-cancels." }, "late_cancel_or_no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "description": "The rule to apply for late-cancels or no-shows." }, "deferred_charge_days": { "type": "integer", "description": "The number of days to wait after a penalty is issued before charging a customer." }, "archived_at": { "type": "string", "format": "date-time", "nullable": true } }, "required": [ "archived_at", "deferred_charge_days", "late_cancel_or_no_show_rule", "late_cancel_rule", "memberships", "name", "no_show_rule", "status" ], "title": "MembershipPenaltySystemReadRequest" }, "MembershipPenaltySystemWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "The system's name." }, "memberships": { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." } }, "status": { "type": "string", "enum": [ "active", "archived" ], "default": null, "description": "The system's status." }, "no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for no-shows." }, "late_cancel_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for late-cancels." }, "late_cancel_or_no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for late-cancels or no-shows." }, "deferred_charge_days": { "type": "integer", "default": 1, "description": "The number of days to wait after a penalty is issued before charging a customer." } }, "required": [ "memberships", "name" ], "title": "MembershipPenaltySystemWriteRequest" }, "MembershipRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "pack", "recurring_plan", "prepaid_plan" ] }, "name": { "type": "string" }, "description": { "type": "string", "readOnly": true }, "begin_on_first_registration": { "type": "boolean" }, "start_date": { "type": "string", "format": "date", "nullable": true }, "expiration_date": { "type": "string", "format": "date", "nullable": true }, "duration": { "type": "integer" }, "duration_unit": { "type": "string", "enum": [ "days", "weeks", "months" ], "default": "days" }, "one_time_fee": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "display_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "use_prorate": { "type": "boolean" }, "category": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/MembershipCategoryRead" } ] }, "is_dropin": { "type": "boolean", "readOnly": true }, "for_sale": { "type": "boolean", "readOnly": true }, "has_active_members": { "type": "boolean", "readOnly": true }, "active_member_count": { "type": "integer" }, "allow_repeat_purchases": { "type": "boolean", "description": "Whether customers can purchase this membership multiple times." }, "visible_to_customers": { "type": "boolean", "description": "Whether this membership is visible to customers." }, "purchasable_only_by_provider": { "type": "boolean", "description": "Whether only the provider can purchase this membership." }, "new_customers_only": { "type": "boolean", "description": "Whether only new customers can purchase this membership." }, "penalty_system": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } ] }, "allotment": { "type": "string", "format": "uri", "readOnly": true }, "plans": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipPaymentPlanRead[]", "items": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } } ] }, "terms": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipTermsRead[]", "items": { "$ref": "#/components/schemas/MembershipTermsRead" } } ] }, "is_draft": { "type": "boolean", "readOnly": true }, "incomplete_reasons": { "type": "array", "items": { "type": "string" }, "readOnly": true }, "shareable": { "type": "boolean" } }, "required": [ "active_member_count", "allotment", "allow_repeat_purchases", "begin_on_first_registration", "category", "description", "display_price", "duration", "for_sale", "has_active_members", "id", "incomplete_reasons", "is_draft", "is_dropin", "name", "new_customers_only", "object", "one_time_fee", "plans", "price", "purchasable_only_by_provider", "terms", "type", "use_prorate", "visible_to_customers" ], "title": "MembershipRead" }, "MembershipRegistrationGrant": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_registration_grant" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "membership": { "type": "integer" }, "registration_option": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/RegistrationOption" } ] }, "on_allotment_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } } }, "required": [ "id", "membership", "object", "on_allotment_price", "registration_option" ], "title": "MembershipRegistrationGrant" }, "MembershipRegistrationGrantRequest": { "type": "object", "properties": { "membership": { "type": "integer" }, "registration_option": { "type": "integer" }, "on_allotment_price": { "type": "string", "example": "10.99" } }, "required": [ "membership", "on_allotment_price", "registration_option" ], "title": "MembershipRegistrationGrantRequest" }, "MembershipTermsRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "membership_terms" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "membership": { "type": "integer" }, "plan": { "type": "integer", "nullable": true }, "base_terms": { "type": "string" } }, "required": [ "base_terms", "id", "membership", "object" ], "title": "MembershipTermsRead" }, "MembershipTermsUpdateRequest": { "type": "object", "properties": { "base_terms": { "type": "string", "minLength": 1 } }, "required": [ "base_terms" ], "title": "MembershipTermsUpdateRequest" }, "MembershipWriteRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "type": { "enum": [ "recurring_plan" ], "type": "string", "x-spec-enum-id": "e3b1481cce808170", "writeOnly": true, "description": "The type of membership to create. Required when creating a new membership. Cannot be altered when updating an existing membership.\n\n* `recurring_plan` - recurring_plan" }, "description": { "type": "string", "nullable": true }, "category": { "type": "integer" }, "for_sale": { "type": "boolean", "default": true }, "allow_repeat_purchases": { "type": "boolean" }, "visible_to_customers": { "type": "boolean" }, "purchasable_only_by_provider": { "type": "boolean" }, "new_customers_only": { "type": "boolean" } }, "required": [ "allow_repeat_purchases", "category", "name", "new_customers_only", "purchasable_only_by_provider", "visible_to_customers" ], "title": "RecurringPlanWrite" }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "type": { "enum": [ "pack" ], "type": "string", "x-spec-enum-id": "e74fa1459299bd47", "writeOnly": true, "description": "The type of membership to create. Required when creating a new membership. Cannot be altered when updating an existing membership.\n\n* `pack` - pack" }, "description": { "type": "string", "nullable": true }, "category": { "type": "integer" }, "for_sale": { "type": "boolean", "default": true }, "allow_repeat_purchases": { "type": "boolean" }, "visible_to_customers": { "type": "boolean" }, "purchasable_only_by_provider": { "type": "boolean" }, "new_customers_only": { "type": "boolean" }, "one_time_fee": { "type": "string", "example": "10.99" }, "begin_on_first_registration": { "type": "boolean", "default": false }, "duration": { "type": "integer", "minimum": 1 }, "duration_unit": { "type": "string", "enum": [ "days", "weeks", "months" ], "default": "days" }, "start_date": { "type": "string", "format": "date", "nullable": true }, "expiration_date": { "type": "string", "format": "date", "nullable": true } }, "required": [ "allow_repeat_purchases", "category", "name", "new_customers_only", "one_time_fee", "purchasable_only_by_provider", "visible_to_customers" ], "title": "PackWrite" }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "type": { "enum": [ "prepaid_plan" ], "type": "string", "x-spec-enum-id": "903a37fcd38a7872", "writeOnly": true, "description": "The type of membership to create. Required when creating a new membership. Cannot be altered when updating an existing membership.\n\n* `prepaid_plan` - prepaid_plan" }, "description": { "type": "string", "nullable": true }, "category": { "type": "integer" }, "for_sale": { "type": "boolean", "default": true }, "allow_repeat_purchases": { "type": "boolean" }, "visible_to_customers": { "type": "boolean" }, "purchasable_only_by_provider": { "type": "boolean" }, "new_customers_only": { "type": "boolean" }, "one_time_fee": { "type": "string", "example": "10.99" }, "begin_on_first_registration": { "type": "boolean", "default": false }, "duration": { "type": "integer", "minimum": 1 }, "duration_unit": { "type": "string", "enum": [ "days", "weeks", "months" ], "default": "days" }, "start_date": { "type": "string", "format": "date", "nullable": true }, "expiration_date": { "type": "string", "format": "date", "nullable": true }, "use_prorate": { "type": "boolean", "default": false } }, "required": [ "allow_repeat_purchases", "category", "name", "new_customers_only", "one_time_fee", "purchasable_only_by_provider", "visible_to_customers" ], "title": "PrepaidPlanWrite" } ], "title": "MembershipWriteRequest" }, "MissingFormsWaiversPushScheduleRead": { "type": "object", "properties": { "frequency": { "type": "string", "enum": [ "once", "recurring" ], "nullable": true, "description": "Null until the provider selects a value. Nothing sends while null." }, "resend_interval_days": { "type": "integer", "nullable": true } }, "required": [ "frequency", "resend_interval_days" ], "title": "MissingFormsWaiversPushScheduleRead" }, "MissingFormsWaiversPushScheduleWriteRequest": { "type": "object", "properties": { "frequency": { "type": "string", "enum": [ "once", "recurring" ] }, "resend_interval_days": { "type": "integer", "minimum": 1, "nullable": true } }, "title": "MissingFormsWaiversPushScheduleWriteRequest" }, "MissingFormsWaiversSettingsRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "enabled": { "type": "boolean" }, "frequency": { "type": "string", "enum": [ "manual_only", "once", "recurring" ] }, "resend_interval_days": { "type": "integer", "nullable": true }, "email_template": { "type": "object", "additionalProperties": {}, "readOnly": true } }, "required": [ "email_template", "enabled", "frequency", "id", "resend_interval_days" ], "title": "MissingFormsWaiversSettingsRead" }, "MissingRequisites": { "type": "object", "properties": { "missing_forms": { "type": "string", "readOnly": true }, "missing_waivers": { "type": "string", "readOnly": true }, "missing_requisites_workflow_url": { "type": "string", "readOnly": true } }, "required": [ "missing_forms", "missing_requisites_workflow_url", "missing_waivers" ], "title": "MissingRequisites" }, "NoshowAttendanceParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer", "description": "The unique numeric identifier of the customer whose attendance to mark as no-show." } }, "required": [ "customer" ], "title": "NoshowAttendanceParamsRequest" }, "NotificationPreferenceRead": { "type": "object", "properties": { "id": { "type": "integer", "nullable": true }, "object": { "enum": [ "customer_notification_preference" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "readOnly": true }, "description": { "type": "string" }, "sms_enabled": { "type": "boolean", "readOnly": true }, "email_enabled": { "type": "boolean", "readOnly": true }, "push_enabled": { "type": "boolean", "readOnly": true }, "capabilities": { "type": "object", "additionalProperties": {}, "description": "For a notification to be SMS-compatible the following must be true:\n- provider has enabled the SMS integration\n- provider has enabled SMS for the specific notif type\n- the notif type must be SMS compatible\n\nA type that is listed only for push (it is not in\n``email_sms_types``) offers neither email nor SMS.\n\n``push`` is present only while PUSH_NOTIFICATION_PREFERENCES is on.", "readOnly": true }, "toggleability": { "type": "object", "additionalProperties": {}, "readOnly": true } }, "required": [ "capabilities", "description", "email_enabled", "id", "object", "sms_enabled", "toggleability", "type" ], "title": "NotificationPreferenceRead" }, "NotifyChannelOptionRequest": { "type": "object", "properties": { "send": { "type": "boolean", "default": false }, "message": { "type": "string", "nullable": true, "minLength": 1 } }, "title": "NotifyChannelOptionRequest" }, "NotifyOptionsRequest": { "type": "object", "properties": { "email": { "allOf": [ { "$ref": "#/components/schemas/NotifyChannelOptionRequest" } ], "nullable": true } }, "title": "NotifyOptionsRequest" }, "OKSuccess": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "OK" ], "description": "Constant value: OK" }, "detail": { "type": "string", "readOnly": true, "nullable": true } }, "required": [ "detail", "status" ], "title": "OKSuccess" }, "OfferingTypeCategoryRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "offering_type_category" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "title": "Category Name", "maxLength": 256 }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true } }, "required": [ "id", "image", "name", "object" ], "title": "OfferingTypeCategoryRead" }, "OfferingTypeLimitRead": { "type": "object", "properties": { "max_uses": { "type": "integer" }, "is_extra": { "type": "boolean" }, "allow_zero": { "type": "boolean" }, "offering_type": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "readOnly": true } }, "required": [ "allow_zero", "is_extra", "max_uses", "offering_type" ], "title": "OfferingTypeLimitRead" }, "OfferingTypeLimitUpdateRequest": { "type": "object", "properties": { "offering_type": { "type": "integer" }, "max_uses": { "type": "integer" }, "is_extra": { "type": "boolean" } }, "required": [ "is_extra", "max_uses", "offering_type" ], "title": "OfferingTypeLimitUpdateRequest" }, "OfferingTypeRead": { "type": "object", "properties": { "allows_dropins": { "type": "boolean" }, "appointment_settings": { "oneOf": [ { "$ref": "#/components/schemas/AppointmentSettingsRead", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "default_venue": { "type": "integer", "readOnly": true }, "default_venue_rooms": { "type": "array", "items": { "type": "integer" }, "readOnly": true } }, "required": [ "default_venue", "default_venue_rooms", "duration" ] } ] }, "background_color": { "type": "string", "readOnly": true }, "cancellation_notice_interval": { "type": "integer", "description": "The duration in minutes.", "default": 0 }, "category": { "oneOf": [ { "type": "integer", "readOnly": true, "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeCategoryRead" } ] }, "color": { "type": "string", "readOnly": true }, "customer_visibility": { "enum": [ "public", "membership_holders", "private" ], "type": "string", "readOnly": true }, "description": { "type": "string", "nullable": true }, "dropin_price": { "type": "string", "readOnly": true }, "has_active_schedules": { "type": "boolean", "readOnly": true }, "has_pricing": { "type": "boolean", "readOnly": true }, "id": { "type": "integer", "readOnly": true }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "instructors": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "Instructor[]", "items": { "$ref": "#/components/schemas/Instructor" } } ] }, "is_draft": { "type": "boolean", "readOnly": true }, "max_allowed_age": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true, "description": "Can be no older than this many years to register" }, "memberships_count": { "type": "integer", "readOnly": true }, "memberships_summary_description": { "type": "string", "readOnly": true }, "min_allowed_age": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true, "description": "Must be at least this many years old to register" }, "name": { "type": "string", "maxLength": 256 }, "object": { "enum": [ "offering_type" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "order": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "registrations_close_interval": { "type": "integer", "description": "The duration in minutes.", "default": 0 }, "registrations_open_interval": { "type": "integer", "description": "The duration in minutes.", "default": 0 }, "room_rental_settings": { "oneOf": [ { "$ref": "#/components/schemas/RoomRentalSettingsRead", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "room_uniformity": { "type": "boolean", "readOnly": true } }, "required": [ "duration", "room_uniformity" ] } ] }, "schedule_type": { "type": "string" }, "status": { "enum": [ "active", "archived", "unknown" ], "type": "string", "readOnly": true }, "waitlist_max": { "type": "integer", "maximum": 65535, "minimum": 0, "nullable": true, "title": "Waitlist maximum" }, "availability_schedule_offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingType" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "memberships": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "registration_timelines": { "type": "array", "items": { "$ref": "#/components/schemas/RegistrationTimelineRead" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "allows_dropins", "appointment_settings", "background_color", "category", "color", "customer_visibility", "dropin_price", "has_active_schedules", "has_pricing", "id", "image", "instructors", "is_draft", "memberships_count", "memberships_summary_description", "name", "object", "room_rental_settings", "schedule_type", "status" ], "title": "OfferingTypeRead" }, "OfferingTypeUpdateRequest": { "type": "object", "properties": { "appointment_settings": { "$ref": "#/components/schemas/AppointmentSettingsRequest" }, "cancellation_notice_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": 0, "default": 0 }, "customer_visibility": { "enum": [ "public", "private", "membership_holders" ], "type": "string", "description": "* `public` - public\n* `private` - private\n* `membership_holders` - membership_holders", "x-spec-enum-id": "f22a2988c19c89ad", "default": "public" }, "description": { "type": "string", "nullable": true }, "dropin_price_decimal": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,6}(?:\\.\\d{0,2})?$", "nullable": true }, "image": { "type": "integer", "nullable": true }, "memberships": { "type": "array", "items": { "type": "integer" } }, "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 }, "registrations_close_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": -525600, "default": 0 }, "registrations_open_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": 0, "default": 0 }, "room_rental_settings": { "$ref": "#/components/schemas/RoomRentalSettingsRequest" }, "status": { "enum": [ "active", "archived" ], "type": "string", "description": "* `active` - active\n* `archived` - archived", "x-spec-enum-id": "4a823d7dfdb80c49", "default": "active" } }, "required": [ "name" ], "title": "OfferingTypeUpdateRequest" }, "OnlyCustomer": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "title": "OnlyCustomer" }, "OrderCheckoutRead": { "type": "object", "properties": { "next_url": { "type": "string", "format": "uri" } }, "required": [ "next_url" ], "title": "OrderCheckoutRead" }, "OrderCheckoutRequest": { "type": "object", "properties": { "order": { "type": "integer" }, "return_to": { "type": "string", "format": "uri", "minLength": 1 } }, "required": [ "order" ], "title": "OrderCheckoutRequest" }, "OrderCreateRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "comments": { "type": "string" } }, "required": [ "customer" ], "title": "OrderCreateRequest" }, "OrderItemCreateRequest": { "type": "object", "properties": { "order": { "type": "integer" }, "product_variant": { "type": "integer" }, "quantity": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "required": [ "order", "product_variant", "quantity" ], "title": "OrderItemCreateRequest" }, "OrderItemRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_order_item" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string" }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "quantity": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "product_variant": { "oneOf": [ { "type": "integer", "title": "ExpandableField", "description": "*This field is* `EXPANDABLE`.", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProductVariantRead" } ] }, "created_at": { "type": "string", "format": "date-time" }, "order": { "type": "integer" }, "delivery_status": { "type": "string", "readOnly": true } }, "required": [ "created_at", "delivery_status", "id", "name", "object", "order", "price", "product_variant", "quantity" ], "title": "OrderItemRead" }, "OrderItemReadRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "price": { "type": "string", "example": "10.99" }, "quantity": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "product_variant": { "type": "integer", "title": "Product" }, "created_at": { "type": "string", "format": "date-time" }, "order": { "type": "integer" } }, "required": [ "created_at", "name", "order", "price", "product_variant", "quantity" ], "title": "OrderItemReadRequest" }, "OrderItemUpdateRequest": { "type": "object", "properties": { "quantity": { "type": "integer", "minimum": 0 } }, "required": [ "quantity" ], "title": "OrderItemUpdateRequest" }, "OrderRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_order" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "number": { "type": "string" }, "cart_uuid": { "type": "string", "readOnly": true }, "customer": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "comments": { "type": "string" }, "status": { "type": "string", "enum": [ "cart", "items_locked", "payment_confirmed", "complete", "cancelled" ] }, "created_at": { "type": "string", "format": "date-time" }, "modified_at": { "type": "string", "format": "date-time" }, "locked_at": { "type": "string", "format": "date-time", "nullable": true }, "completed_at": { "type": "string", "format": "date-time" }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "total_price_for_display": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "items": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "OrderItemRead[]", "items": { "$ref": "#/components/schemas/OrderItemRead" } } ] }, "is_delivered": { "type": "boolean", "readOnly": true }, "is_payment_confirmed": { "type": "boolean", "readOnly": true }, "payment_confirmed_at": { "type": "string", "format": "date-time" }, "items_count": { "type": "integer", "readOnly": true } }, "required": [ "cart_uuid", "completed_at", "created_at", "id", "is_delivered", "is_payment_confirmed", "items", "items_count", "modified_at", "number", "object", "payment_confirmed_at", "status", "total_price", "total_price_for_display" ], "title": "OrderRead" }, "OrderReadRequest": { "type": "object", "properties": { "number": { "type": "string", "minLength": 1 }, "customer": { "type": "integer", "nullable": true }, "comments": { "type": "string" }, "status": { "type": "string", "enum": [ "cart", "items_locked", "payment_confirmed", "complete", "cancelled" ] }, "created_at": { "type": "string", "format": "date-time" }, "modified_at": { "type": "string", "format": "date-time" }, "locked_at": { "type": "string", "format": "date-time", "nullable": true }, "completed_at": { "type": "string", "format": "date-time" }, "total_price": { "type": "string", "example": "10.99" }, "total_price_for_display": { "type": "string", "example": "10.99" }, "payment_confirmed_at": { "type": "string", "format": "date-time" } }, "required": [ "completed_at", "created_at", "modified_at", "number", "payment_confirmed_at", "status", "total_price", "total_price_for_display" ], "title": "OrderReadRequest" }, "PaginatedApplicationReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ApplicationRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedApplicationReadList" }, "PaginatedAttendanceReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/AttendanceRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedAttendanceReadList" }, "PaginatedAvailabilityScheduleList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilitySchedule" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedAvailabilityScheduleList" }, "PaginatedAvailabilityScheduleOfferingTypeList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityScheduleOfferingType" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedAvailabilityScheduleOfferingTypeList" }, "PaginatedBulkActionResultList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/BulkActionResult" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedBulkActionResultList" }, "PaginatedBusinessAdvisorReportList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/BusinessAdvisorReport" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedBusinessAdvisorReportList" }, "PaginatedBusinessClosureList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/BusinessClosure" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedBusinessClosureList" }, "PaginatedCRMBulkStatusEvaluationList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMBulkStatusEvaluation" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMBulkStatusEvaluationList" }, "PaginatedCRMInteractionReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMInteractionRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMInteractionReadList" }, "PaginatedCRMStatusChangeList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMStatusChange" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMStatusChangeList" }, "PaginatedCRMStatusReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMStatusRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMStatusReadList" }, "PaginatedCRMWorkflowActionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowAction" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMWorkflowActionList" }, "PaginatedCRMWorkflowReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCRMWorkflowReadList" }, "PaginatedCalendarSourceAccountReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CalendarSourceAccountRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCalendarSourceAccountReadList" }, "PaginatedCalendarSourceEventReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CalendarSourceEventRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCalendarSourceEventReadList" }, "PaginatedContentCollectionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ContentCollection" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedContentCollectionList" }, "PaginatedContentFilterList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ContentFilter" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedContentFilterList" }, "PaginatedContentList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/Content" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedContentList" }, "PaginatedCourseReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CourseRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCourseReadList" }, "PaginatedCourseSeriesReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CourseSeriesRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCourseSeriesReadList" }, "PaginatedCourseSessionAttendanceList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CourseSessionAttendance" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCourseSessionAttendanceList" }, "PaginatedCourseSessionReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CourseSessionRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCourseSessionReadList" }, "PaginatedCustomerFieldList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerField" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerFieldList" }, "PaginatedCustomerFieldValueReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFieldValueRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerFieldValueReadList" }, "PaginatedCustomerFormReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFormRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerFormReadList" }, "PaginatedCustomerFormSubmissionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerFormSubmission" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerFormSubmissionList" }, "PaginatedCustomerIssueReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerIssueRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerIssueReadList" }, "PaginatedCustomerMembershipHoldList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerMembershipHold" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerMembershipHoldList" }, "PaginatedCustomerMembershipReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerMembershipRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerMembershipReadList" }, "PaginatedCustomerReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerReadList" }, "PaginatedCustomerRegistrationBlockReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerRegistrationBlockRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerRegistrationBlockReadList" }, "PaginatedCustomerSegmentReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/CustomerSegmentRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedCustomerSegmentReadList" }, "PaginatedDiscountCodeApplicabilityReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/DiscountCodeApplicabilityRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedDiscountCodeApplicabilityReadList" }, "PaginatedDiscountCodeGroupReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/DiscountCodeGroupRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedDiscountCodeGroupReadList" }, "PaginatedDiscountCodeReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/DiscountCodeRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedDiscountCodeReadList" }, "PaginatedEmbedWidgetReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/EmbedWidgetRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedEmbedWidgetReadList" }, "PaginatedEventPushScheduleReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/EventPushScheduleRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedEventPushScheduleReadList" }, "PaginatedEventReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/EventRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedEventReadList" }, "PaginatedFamilyInviteReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/FamilyInviteRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedFamilyInviteReadList" }, "PaginatedGympassVenueMappingReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/GympassVenueMappingRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedGympassVenueMappingReadList" }, "PaginatedInstructorList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/Instructor" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedInstructorList" }, "PaginatedInstructorPayRateReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/InstructorPayRateRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedInstructorPayRateReadList" }, "PaginatedInvoiceReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/InvoiceRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedInvoiceReadList" }, "PaginatedJoiningFeeList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/JoiningFee" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedJoiningFeeList" }, "PaginatedKisiGroupList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/KisiGroup" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedKisiGroupList" }, "PaginatedLeadFormList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/LeadForm" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedLeadFormList" }, "PaginatedLeadSourceList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/LeadSource" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedLeadSourceList" }, "PaginatedMembershipCategoryReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipCategoryRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipCategoryReadList" }, "PaginatedMembershipPaymentPlanReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipPaymentPlanReadList" }, "PaginatedMembershipPenaltyMessageReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipPenaltyMessageRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipPenaltyMessageReadList" }, "PaginatedMembershipPenaltySystemReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipPenaltySystemRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipPenaltySystemReadList" }, "PaginatedMembershipReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipReadList" }, "PaginatedMembershipRegistrationGrantList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipRegistrationGrant" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipRegistrationGrantList" }, "PaginatedMembershipTermsReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/MembershipTermsRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedMembershipTermsReadList" }, "PaginatedOfferingTypeCategoryReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeCategoryRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedOfferingTypeCategoryReadList" }, "PaginatedOfferingTypeReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedOfferingTypeReadList" }, "PaginatedOrderItemReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/OrderItemRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedOrderItemReadList" }, "PaginatedOrderReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/OrderRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedOrderReadList" }, "PaginatedPaymentMethodReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentMethodRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPaymentMethodReadList" }, "PaginatedPaymentProcessorList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentProcessor" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPaymentProcessorList" }, "PaginatedPaymentSubscriptionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PaymentSubscription" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPaymentSubscriptionList" }, "PaginatedPlanChangeOptionReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PlanChangeOptionRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPlanChangeOptionReadList" }, "PaginatedPolicyAgreementReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyAgreementRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPolicyAgreementReadList" }, "PaginatedPolicyList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/Policy" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPolicyList" }, "PaginatedPolicyVersionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PolicyVersion" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPolicyVersionList" }, "PaginatedProductReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProductRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProductReadList" }, "PaginatedProductVariantAttributeList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantAttribute" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProductVariantAttributeList" }, "PaginatedProductVariantInventoryAdjustmentReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantInventoryAdjustmentRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProductVariantInventoryAdjustmentReadList" }, "PaginatedProductVariantReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProductVariantReadList" }, "PaginatedProfileReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProfileRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProfileReadList" }, "PaginatedProviderReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProviderReadList" }, "PaginatedProviderUserReciprocalCalendarSettingsReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ProviderUserReciprocalCalendarSettingsRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedProviderUserReciprocalCalendarSettingsReadList" }, "PaginatedPurchaseFeeReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PurchaseFeeRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPurchaseFeeReadList" }, "PaginatedPushNotificationReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PushNotificationRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPushNotificationReadList" }, "PaginatedPushNotificationTokenReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/PushNotificationTokenRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedPushNotificationTokenReadList" }, "PaginatedRecurringReservationReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/RecurringReservationRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedRecurringReservationReadList" }, "PaginatedReferralList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/Referral" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedReferralList" }, "PaginatedRegistrationOptionList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/RegistrationOption" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedRegistrationOptionList" }, "PaginatedRegistrationTimelineReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/RegistrationTimelineRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedRegistrationTimelineReadList" }, "PaginatedSlotReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/SlotRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedSlotReadList" }, "PaginatedStaffReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/StaffRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedStaffReadList" }, "PaginatedUnavailableEventList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/UnavailableEvent" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedUnavailableEventList" }, "PaginatedUniversalCheckoutReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/UniversalCheckoutRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedUniversalCheckoutReadList" }, "PaginatedVenueReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/VenueRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedVenueReadList" }, "PaginatedVenueRoomList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/VenueRoom" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedVenueRoomList" }, "PaginatedWaiverAgreementList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverAgreement" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedWaiverAgreementList" }, "PaginatedWaiverReadList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverRead" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedWaiverReadList" }, "PaginatedWebhookDestinationList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/WebhookDestination" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedWebhookDestinationList" }, "PaginatedZoomUserList": { "type": "object", "required": [ "count", "results" ], "properties": { "count": { "type": "integer", "example": 123 }, "next": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=4" }, "previous": { "type": "string", "nullable": true, "format": "uri", "example": "http://api.example.org/accounts/?page=2" }, "results": { "type": "array", "items": { "$ref": "#/components/schemas/ZoomUser" } }, "page": { "type": "integer", "example": 1 }, "page_size": { "type": "integer", "example": 100 } }, "title": "PaginatedZoomUserList" }, "ParticipationUpdateRequest": { "type": "object", "properties": { "participating": { "type": "boolean" }, "field_values": { "$ref": "#/components/schemas/CustomerFieldValuesWriteRequest" } }, "required": [ "participating" ], "title": "ParticipationUpdateRequest" }, "PasswordLoginParamsRequest": { "type": "object", "properties": { "username": { "type": "string", "minLength": 1 }, "password": { "type": "string", "minLength": 1 }, "direct_auth_key": { "type": "string", "minLength": 1 }, "verification_key": { "type": "string", "nullable": true, "minLength": 1 } }, "required": [ "direct_auth_key", "password", "username" ], "title": "PasswordLoginParamsRequest" }, "PasswordLoginRead": { "oneOf": [ { "type": "object", "properties": { "object": { "type": "string", "enum": [ "pending_login" ], "description": "Constant value: pending_login" }, "id": { "type": "string", "format": "uuid" }, "created_at": { "type": "string", "format": "date-time" }, "user": { "type": "integer", "readOnly": true }, "two_factor_required_providers": { "type": "array", "items": { "type": "integer" }, "readOnly": true } }, "required": [ "created_at", "id", "object", "two_factor_required_providers", "user" ], "title": "PendingLogin" }, { "type": "object", "properties": { "access_token": { "type": "string" }, "expires_in": { "type": "integer", "nullable": true, "readOnly": true }, "refresh_token": { "type": "string" }, "refresh_token_expires_in": { "type": "integer", "nullable": true, "readOnly": true } }, "required": [ "access_token", "expires_in", "refresh_token", "refresh_token_expires_in" ], "title": "GetAccessTokenSuccess" } ], "title": "PasswordLoginRead" }, "PatchedApplicationWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "domain": { "type": "string", "minLength": 1 }, "logo": { "type": "integer", "example": 4242, "description": "The unique identifier of the image you'd like to associate with this object.", "writeOnly": true, "nullable": true }, "scopes": { "type": "array", "items": { "type": "string", "enum": [ "read", "read_write" ] } }, "allowed_callback_urls": { "type": "array", "items": { "type": "string", "format": "uri", "minLength": 1 } }, "type": { "type": "string", "enum": [ "customer", "provider" ], "description": "Type of the application. This field is not relevant for the v2 API, but can be used to set up compatible applications for the v1 APIs." } }, "title": "PatchedApplicationWriteRequest" }, "PatchedAvailabilityOverridesRequest": { "type": "object", "properties": { "overrides": { "type": "array", "items": { "$ref": "#/components/schemas/AvailabilityOverrideRequest" } } }, "title": "PatchedAvailabilityOverridesRequest" }, "PatchedAvailabilityScheduleRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 32 }, "venue": { "type": "integer", "nullable": true }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" } }, "title": "RoomRentalAvailabilitySchedule" }, { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 32 }, "venue": { "type": "integer", "nullable": true }, "default_monday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_tuesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_wednesday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_thursday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_friday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_saturday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "default_sunday": { "type": "array", "items": { "$ref": "#/components/schemas/IntervalsRequest" } }, "schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f", "default": "IU" }, "instructor": { "type": "integer" } }, "required": [ "instructor" ], "title": "InstructorAvailabilitySchedule" } ], "title": "PatchedAvailabilityScheduleRequest" }, "PatchedBlockedTimesRequest": { "type": "object", "properties": { "data": { "type": "array", "items": { "$ref": "#/components/schemas/BlockedTimeRequest" } }, "applicable_to_availability_schedule_type": { "enum": [ "IU", "RRTL", "GC" ], "type": "string", "description": "* `IU` - Instructor\n* `RRTL` - Rental\n* `GC` - Generic", "x-spec-enum-id": "0b57dac3f4707e5f" } }, "title": "PatchedBlockedTimesRequest" }, "PatchedBroadcastMessageUpdateRequest": { "type": "object", "properties": { "message": { "type": "string" }, "subject": { "type": "string", "nullable": true, "minLength": 1 }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" } }, "title": "PatchedBroadcastMessageUpdateRequest" }, "PatchedBusinessAdvisorConfigUpdateRequest": { "type": "object", "properties": { "business_type": { "type": "string", "nullable": true, "maxLength": 2000 }, "typical_customers": { "type": "string", "nullable": true, "maxLength": 2000 }, "main_goal": { "type": "string", "nullable": true, "maxLength": 2000 }, "additional_context": { "type": "string", "nullable": true, "maxLength": 5000 } }, "title": "PatchedBusinessAdvisorConfigUpdateRequest" }, "PatchedCRMConfigRequest": { "type": "object", "properties": { "allow_backward_status_transitions": { "type": "boolean", "description": "Whether manual status changes to lower-precedence statuses are permitted." } }, "title": "PatchedCRMConfigRequest" }, "PatchedCRMWorkflowActionRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1 }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "x-spec-enum-id": "e0e2c7067615d3c9", "description": "Use case classification for this email action.\n\n* `marketing` - marketing\n* `general` - general" } }, "required": [ "action_type", "conditions", "email_template", "scheduled_delay", "workflow" ], "title": "EmailCustomerAction" }, { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1 }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "x-spec-enum-id": "3fc519615b601022", "description": "The type of action to execute when the workflow is triggered.\n\n* `email_customer` - Email Customer\n* `email_staff` - Email Staff" }, "workflow": { "type": "integer", "description": "ID of the workflow this action belongs to." }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" }, "description": "Conditions that must all match for this action to run." }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true, "description": "Optional delay after the trigger event before sending; null means send immediately." } }, "required": [ "action_type", "conditions", "email_template", "scheduled_delay", "workflow" ], "title": "EmailStaffAction" } ], "title": "PatchedCRMWorkflowActionRequest" }, "PatchedCRMWorkflowUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 255 } }, "title": "PatchedCRMWorkflowUpdateRequest" }, "PatchedCheckinSettingsRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "granularity": { "type": "string", "enum": [ "business", "venue" ] } }, "title": "PatchedCheckinSettingsRequest" }, "PatchedCustomerFieldCreateUpdateRequest": { "type": "object", "properties": { "label": { "type": "string", "minLength": 1, "description": "Short label of the field (optional if setting full_text)." }, "full_text": { "type": "string", "minLength": 1, "description": "The full question or complete description of the field (optional if setting label)." }, "type": { "type": "string", "enum": [ "short_text", "long_text", "boolean", "date", "datetime", "integer", "decimal", "choice", "multiple_choice", "address", "phone_number" ], "description": "The data type." }, "explanation_required_condition": { "type": "string", "enum": [ "always", "never", "optional", "if_true", "if_false" ], "default": "never", "description": "For boolean types, indicates when an explanation is required." }, "choices": { "type": "array", "items": { "$ref": "#/components/schemas/FieldChoiceRequest" }, "description": "For `multiple_choice` and `choice` field types, the available values to select." }, "forms": { "type": "array", "items": { "type": "integer" }, "description": "IDs of the provider forms this field should be included on." }, "is_required": { "type": "boolean" }, "is_visible_to_all_staff": { "type": "boolean", "nullable": true }, "show_on_customer_profile": { "type": "boolean", "title": "Customer Profile", "description": "Would you like this field to be displayed on the customer profile page along with other basic fields like their name and email?" }, "show_on_new_customer_form": { "type": "boolean", "title": "Customer Create", "description": "Should the business be prompted to fill in this field when creating a TeamUp customer profile?" } }, "title": "PatchedCustomerFieldCreateUpdateRequest" }, "PatchedCustomerFormCreateUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 128 }, "order": { "type": "integer", "maximum": 32767, "minimum": -32768 }, "offering_types_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "memberships_applies_to": { "type": "string", "enum": [ "all", "only", "all_except", "none" ] }, "memberships": { "type": "array", "items": { "type": "integer" } }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormOfferingTypeSettingRequest" } }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/FormMembershipSettingRequest" } }, "submissions_expire_after": { "type": "string", "nullable": true }, "force_stale_updates": { "type": "boolean", "nullable": true }, "fields": { "type": "array", "items": { "type": "integer" } } }, "title": "PatchedCustomerFormCreateUpdateRequest" }, "PatchedCustomerSegmentUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 } }, "title": "PatchedCustomerSegmentUpdateRequest" }, "PatchedDiscountCodeApplicabilityWriteRequest": { "type": "object", "properties": { "discount_code": { "type": "integer" }, "allow_use": { "type": "boolean" }, "item": { "$ref": "#/components/schemas/DiscountApplicableItemWriteFieldRequest" } }, "title": "PatchedDiscountCodeApplicabilityWriteRequest" }, "PatchedDiscountUpdateUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "allowed_uses": { "type": "integer", "nullable": true }, "allowed_uses_per_customer": { "type": "integer", "nullable": true }, "discount_type": { "type": "string", "enum": [ "flat", "percent" ] }, "discount_amount": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,5}(?:\\.\\d{0,2})?$" }, "usable_start_date": { "type": "string", "format": "date", "nullable": true }, "usable_end_date": { "type": "string", "format": "date", "nullable": true }, "usable_purchase_types": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "store", "joining_fee" ] } }, "usable_by_new_customers_only": { "type": "boolean" }, "usable_by_default_for_purchase_types": { "type": "boolean" }, "applicable_billing_cycles": { "type": "integer" }, "status": { "type": "string", "enum": [ "inactive", "active" ], "default": "active" } }, "title": "PatchedDiscountUpdateUpdateRequest" }, "PatchedEmbedWidgetUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 100 }, "config": { "$ref": "#/components/schemas/WidgetConfigRequest" } }, "title": "PatchedEmbedWidgetUpdateRequest" }, "PatchedEventPushScheduleWriteRequest": { "type": "object", "properties": { "minutes": { "type": "integer", "maximum": 10080, "minimum": 1, "description": "How long before or after the start of the class the reminder sends, in minutes. From 1 to 10080 (7 days)." }, "timing": { "type": "string", "enum": [ "before", "after" ], "description": "Whether the reminder sends before or after the start of the class." } }, "title": "PatchedEventPushScheduleWriteRequest" }, "PatchedEventUpdateRequest": { "oneOf": [ { "type": "object", "properties": { "starts_at": { "type": "string", "format": "date-time", "description": "When the class starts. If no timezone offset is included, it will default to the venue's timezone." }, "ends_at": { "type": "string", "format": "date-time", "description": "When the class ends. If no timezone offset is included, it will default to the venue's timezone." }, "name": { "type": "string", "minLength": 1 }, "venue": { "type": "integer" }, "instructors": { "type": "array", "items": { "type": "integer" }, "minItems": 1 }, "category": { "type": "integer", "nullable": true, "description": "Customize the class category. If not set, the offering type's category will be used." }, "max_occupancy": { "type": "integer", "minimum": 1, "nullable": true, "description": "The maximum number of people that can register for this class. Use `null` to indicate no limit." }, "description": { "type": "string", "nullable": true, "minLength": 1, "description": "Customize the description displayed to customers. If not set, the offering type's description will be displayed." }, "registration_timelines": { "type": "array", "items": { "type": "integer" }, "nullable": true, "description": "Customize the registration timelines associated with the class. If not set, the offering type's registration timelines will be used." }, "calendar_opens_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Customize when the class is opened (revealed) on the calendar to customers. Overrides any setting on the registration timelines." }, "notify": { "allOf": [ { "$ref": "#/components/schemas/NotifyOptionsRequest" } ], "nullable": true } }, "required": [ "ends_at", "instructors", "name", "starts_at", "venue" ], "title": "ClassUpdate" } ], "title": "PatchedEventUpdateRequest" }, "PatchedGiftCardConfigWriteRequest": { "type": "object", "properties": { "is_enabled_provider_site": { "type": "boolean" }, "is_enabled_customer_site": { "type": "boolean" }, "image_choices": { "type": "array", "items": { "type": "integer" } }, "amount_choices": {}, "do_gift_cards_expire": { "type": "boolean" }, "redemption_expiration_days": { "type": "integer" }, "redemption_email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" } }, "title": "PatchedGiftCardConfigWriteRequest" }, "PatchedInstructorPayRateUpdateRequest": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "active", "archived" ] } }, "title": "PatchedInstructorPayRateUpdateRequest" }, "PatchedInstructorRequest": { "type": "object", "properties": { "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } } }, "title": "PatchedInstructorRequest" }, "PatchedKisiGroupRequest": { "type": "object", "properties": { "exclude_blocked_customer_memberships": { "type": "boolean" }, "before_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "after_offering_start_leeway_minutes": { "type": "integer", "maximum": 1440, "minimum": 0, "nullable": true }, "allow_full_day_offering_access": { "type": "boolean" }, "synced_memberships": { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." } }, "synced_offering_types": { "type": "string" } }, "title": "PatchedKisiGroupRequest" }, "PatchedLeadFormRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "description": { "type": "string", "nullable": true, "minLength": 1 }, "lead_source": { "type": "integer", "nullable": true }, "redirect_url": { "type": "string", "format": "uri", "nullable": true, "description": "URL to redirect the customer to after a successful form submission.", "maxLength": 200 }, "send_invite_email": { "type": "boolean", "description": "Whether to send a TeamUp account invite email after a successful submission." }, "customer_fields": { "type": "array", "items": { "$ref": "#/components/schemas/LeadFormCustomerFieldRequest" }, "writeOnly": true } }, "title": "PatchedLeadFormRequest" }, "PatchedLeadSourceRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "slug": { "type": "string", "nullable": true, "description": "URL-safe slug derived from the lead source name.", "maxLength": 255 }, "archived": { "type": "boolean", "description": "Whether this lead source is archived and hidden from new selections." } }, "title": "PatchedLeadSourceRequest" }, "PatchedM2MTokenWriteRequest": { "type": "object", "properties": { "application": { "type": "integer" }, "expires_at": { "type": "string", "format": "date-time", "nullable": true, "description": "Explicit datetime when the token expires. Null means it never expires." }, "permissions": { "type": "array", "items": { "enum": [ "email_notifications", "revenue", "attendances", "super_admin", "customers", "discount_codes", "manage_events", "store", "developer", "customer_payments", "instructor_attendances", "instructor_manage_events", "pos", "crm_all_customer_records", "crm_own_customer_records", "crm_lifecycle_status_admin", "perform_by_boxmate", "marketing_suite" ], "type": "string", "description": "* `email_notifications` - email_notifications\n* `revenue` - revenue\n* `attendances` - attendances\n* `super_admin` - super_admin\n* `customers` - customers\n* `discount_codes` - discount_codes\n* `manage_events` - manage_events\n* `store` - store\n* `developer` - developer\n* `customer_payments` - customer_payments\n* `instructor_attendances` - instructor_attendances\n* `instructor_manage_events` - instructor_manage_events\n* `pos` - pos\n* `crm_all_customer_records` - crm_all_customer_records\n* `crm_own_customer_records` - crm_own_customer_records\n* `crm_lifecycle_status_admin` - crm_lifecycle_status_admin\n* `perform_by_boxmate` - perform_by_boxmate\n* `marketing_suite` - marketing_suite", "x-spec-enum-id": "937285b060a807d0" }, "nullable": true, "description": "List of ProviderUserPermissions values to grant. Null or omitted means all permissions (super_admin)." }, "is_read_only": { "type": "boolean", "description": "If true, the token can only read data: requests that create, update, or delete data are rejected. Defaults to false on create." } }, "title": "PatchedM2MTokenWriteRequest" }, "PatchedMembershipCategoryUpdateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "title": "Category Name", "maxLength": 256 }, "order": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "title": "PatchedMembershipCategoryUpdateRequest" }, "PatchedMembershipPaymentPlanUpdateRequest": { "type": "object", "properties": { "cancellation_notice_days": { "type": "integer", "nullable": true }, "price": { "type": "string", "example": "10.99" }, "status": { "type": "string", "enum": [ "for_sale", "unavailable" ] } }, "title": "PatchedMembershipPaymentPlanUpdateRequest" }, "PatchedMembershipPenaltyMessageWriteRequest": { "type": "object", "properties": { "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "trigger_type": { "type": "string", "enum": [ "non_penalized_infraction", "penalty" ] }, "penalty_systems": { "type": "array", "items": { "type": "integer", "description": "The unique identifier of the membership penalty system." } } }, "title": "PatchedMembershipPenaltyMessageWriteRequest" }, "PatchedMembershipPenaltySystemWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "description": "The system's name." }, "memberships": { "type": "array", "items": { "type": "integer", "description": "The membership's unique identifier." } }, "status": { "type": "string", "enum": [ "active", "archived" ], "default": null, "description": "The system's status." }, "no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for no-shows." }, "late_cancel_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for late-cancels." }, "late_cancel_or_no_show_rule": { "allOf": [ { "$ref": "#/components/schemas/MembershipPenaltyRuleRequest" } ], "writeOnly": true, "nullable": true, "description": "The rule to apply for late-cancels or no-shows." }, "deferred_charge_days": { "type": "integer", "default": 1, "description": "The number of days to wait after a penalty is issued before charging a customer." } }, "title": "PatchedMembershipPenaltySystemWriteRequest" }, "PatchedMembershipRegistrationGrantRequest": { "type": "object", "properties": { "membership": { "type": "integer" }, "registration_option": { "type": "integer" }, "on_allotment_price": { "type": "string", "example": "10.99" } }, "title": "PatchedMembershipRegistrationGrantRequest" }, "PatchedMissingFormsWaiversSettingsWriteRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "frequency": { "type": "string", "enum": [ "manual_only", "once", "recurring" ] }, "resend_interval_days": { "type": "integer", "minimum": 1 }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" } }, "title": "PatchedMissingFormsWaiversSettingsWriteRequest" }, "PatchedNotificationPreferenceUpdateRequest": { "type": "object", "properties": { "sms_enabled": { "type": "boolean" }, "email_enabled": { "type": "boolean" }, "push_enabled": { "type": "boolean" } }, "title": "PatchedNotificationPreferenceUpdateRequest" }, "PatchedOfferingTypeUpdateRequest": { "type": "object", "properties": { "appointment_settings": { "$ref": "#/components/schemas/AppointmentSettingsRequest" }, "cancellation_notice_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": 0, "default": 0 }, "customer_visibility": { "enum": [ "public", "private", "membership_holders" ], "type": "string", "description": "* `public` - public\n* `private` - private\n* `membership_holders` - membership_holders", "x-spec-enum-id": "f22a2988c19c89ad", "default": "public" }, "description": { "type": "string", "nullable": true }, "dropin_price_decimal": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,6}(?:\\.\\d{0,2})?$", "nullable": true }, "image": { "type": "integer", "nullable": true }, "memberships": { "type": "array", "items": { "type": "integer" } }, "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 }, "registrations_close_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": -525600, "default": 0 }, "registrations_open_interval": { "type": "integer", "description": "The duration in minutes.", "maximum": 525600, "minimum": 0, "default": 0 }, "room_rental_settings": { "$ref": "#/components/schemas/RoomRentalSettingsRequest" }, "status": { "enum": [ "active", "archived" ], "type": "string", "description": "* `active` - active\n* `archived` - archived", "x-spec-enum-id": "4a823d7dfdb80c49", "default": "active" } }, "title": "PatchedOfferingTypeUpdateRequest" }, "PatchedOrderItemUpdateRequest": { "type": "object", "properties": { "quantity": { "type": "integer", "minimum": 0 } }, "title": "PatchedOrderItemUpdateRequest" }, "PatchedOrderRequest": { "type": "object", "properties": { "ordering": { "type": "object", "additionalProperties": { "type": "integer" }, "description": "Mapping of numeric Offering Type IDs to their new order." } }, "title": "PatchedOrderRequest" }, "PatchedOrderingRequest": { "type": "object", "properties": { "ordering": { "type": "array", "items": { "type": "integer" }, "minItems": 2 } }, "title": "PatchedOrderingRequest" }, "PatchedPaymentMethodUpdateRequest": { "type": "object", "properties": { "label": { "type": "string", "description": "Customer-supplied nickname for this payment method.", "maxLength": 255 } }, "title": "PatchedPaymentMethodUpdateRequest" }, "PatchedProductBulkReorderRequest": { "type": "object", "properties": { "products": { "type": "array", "items": { "$ref": "#/components/schemas/ProductReorderRequest" } } }, "title": "PatchedProductBulkReorderRequest" }, "PatchedProductVariantWriteRequest": { "type": "object", "properties": { "product": { "type": "integer" }, "sku": { "type": "string", "description": "A unique identifier. Will be autogenerated if left blank.", "maxLength": 255, "pattern": "^[-a-zA-Z0-9_]+$" }, "description": { "type": "string", "title": "Variant Description" }, "active": { "type": "boolean", "title": "Variant Active?", "description": "Is product variant active? Only active variants will be shown in the store." }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 }, "price_adjustment_direction": { "type": "string", "enum": [ "higher", "lower" ] }, "price_adjustment_magnitude": { "type": "string", "example": "10.99", "default": 0 }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantDetailWriteRequest" } }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantImageRequest" } } }, "title": "PatchedProductVariantWriteRequest" }, "PatchedProductWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "title": "Product name", "maxLength": 255 }, "description": { "type": "string", "title": "Product description" }, "status": { "type": "string", "enum": [ "for_sale_visible", "for_sale_hidden", "not_for_sale", "archived" ], "default": "for_sale_visible" }, "base_price": { "type": "string", "example": "10.99" }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/ProductImageWriteRequest" } }, "product_variant_attributes": { "type": "array", "items": { "type": "integer" } } }, "title": "PatchedProductWriteRequest" }, "PatchedProviderStoreSettingsUpdateRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "purchase_terms": { "type": "string", "default": "" } }, "title": "PatchedProviderStoreSettingsUpdateRequest" }, "PatchedProviderThemeRequest": { "type": "object", "properties": { "homescreen_logo": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true } }, "title": "PatchedProviderThemeRequest" }, "PatchedProviderUserReciprocalCalendarSettingsUpdateRequest": { "type": "object", "properties": { "constrain_only_busy": { "type": "boolean", "description": "If True, only consider the 'busy events' when checking busy periods." }, "is_destination_for_teamup_events": { "type": "boolean", "description": "If True, use this calendar as a destination for Teamup events." }, "is_source_for_busy_periods": { "type": "boolean", "description": "If True, use this calendar's events to build up busy periods for slot booking." }, "push_only_if_event_has_attendees": { "type": "boolean" }, "reminder_number_of_minutes_prior": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64" }, "set_external_reminders_for_pushed_events": { "type": "boolean" } }, "title": "PatchedProviderUserReciprocalCalendarSettingsUpdateRequest" }, "PatchedPushNotificationTokenUpdateRequest": { "type": "object", "properties": { "preference": { "type": "string", "enum": [ "disabled", "enabled" ] } }, "title": "PatchedPushNotificationTokenUpdateRequest" }, "PatchedPushSettingsWriteRequest": { "type": "object", "properties": { "notification_types": { "type": "array", "items": { "$ref": "#/components/schemas/PushNotificationTypeWriteRequest" }, "description": "Only the types listed here change. Types left out keep their value." }, "missing_forms_and_waivers": { "allOf": [ { "$ref": "#/components/schemas/MissingFormsWaiversPushScheduleWriteRequest" } ], "description": "Only the fields listed here change." } }, "title": "PatchedPushSettingsWriteRequest" }, "PatchedRecurringReservationUpdateRequest": { "type": "object", "properties": { "end_date": { "type": "string", "format": "date", "nullable": true }, "cancel": { "type": "boolean", "default": false } }, "title": "PatchedRecurringReservationUpdateRequest" }, "PatchedStaffUISettingsPatchRequest": { "type": "object", "properties": { "customer_list": { "nullable": true } }, "title": "PatchedStaffUISettingsPatchRequest" }, "PatchedTerminologyUpdateRequest": { "type": "object", "properties": { "singular": { "type": "string", "minLength": 1, "maxLength": 50 }, "plural": { "type": "string", "minLength": 1, "maxLength": 50 }, "singular_possessive": { "type": "string", "minLength": 1, "maxLength": 50 }, "plural_possessive": { "type": "string", "minLength": 1, "maxLength": 50 } }, "title": "PatchedTerminologyUpdateRequest" }, "PatchedUniversalCheckoutWriteRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "discount_code": { "type": "string", "nullable": true, "minLength": 1 }, "return_to": { "type": "string", "nullable": true, "minLength": 1, "description": "The URL to return to after checkout is complete." }, "use_account_credit": { "type": "boolean" } }, "title": "PatchedUniversalCheckoutWriteRequest" }, "PatchedUpdateVenueRoomRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 64 }, "status": { "type": "string", "enum": [ "active", "archived" ] }, "thumbnail": { "type": "integer", "nullable": true } }, "title": "PatchedUpdateVenueRoomRequest" }, "PatchedVenueWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 200 }, "venue_type": { "type": "string", "enum": [ "physical", "online" ] }, "description": { "type": "string", "nullable": true }, "physical_address": { "allOf": [ { "$ref": "#/components/schemas/VenueAddressRequest" } ], "nullable": true }, "timezone": { "type": "string", "minLength": 1, "maxLength": 250 }, "video_url": { "type": "string", "nullable": true, "minLength": 1 }, "video_url_type": { "type": "string", "enum": [ "static", "zoom" ] }, "zoom_user": { "type": "integer", "nullable": true }, "archived": { "type": "boolean", "default": false } }, "title": "PatchedVenueWriteRequest" }, "PatchedWaiverWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "text": { "type": "string", "minLength": 1 }, "sign_once": { "type": "boolean" }, "signature_image_required": { "type": "boolean" }, "when_required": { "type": "array", "items": { "type": "string", "enum": [ "signup", "all_memberships", "all_offering_types" ] } }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverOfferingTypeSettingRequest" } }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverMembershipSettingRequest" } } }, "title": "PatchedWaiverWriteRequest" }, "PatchedWebhookDestinationRequest": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "minLength": 1 }, "status": { "type": "string", "enum": [ "active", "disabled" ] }, "feed_item_types": { "type": "array", "items": { "enum": [ "*", "event_registration.created", "event_registration.removed", "event_registration.late_cancelled", "event_registration.attended", "event_registration.noshowed", "event_registration.waitlist.added", "event_registration.waitlist.removed", "event_registration.waitlist.spot_reserved", "event_registration.waitlist.spot_expired", "event_registration.waitlist.spot_declined", "event_registration.waitlist.reserved_spot_removed", "event.ended", "event.cancelled", "customer.created", "customer.invited", "customer.signed_up", "customer.deleted", "customer.updated", "customer_membership.created", "customer_membership.started", "customer_membership.ended", "customer_membership.cancelled", "customer_membership.completed", "customer_referral.created", "customer_referral.confirmed", "course_session.ended", "lead_form.submitted", "customer_status.changed", "crm_interaction.created", "crm_email.sent" ], "type": "string", "description": "* `*` - *\n* `event_registration.created` - event_registration.created\n* `event_registration.removed` - event_registration.removed\n* `event_registration.late_cancelled` - event_registration.late_cancelled\n* `event_registration.attended` - event_registration.attended\n* `event_registration.noshowed` - event_registration.noshowed\n* `event_registration.waitlist.added` - event_registration.waitlist.added\n* `event_registration.waitlist.removed` - event_registration.waitlist.removed\n* `event_registration.waitlist.spot_reserved` - event_registration.waitlist.spot_reserved\n* `event_registration.waitlist.spot_expired` - event_registration.waitlist.spot_expired\n* `event_registration.waitlist.spot_declined` - event_registration.waitlist.spot_declined\n* `event_registration.waitlist.reserved_spot_removed` - event_registration.waitlist.reserved_spot_removed\n* `event.ended` - event.ended\n* `event.cancelled` - event.cancelled\n* `customer.created` - customer.created\n* `customer.invited` - customer.invited\n* `customer.signed_up` - customer.signed_up\n* `customer.deleted` - customer.deleted\n* `customer.updated` - customer.updated\n* `customer_membership.created` - customer_membership.created\n* `customer_membership.started` - customer_membership.started\n* `customer_membership.ended` - customer_membership.ended\n* `customer_membership.cancelled` - customer_membership.cancelled\n* `customer_membership.completed` - customer_membership.completed\n* `customer_referral.created` - customer_referral.created\n* `customer_referral.confirmed` - customer_referral.confirmed\n* `course_session.ended` - course_session.ended\n* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed\n* `crm_interaction.created` - crm_interaction.created\n* `crm_email.sent` - crm_email.sent", "x-spec-enum-id": "7c223cf9e924d141" }, "description": "Use `*` if webhooks should be sent for all types." }, "application": { "type": "integer" } }, "title": "PatchedWebhookDestinationRequest" }, "PayRate": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" } }, "required": [ "id", "name" ], "title": "PayRate" }, "PayRateForOfferingTypeAtVenue": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "pay_rate": { "allOf": [ { "$ref": "#/components/schemas/PayRate" } ], "nullable": true, "readOnly": true } }, "required": [ "id", "name", "pay_rate" ], "title": "PayRateForOfferingTypeAtVenue" }, "PaymentMethodRead": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "bank_account" ], "description": "Constant value: bank_account" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string" }, "can_delete": { "type": "boolean" }, "label": { "type": "string" }, "bank_name": { "type": "string" }, "last_four": { "type": "string" } }, "required": [ "bank_name", "can_delete", "id", "label", "last_four", "long_description", "object", "profile", "short_description", "type" ], "title": "BankAccountRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "credit_card" ], "description": "Constant value: credit_card" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string" }, "can_delete": { "type": "boolean" }, "label": { "type": "string" }, "brand": { "type": "string", "readOnly": true }, "cardholder_name": { "type": "string" }, "last_four": { "type": "string" }, "expiration_month": { "type": "string", "readOnly": true }, "expiration_year": { "type": "string", "readOnly": true } }, "required": [ "brand", "can_delete", "cardholder_name", "expiration_month", "expiration_year", "id", "label", "last_four", "long_description", "object", "profile", "short_description", "type" ], "title": "CreditCardRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "paypal" ], "description": "Constant value: paypal" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string" }, "can_delete": { "type": "boolean" }, "label": { "type": "string" }, "email": { "type": "string" } }, "required": [ "can_delete", "email", "id", "label", "long_description", "object", "profile", "short_description", "type" ], "title": "PaypalRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "mandate" ], "description": "Constant value: mandate" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string" }, "can_delete": { "type": "boolean" }, "label": { "type": "string" }, "bank_name": { "type": "string" }, "account_holder_name": { "type": "string" }, "account_number_ending": { "type": "string" } }, "required": [ "account_holder_name", "account_number_ending", "bank_name", "can_delete", "id", "label", "long_description", "object", "profile", "short_description", "type" ], "title": "MandateRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "offline" ], "description": "Constant value: offline" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string", "readOnly": true }, "can_delete": { "type": "boolean" }, "label": { "type": "string" } }, "required": [ "can_delete", "id", "label", "long_description", "object", "profile", "short_description", "type" ], "title": "OfflinePaymentRead" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_method" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "payfast" ], "description": "Constant value: payfast" }, "profile": { "allOf": [ { "$ref": "#/components/schemas/PaymentProfile" } ], "description": "Name of the customer/provider who the payment method belongs to." }, "long_description": { "type": "string", "readOnly": true }, "short_description": { "type": "string" }, "can_delete": { "type": "boolean" }, "label": { "type": "string" } }, "required": [ "can_delete", "id", "label", "long_description", "object", "profile", "short_description", "type" ], "title": "PayFastRead" } ], "title": "PaymentMethodRead" }, "PaymentProcessor": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_processor" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "integer" }, "name": { "type": "string" }, "is_usable": { "type": "boolean", "readOnly": true }, "is_offline": { "type": "boolean", "readOnly": true } }, "required": [ "id", "is_offline", "is_usable", "name", "object", "type" ], "title": "PaymentProcessor" }, "PaymentProfile": { "type": "object", "properties": { "name": { "type": "string" } }, "required": [ "name" ], "title": "PaymentProfile" }, "PaymentSubscription": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "payment_subscription" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "plan": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/MembershipPaymentPlanRead" } ] }, "retry_count": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date", "nullable": true }, "payment_method": { "oneOf": [ { "type": "integer", "nullable": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PaymentMethodRead" } ] } }, "required": [ "id", "object", "payment_method", "start_date" ], "title": "PaymentSubscription" }, "Period": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" } }, "required": [ "end_date", "start_date" ], "title": "Period" }, "PeriodLimitRead": { "type": "object", "properties": { "max_uses": { "type": "integer" }, "period": { "type": "string" }, "type": { "type": "string" }, "offering_type_limits": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeLimitRead" } } }, "required": [ "max_uses", "offering_type_limits", "period", "type" ], "title": "PeriodLimitRead" }, "PeriodLimitUpdateRequest": { "type": "object", "properties": { "max_uses": { "type": "integer" }, "period": { "type": "string" }, "type": { "type": "string", "description": "The type of offering the periodic limit applies to. One of: `event`, `class`, `course`." }, "offering_type_limits": { "type": "array", "items": { "$ref": "#/components/schemas/OfferingTypeLimitUpdateRequest" } } }, "required": [ "max_uses", "offering_type_limits", "period", "type" ], "title": "PeriodLimitUpdateRequest" }, "PlanChangeOptionRead": { "type": "object", "properties": { "plan": { "type": "integer" }, "membership": { "type": "integer" }, "name": { "type": "string" }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_with_period": { "type": "string", "readOnly": true }, "billing_period_length": { "type": "integer" }, "direction": { "type": "string" }, "price_delta": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_delta_period": { "type": "string", "enum": [ "months", "weeks" ] }, "effective_date": { "type": "string", "format": "date", "nullable": true }, "is_prorated": { "type": "boolean" }, "cancellation_notice_days": { "type": "integer", "nullable": true }, "committed_billing_periods": { "type": "integer", "nullable": true }, "commitment_expiration_scheme": { "type": "string", "enum": [ "stop_contract", "renew_contract", "continue_by_period" ] } }, "required": [ "billing_period_length", "cancellation_notice_days", "commitment_expiration_scheme", "committed_billing_periods", "direction", "effective_date", "is_prorated", "membership", "name", "plan", "price", "price_delta", "price_delta_period", "price_with_period" ], "title": "PlanChangeOptionRead" }, "PlatformReferralCode": { "type": "object", "properties": { "code": { "type": "string", "readOnly": true }, "share_url": { "type": "string", "readOnly": true }, "stats": { "allOf": [ { "$ref": "#/components/schemas/ReferralStats" } ], "readOnly": true } }, "required": [ "code", "share_url", "stats" ], "title": "PlatformReferralCode" }, "Policy": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 100 }, "current_or_impending_version": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PolicyVersion" } ] }, "status": { "type": "string", "enum": [ "active", "archived" ] } }, "required": [ "current_or_impending_version", "id", "name", "status" ], "title": "Policy" }, "PolicyAgreementCreateRequest": { "type": "object", "properties": { "policy": { "type": "integer" }, "version": { "type": "integer" }, "customer": { "type": "integer", "description": "The customer agreeing to the policy. If not provided, will default to the authenticated customer." } }, "required": [ "policy", "version" ], "title": "PolicyAgreementCreateRequest" }, "PolicyAgreementRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "policy": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/Policy" } ] }, "version": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/PolicyVersion" } ] }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "agreed_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "agreed_at", "customer", "id", "policy", "version" ], "title": "PolicyAgreementRead" }, "PolicyVersion": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "policy_version" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "text": { "type": "string" }, "url": { "type": "string", "format": "uri", "maxLength": 200 }, "effective_at": { "type": "string", "format": "date-time" } }, "required": [ "effective_at", "id", "object", "text", "url" ], "title": "PolicyVersion" }, "ProductImageWriteRequest": { "type": "object", "properties": { "image": { "type": "integer", "example": 4242, "description": "The unique identifier of the image you'd like to associate with this object.", "writeOnly": true }, "caption": { "type": "string", "nullable": true, "title": "Optional caption", "maxLength": 255 } }, "required": [ "image" ], "title": "ProductImageWriteRequest" }, "ProductPriceRange": { "type": "object", "properties": { "min": { "type": "string", "readOnly": true }, "max": { "type": "string", "readOnly": true } }, "required": [ "max", "min" ], "title": "ProductPriceRange" }, "ProductRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_product" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "title": "Product name", "maxLength": 255 }, "description": { "type": "string", "title": "Product description" }, "images": { "oneOf": [ { "type": "array", "items": { "type": "integer" }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "ProductImageRead[]", "items": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_product_image" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } } }, "caption": { "type": "string", "nullable": true, "title": "Optional caption", "maxLength": 255 } }, "required": [ "id", "image", "object" ] } } ] }, "status": { "type": "string", "enum": [ "for_sale_visible", "for_sale_hidden", "not_for_sale", "archived" ] }, "ordering": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "base_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "variants": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "ProductVariantRead[]", "items": { "$ref": "#/components/schemas/ProductVariantRead" } } ] }, "price_range": { "$ref": "#/components/schemas/ProductPriceRange" }, "inventory_count": { "type": "integer" }, "product_variant_attributes": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantAttribute" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "base_price", "id", "images", "inventory_count", "name", "object", "price_range", "status", "variants" ], "title": "ProductRead" }, "ProductReorderRequest": { "type": "object", "properties": { "id": { "type": "integer" }, "ordering": { "type": "integer", "minimum": 0 } }, "required": [ "id", "ordering" ], "title": "ProductReorderRequest" }, "ProductVariantAttribute": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_product_attribute" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 300 }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 } }, "required": [ "id", "name", "object" ], "title": "ProductVariantAttribute" }, "ProductVariantAttributeRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 300 }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 } }, "required": [ "name" ], "title": "ProductVariantAttributeRequest" }, "ProductVariantDetailRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "attribute": { "type": "string", "readOnly": true }, "attribute_id": { "type": "integer", "readOnly": true }, "value": { "type": "string", "maxLength": 500 }, "description": { "type": "string" } }, "required": [ "attribute", "attribute_id", "id" ], "title": "ProductVariantDetailRead" }, "ProductVariantDetailWriteRequest": { "type": "object", "properties": { "attribute": { "type": "integer" }, "value": { "type": "string", "minLength": 1, "maxLength": 500 }, "description": { "type": "string" } }, "required": [ "attribute" ], "title": "ProductVariantDetailWriteRequest" }, "ProductVariantImageRequest": { "type": "object", "properties": { "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } } }, "caption": { "type": "string", "nullable": true, "title": "Optional caption", "maxLength": 255 } }, "required": [ "image" ], "title": "ProductVariantImageRequest" }, "ProductVariantInventoryAdjustmentRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_inventory_adjustment" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "created_at": { "type": "string", "format": "date-time" }, "product_variant": { "type": "integer" }, "type": { "type": "string", "enum": [ "inventory_addition", "inventory_reduction", "store_sale", "store_return", "order_cancelled" ] }, "quantity": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64", "title": "Adjustment size", "description": "Enter a positive number. If you select Inventory Reduction, this adjustment will be subtracted from your current inventory." }, "description": { "type": "string", "description": "Notes on why you are adjusting inventory for this variant. This is for your records." } }, "required": [ "created_at", "id", "object", "product_variant", "quantity", "type" ], "title": "ProductVariantInventoryAdjustmentRead" }, "ProductVariantInventoryAdjustmentWriteRequest": { "type": "object", "properties": { "product_variant": { "type": "integer" }, "type": { "type": "string", "enum": [ "inventory_addition", "inventory_reduction", "store_return", "order_cancelled" ] }, "quantity": { "type": "integer", "minimum": 1 }, "description": { "type": "string", "description": "Notes on why you are adjusting inventory for this variant. This is for your records." } }, "required": [ "product_variant", "quantity", "type" ], "title": "ProductVariantInventoryAdjustmentWriteRequest" }, "ProductVariantRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_product_variant" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "product": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProductRead" } ] }, "sku": { "type": "string", "description": "A unique identifier. Will be autogenerated if left blank.", "maxLength": 255, "pattern": "^[-a-zA-Z0-9_]+$" }, "description": { "type": "string", "title": "Variant Description" }, "price_adjustment_direction": { "type": "string", "enum": [ "higher", "lower" ] }, "price_adjustment_magnitude": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "active": { "type": "boolean", "title": "Variant Active?", "description": "Is product variant active? Only active variants will be shown in the store." }, "order": { "type": "integer" }, "price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_fee_inclusive": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "price_fee_exclusive": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantDetailRead" } }, "active_details": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantDetailRead" } }, "images": { "oneOf": [ { "type": "array", "items": { "type": "integer" }, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "ProductVariantImage[]", "items": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "store_product_variant_image" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } } }, "caption": { "type": "string", "nullable": true, "title": "Optional caption", "maxLength": 255 } }, "required": [ "id", "image", "object" ] } } ] }, "inventory": { "type": "integer" }, "inventory_adjustments": { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources.", "readOnly": true } }, "required": [ "active_details", "details", "id", "images", "inventory", "inventory_adjustments", "object", "order", "price", "price_adjustment_magnitude", "price_fee_exclusive", "price_fee_inclusive", "product" ], "title": "ProductVariantRead" }, "ProductVariantWriteRequest": { "type": "object", "properties": { "product": { "type": "integer" }, "sku": { "type": "string", "description": "A unique identifier. Will be autogenerated if left blank.", "maxLength": 255, "pattern": "^[-a-zA-Z0-9_]+$" }, "description": { "type": "string", "title": "Variant Description" }, "active": { "type": "boolean", "title": "Variant Active?", "description": "Is product variant active? Only active variants will be shown in the store." }, "order": { "type": "integer", "maximum": 2000, "minimum": 0, "default": 0 }, "price_adjustment_direction": { "type": "string", "enum": [ "higher", "lower" ] }, "price_adjustment_magnitude": { "type": "string", "example": "10.99", "default": 0 }, "details": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantDetailWriteRequest" } }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/ProductVariantImageRequest" } } }, "required": [ "product" ], "title": "ProductVariantWriteRequest" }, "ProductWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "title": "Product name", "maxLength": 255 }, "description": { "type": "string", "title": "Product description" }, "status": { "type": "string", "enum": [ "for_sale_visible", "for_sale_hidden", "not_for_sale", "archived" ], "default": "for_sale_visible" }, "base_price": { "type": "string", "example": "10.99" }, "images": { "type": "array", "items": { "$ref": "#/components/schemas/ProductImageWriteRequest" } }, "product_variant_attributes": { "type": "array", "items": { "type": "integer" } } }, "required": [ "base_price", "name" ], "title": "ProductWriteRequest" }, "ProfileRead": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 255 }, "first_name": { "type": "string", "nullable": true, "maxLength": 256 }, "last_name": { "type": "string", "nullable": true, "maxLength": 256 }, "email": { "type": "string" }, "profile_type": { "type": "string", "enum": [ "customer" ], "description": "Constant value: customer" }, "provider": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProviderRead" } ] }, "venue": { "$ref": "#/components/schemas/VenueRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "email", "id", "name", "profile_type", "provider" ], "title": "CustomerProfile" }, { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 100 }, "first_name": { "type": "string", "nullable": true, "maxLength": 128 }, "last_name": { "type": "string", "nullable": true, "maxLength": 128 }, "email": { "type": "string", "readOnly": true }, "profile_type": { "type": "string", "enum": [ "staff" ], "description": "Constant value: staff" }, "provider": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/ProviderRead" } ] }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } } }, "required": [ "email", "id", "name", "permissions", "profile_type", "provider" ], "title": "StaffProfile" } ], "title": "ProfileRead" }, "ProviderAccountStatus": { "type": "object", "properties": { "locked_out": { "type": "boolean" }, "lock_out_override_applied": { "type": "boolean" }, "teamup_billing": { "allOf": [ { "$ref": "#/components/schemas/TeamUpBilling" } ], "nullable": true, "readOnly": true }, "franchise_fee_issues": { "type": "array", "items": { "$ref": "#/components/schemas/FranchiseFeeIssue" }, "nullable": true, "readOnly": true }, "go_cardless": { "allOf": [ { "$ref": "#/components/schemas/GoCardless" } ], "nullable": true, "readOnly": true }, "stripe": { "allOf": [ { "$ref": "#/components/schemas/Stripe" } ], "nullable": true, "readOnly": true } }, "required": [ "franchise_fee_issues", "go_cardless", "lock_out_override_applied", "locked_out", "stripe", "teamup_billing" ], "title": "ProviderAccountStatus" }, "ProviderCaseType": { "type": "object", "properties": { "name": { "type": "string" } }, "required": [ "name" ], "title": "ProviderCaseType" }, "ProviderEntitlements": { "type": "object", "properties": { "custom_branded_app": { "type": "boolean", "readOnly": true }, "teamup_perform": { "type": "boolean", "readOnly": true }, "marketing_suite": { "type": "boolean", "readOnly": true } }, "required": [ "custom_branded_app", "marketing_suite", "teamup_perform" ], "title": "ProviderEntitlements" }, "ProviderPlatformSubscription": { "type": "object", "properties": { "current_billing_period": { "allOf": [ { "$ref": "#/components/schemas/CurrentBillingPeriod" } ], "nullable": true, "readOnly": true } }, "required": [ "current_billing_period" ], "title": "ProviderPlatformSubscription" }, "ProviderRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "provider" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 255 }, "description": { "type": "string" }, "logo": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "country": { "type": "string", "readOnly": true }, "currency": { "$ref": "#/components/schemas/Currency" }, "is_marketing_preference_on_customer_forms": { "type": "boolean" }, "icalendar_links": { "$ref": "#/components/schemas/ICalendarLinks", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "contact_info": { "$ref": "#/components/schemas/ContactInfo", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "default_registration_settings": { "$ref": "#/components/schemas/DefaultRegistrationSettings", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "registration_settings": { "$ref": "#/components/schemas/RegistrationSettingsRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "address": { "$ref": "#/components/schemas/Address", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "country", "currency", "id", "is_marketing_preference_on_customer_forms", "logo", "name", "object" ], "title": "ProviderRead" }, "ProviderStoreSettingsRead": { "type": "object", "properties": { "provider": { "type": "integer" }, "enabled": { "type": "boolean" }, "purchase_terms": { "type": "string", "default": "" } }, "required": [ "enabled", "provider" ], "title": "ProviderStoreSettingsRead" }, "ProviderTheme": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "provider_theme" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "homescreen_logo": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true } }, "required": [ "homescreen_logo", "id", "object" ], "title": "ProviderTheme" }, "ProviderUserReciprocalCalendarSettingsCreateRequest": { "type": "object", "properties": { "base64_calendar_source_calendar_id": { "type": "string", "minLength": 1 }, "calendar_source_account": { "type": "integer" }, "calendar_source_calendar_id": { "type": "string", "minLength": 1 }, "constrain_only_busy": { "type": "boolean", "description": "If True, only consider the 'busy events' when checking busy periods." }, "is_destination_for_teamup_events": { "type": "boolean" }, "is_source_for_busy_periods": { "type": "boolean" }, "push_only_if_event_has_attendees": { "type": "boolean" }, "reminder_number_of_minutes_prior": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64" }, "set_external_reminders_for_pushed_events": { "type": "boolean" } }, "required": [ "calendar_source_account", "is_destination_for_teamup_events", "is_source_for_busy_periods" ], "title": "ProviderUserReciprocalCalendarSettingsCreateRequest" }, "ProviderUserReciprocalCalendarSettingsRead": { "type": "object", "properties": { "base64_calendar_source_calendar_id": { "type": "string", "readOnly": true }, "calendar_source_calendar_id": { "type": "string", "readOnly": true }, "constrain_only_busy": { "type": "boolean", "readOnly": true, "description": "If True, only consider the 'busy events' when checking busy periods." }, "id": { "type": "integer", "readOnly": true }, "is_active": { "type": "boolean", "description": "Returns True if the calendar settings are active.\nFor single object access, this property is convenient.\nFor querysets, use the with_status_annotations() method instead.", "readOnly": true }, "is_destination_for_teamup_events": { "type": "boolean", "readOnly": true, "description": "If True, use this calendar as a destination for Teamup events." }, "is_source_for_busy_periods": { "type": "boolean", "readOnly": true, "description": "If True, use this calendar's events to build up busy periods for slot booking." }, "calendar_ready": { "type": "boolean", "description": "Returns True if the calendar watch is fulfilled.", "readOnly": true }, "events_ready": { "type": "boolean", "description": "Returns True if the events watch is fulfilled.", "readOnly": true }, "push_only_if_event_has_attendees": { "type": "boolean", "readOnly": true }, "reminder_number_of_minutes_prior": { "type": "integer", "readOnly": true }, "set_external_reminders_for_pushed_events": { "type": "boolean", "readOnly": true }, "calendar_source_account": { "$ref": "#/components/schemas/CalendarSourceAccountRead", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "base64_calendar_source_calendar_id", "calendar_ready", "calendar_source_calendar_id", "constrain_only_busy", "events_ready", "id", "is_active", "is_destination_for_teamup_events", "is_source_for_busy_periods", "push_only_if_event_has_attendees", "reminder_number_of_minutes_prior", "set_external_reminders_for_pushed_events" ], "title": "ProviderUserReciprocalCalendarSettingsRead" }, "PurchaseFeeRead": { "type": "object", "properties": { "applicable_to": { "type": "array", "items": { "type": "string", "enum": [ "event", "course", "membership", "recurring_membership", "store", "gift_card", "joining_fee" ] } }, "flat_fee": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "id": { "type": "integer", "readOnly": true }, "name": { "type": "string" }, "percent_fee": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,3}(?:\\.\\d{0,3})?$" }, "rounding_strategy": { "type": "string", "enum": [ "NO_ROUNDING", "NEAREST_INTEGER", "DOWN_CENT", "UP_CENT" ] }, "type": { "type": "string", "enum": [ "PERCENT", "FLAT" ] } }, "required": [ "applicable_to", "flat_fee", "id", "name", "percent_fee", "rounding_strategy", "type" ], "title": "PurchaseFeeRead" }, "PushNotificationRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "push_notification" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "enum": [ "reserved", "autobooked", "expired", "event_canceled", "class_reminder", "failed_payment", "missing_forms_and_waivers" ] }, "title": { "type": "string" }, "body": { "type": "string" }, "data": {}, "customer": { "type": "integer", "readOnly": true }, "is_read": { "type": "boolean", "readOnly": true }, "read_at": { "type": "string", "format": "date-time", "nullable": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "body", "created_at", "customer", "data", "id", "is_read", "object", "title", "type" ], "title": "PushNotificationRead" }, "PushNotificationTokenCreateRequest": { "type": "object", "properties": { "platform": { "type": "string", "enum": [ "ios", "android" ] }, "registration_token": { "type": "string", "minLength": 1, "maxLength": 255 }, "device_name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 100 } }, "required": [ "platform", "registration_token" ], "title": "PushNotificationTokenCreateRequest" }, "PushNotificationTokenRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "platform": { "type": "string", "enum": [ "ios", "android" ] }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "registration_token": { "type": "string", "maxLength": 255 }, "preference": { "type": "string", "enum": [ "disabled", "enabled" ] }, "device_name": { "type": "string", "nullable": true, "maxLength": 100 } }, "required": [ "created_at", "id", "platform", "preference", "registration_token" ], "title": "PushNotificationTokenRead" }, "PushNotificationTypeRead": { "type": "object", "properties": { "id": { "type": "integer" }, "short_name": { "type": "string", "description": "A stable identifier for the type, as on the SMS settings." }, "name": { "type": "string" }, "description": { "type": "string" }, "enabled": { "type": "boolean", "description": "Whether the provider sends this type of push notification." } }, "required": [ "description", "enabled", "id", "name", "short_name" ], "title": "PushNotificationTypeRead" }, "PushNotificationTypeWriteRequest": { "type": "object", "properties": { "id": { "type": "integer" }, "enabled": { "type": "boolean" } }, "required": [ "enabled", "id" ], "title": "PushNotificationTypeWriteRequest" }, "PushSettingsRead": { "type": "object", "properties": { "notification_types": { "type": "array", "items": { "$ref": "#/components/schemas/PushNotificationTypeRead" }, "readOnly": true }, "missing_forms_and_waivers": { "allOf": [ { "$ref": "#/components/schemas/MissingFormsWaiversPushScheduleRead" } ], "description": "The push schedule for missing forms & waivers. Separate from the email settings; the on/off switch is its entry in notification_types." } }, "required": [ "missing_forms_and_waivers", "notification_types" ], "title": "PushSettingsRead" }, "ReactivationBillingPeriod": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "original_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "active_period": { "$ref": "#/components/schemas/Period" }, "ratio": { "$ref": "#/components/schemas/ReactivationRatio" } }, "required": [ "active_period", "end_date", "original_price", "ratio", "start_date" ], "title": "ReactivationBillingPeriod" }, "ReactivationRatio": { "type": "object", "properties": { "available_units": { "type": "integer" }, "total_units": { "type": "integer" } }, "required": [ "available_units", "total_units" ], "title": "ReactivationRatio" }, "ReadImage": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "image" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "url": { "type": "string", "format": "uri" }, "profile": { "type": "integer", "nullable": true }, "original_width": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "original_height": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true }, "user": { "type": "integer", "nullable": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true } }, "required": [ "created_at", "id", "object", "url" ], "title": "ReadImage" }, "RecipientsPreviewRequestRequest": { "type": "object", "properties": { "channel": { "enum": [ "sms", "email" ], "type": "string", "description": "* `sms` - sms\n* `email` - email", "x-spec-enum-id": "a718e613965537ee" }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9", "default": "general" }, "target_recipients": { "$ref": "#/components/schemas/BroadcastMessageTargetRecipientsParamsRequest" } }, "required": [ "channel", "target_recipients" ], "title": "RecipientsPreviewRequestRequest" }, "RecipientsPreviewResponse": { "type": "object", "properties": { "channel": { "type": "string" }, "recipient_counts": { "$ref": "#/components/schemas/BroadcastMessageRecipientCount" }, "sms_enabled": { "type": "boolean" } }, "required": [ "channel", "recipient_counts" ], "title": "RecipientsPreviewResponse" }, "RecurringReservationRead": { "type": "object", "properties": { "offering_type": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeRead" } ] }, "offering_type_subtype": { "enum": [ 0, 1 ], "type": "integer", "description": "* `0` - Class\n* `1` - Appointment", "x-spec-enum-id": "81f2ab1442be2a27", "readOnly": true }, "venue": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "instructor": { "type": "integer", "readOnly": true }, "start_date": { "type": "string", "format": "date" }, "day": { "type": "string", "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "start_time": { "type": "string", "format": "time" }, "end_time": { "type": "string", "format": "time" }, "first_session_starts_at": { "type": "string", "format": "date-time" }, "first_session_ends_at": { "type": "string", "format": "date-time" }, "customer": { "oneOf": [ { "type": "integer", "readOnly": true, "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "end_date": { "type": "string", "format": "date" }, "status": { "type": "string", "enum": [ "active", "ended" ] }, "id": { "type": "integer", "readOnly": true } }, "required": [ "customer", "day", "end_date", "end_time", "first_session_ends_at", "first_session_starts_at", "id", "instructor", "offering_type", "offering_type_subtype", "start_date", "start_time", "status", "venue" ], "title": "RecurringReservationRead" }, "RefereeServiceFeeDiscount": { "type": "object", "properties": { "activated_at": { "type": "string", "format": "date-time", "nullable": true }, "months_used": { "type": "integer", "nullable": true }, "months_total": { "type": "integer", "nullable": true }, "discount_percentage": { "type": "integer", "nullable": true } }, "required": [ "activated_at", "discount_percentage", "months_total", "months_used" ], "title": "RefereeServiceFeeDiscount" }, "Referral": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "platform_referral" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "business_name": { "type": "string", "readOnly": true }, "signed_up_at": { "type": "string", "format": "date-time", "readOnly": true }, "reward_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "status": { "enum": [ "paid_out", "reward_processing", "pending_first_payment" ], "type": "string", "description": "* `paid_out` - paid_out\n* `reward_processing` - reward_processing\n* `pending_first_payment` - pending_first_payment", "x-spec-enum-id": "7a92b34771b4bf12", "readOnly": true } }, "required": [ "business_name", "id", "object", "reward_amount", "signed_up_at", "status" ], "title": "Referral" }, "ReferralCode": { "type": "object", "properties": { "code": { "type": "string" }, "share_url": { "type": "string", "format": "uri" } }, "required": [ "code", "share_url" ], "title": "ReferralCode" }, "ReferralCodeRequest": { "type": "object", "properties": { "code": { "type": "string", "minLength": 1 }, "share_url": { "type": "string", "format": "uri", "minLength": 1 } }, "required": [ "code", "share_url" ], "title": "ReferralCodeRequest" }, "ReferralProgram": { "type": "object", "properties": { "trial_days": { "type": "integer", "readOnly": true }, "reduced_service_fee_months": { "type": "integer", "readOnly": true }, "reduced_service_fee_percentage": { "type": "integer", "readOnly": true }, "reward_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true } }, "required": [ "reduced_service_fee_months", "reduced_service_fee_percentage", "reward_amount", "trial_days" ], "title": "ReferralProgram" }, "ReferralStats": { "type": "object", "properties": { "link_clicks": { "type": "integer", "readOnly": true }, "approved_signups": { "type": "integer", "readOnly": true }, "pending_signups": { "type": "integer", "readOnly": true }, "earned_rewards_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "pending_rewards_total": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true } }, "required": [ "approved_signups", "earned_rewards_total", "link_clicks", "pending_rewards_total", "pending_signups" ], "title": "ReferralStats" }, "RefreshAccessTokenParamsRequest": { "type": "object", "properties": { "refresh_token": { "type": "string", "minLength": 1 }, "scope": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "Update the scope of the access token being requested. Only the provider scope can be changed when refreshing a JWT. It should take the format of `provider:`" } }, "required": [ "refresh_token" ], "title": "RefreshAccessTokenParamsRequest" }, "RefreshTokenExpiredResponse": { "type": "object", "properties": { "type": { "type": "string" }, "code": { "type": "string" }, "message": { "type": "string" } }, "required": [ "code", "message", "type" ], "title": "RefreshTokenExpiredResponse" }, "RegistrationEligibility": { "type": "object", "properties": { "drop_in_price": { "nullable": false }, "global_restrictions": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "code": { "nullable": false, "type": "string" }, "data": { "nullable": false, "type": "object" }, "description": { "nullable": false, "type": "string" } } } }, "membership_options": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "customer_membership": { "nullable": false, "type": "integer" }, "expiration_date": { "nullable": false }, "is_drop_in_membership": { "nullable": false, "type": "boolean" }, "name": { "nullable": false, "type": "string" }, "on_allotment_price": { "nullable": false }, "restrictions": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "code": { "nullable": false, "type": "string" }, "data": { "nullable": false, "type": "object" }, "description": { "nullable": false, "type": "string" } } } }, "start_date": { "nullable": false, "type": "string", "format": "date" } } } }, "membership_purchases_available": { "nullable": false, "type": "boolean" }, "open_checkout_url": { "nullable": false }, "prerequisites": { "nullable": false, "type": "object", "properties": { "completion_url": { "nullable": false }, "deferred_forms": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } }, "deferred_waivers": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } }, "forms": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } }, "policies": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } }, "unfulfilled_requisites": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } }, "waivers": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } } } } }, "recurring_reservations": { "nullable": false } }, "title": "RegistrationEligibility" }, "RegistrationEligibilityParamsRequest": { "type": "object", "properties": { "target_type": { "enum": [ "appointment_slot", "room_rental_slot", "class", "checkin" ], "type": "string", "description": "* `appointment_slot` - appointment_slot\n* `room_rental_slot` - room_rental_slot\n* `class` - class\n* `checkin` - checkin", "x-spec-enum-id": "9c8a050e9ed0ef91" }, "event": { "type": "integer" }, "appointment_slot": { "type": "string", "minLength": 1 }, "room_rental_slot": { "type": "string", "minLength": 1 }, "checkin_date": { "type": "string", "format": "date" }, "checkin_venue": { "type": "integer" }, "customer": { "type": "integer" } }, "required": [ "customer", "target_type" ], "title": "RegistrationEligibilityParamsRequest" }, "RegistrationOption": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "registration_option" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "offering_type": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/OfferingTypeRead" } ] }, "drop_in_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "requires_membership_grant": { "type": "boolean", "readOnly": true }, "type": { "enum": [ "offering_type", "time_slot", "course" ], "type": "string", "readOnly": true }, "time_slots": { "type": "array", "items": { "$ref": "#/components/schemas/RegistrationTimeSlot" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "drop_in_price", "id", "object", "offering_type", "requires_membership_grant", "type" ], "title": "RegistrationOption" }, "RegistrationSettingsRead": { "type": "object", "properties": { "late_cancellation_note": { "type": "string" }, "max_daily_registrations_per_customer": { "type": "integer", "nullable": true }, "max_daily_waitlists_per_customer": { "type": "integer", "nullable": true } }, "required": [ "late_cancellation_note", "max_daily_registrations_per_customer", "max_daily_waitlists_per_customer" ], "title": "RegistrationSettingsRead" }, "RegistrationTimeSlot": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "registration_time_slot" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "offering_type": { "type": "integer" }, "registration_option": { "type": "integer" }, "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date", "nullable": true }, "start_time": { "type": "string", "format": "time" }, "end_time": { "type": "string", "format": "time", "nullable": true }, "day": { "type": "string", "enum": [ "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday" ] }, "occupancy": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648, "nullable": true, "title": "Class Size Limit" } }, "required": [ "day", "id", "object", "offering_type", "registration_option", "start_date", "start_time" ], "title": "RegistrationTimeSlot" }, "RegistrationTimelineRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "registration_timeline" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "nullable": true, "maxLength": 256 }, "audience_type": { "type": "string", "enum": [ "everyone", "business_only", "membership_holders", "specific_memberships", "specific_customers", "private_url" ] }, "thumbnail": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true } }, "required": [ "audience_type", "id", "object", "thumbnail" ], "title": "RegistrationTimelineRead" }, "ReportExportRead": { "type": "object", "properties": { "job": { "type": "integer", "description": "The `id` of a job running asynchronously to generate the report file for download. The job can be retrieved using the `GET /jobs/{id}` endpoint." } }, "required": [ "job" ], "title": "ReportExportRead" }, "ResendEmailConfirmationSuccess": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "OK" ], "description": "Constant value: OK" } }, "required": [ "status" ], "title": "ResendEmailConfirmationSuccess" }, "Resolution": { "type": "object", "properties": { "type": { "enum": [ "charge", "credit" ], "type": "string", "description": "* `charge` - charge\n* `credit` - credit", "x-spec-enum-id": "68c8d56477cebfce" }, "amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "is_customized": { "type": "boolean" } }, "required": [ "amount", "is_customized", "type" ], "title": "Resolution" }, "ResolvedEventRegistrationTimeline": { "type": "object", "properties": { "registration_timeline": { "$ref": "#/components/schemas/RegistrationTimelineRead" }, "calendar_opens_at": { "type": "string", "readOnly": true }, "registrations_open_at": { "type": "string", "readOnly": true }, "registrations_close_at": { "type": "string", "readOnly": true }, "late_cancels_after": { "type": "string", "readOnly": true } }, "required": [ "calendar_opens_at", "late_cancels_after", "registration_timeline", "registrations_close_at", "registrations_open_at" ], "title": "ResolvedEventRegistrationTimeline" }, "RoomRentalSettingsRead": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "room_uniformity": { "type": "boolean", "readOnly": true } }, "required": [ "duration", "room_uniformity" ], "title": "RoomRentalSettingsRead" }, "RoomRentalSettingsRequest": { "type": "object", "properties": { "duration": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 5 }, "buffer_before": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "buffer_after": { "type": "integer", "description": "The duration in minutes.", "maximum": 1440, "minimum": 0, "default": 0 }, "start_time_increments": { "enum": [ null, 15, 30, 45, 60 ], "description": "* `None` - auto\n* `15` - 15 minutes\n* `30` - 30 minutes\n* `45` - 45 minutes\n* `60` - 60 minutes", "x-spec-enum-id": "f766a6a5a6594b88", "nullable": true }, "room_uniformity": { "type": "boolean", "default": true } }, "required": [ "duration" ], "title": "RoomRentalSettingsRequest" }, "SMS2FACodeRead": { "type": "object", "properties": { "success": { "type": "string", "enum": [ true ], "description": "Constant value: True" }, "message": { "type": "string" }, "expires_at": { "type": "string", "format": "date-time" }, "verification_code": { "type": "string", "maxLength": 6 } }, "required": [ "message", "success" ], "title": "SMS2FACodeRead" }, "SMSAccountRead": { "type": "object", "properties": { "verified": { "type": "boolean", "readOnly": true }, "country": { "type": "string", "readOnly": true }, "full_number": { "type": "string", "readOnly": true }, "phone_number": { "type": "string", "readOnly": true }, "enabled": { "type": "boolean" } }, "required": [ "country", "enabled", "full_number", "phone_number", "verified" ], "title": "SMSAccountRead" }, "SMSAccountUpdateRequest": { "type": "object", "properties": { "phone_number": { "type": "string", "writeOnly": true, "minLength": 1 }, "country": { "type": "string", "writeOnly": true, "minLength": 1 }, "enabled": { "type": "boolean" } }, "required": [ "country", "enabled", "phone_number" ], "title": "SMSAccountUpdateRequest" }, "SMSAccountVerifyParamsRequest": { "type": "object", "properties": { "verification_code": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 8 } }, "title": "SMSAccountVerifyParamsRequest" }, "SMSAccountVerifySuccess": { "type": "object", "properties": { "status": { "type": "string", "enum": [ "OK" ], "description": "Constant value: OK" } }, "required": [ "status" ], "title": "SMSAccountVerifySuccess" }, "SMSMessagesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "status", "status_updated_at", "queued_at", "content", "interaction_trigger", "interaction.trigger", "interaction" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `status` - status\n* `status_updated_at` - status_updated_at\n* `queued_at` - queued_at\n* `content` - content\n* `interaction_trigger` - interaction_trigger\n* `interaction.trigger` - interaction.trigger\n* `interaction` - interaction", "x-spec-enum-id": "5893eeaa044e1943" }, "description": "Specify which columns to include." }, "status": { "type": "array", "items": { "type": "string", "enum": [ "queued", "sent", "external_error", "delivered", "failed", "undelivered" ] }, "description": "Only include rows with particular statuses." }, "interaction_triggers": { "type": "array", "items": { "enum": [ "waitlist_added", "waitlist_spot_available", "waitlist_spot_expired", "waitlist_removed", "event_cancelled", "event_changed", "event_registration_confirmed", "event_reminder", "verification_code", "two_factor_authentication", "broadcast_message", "boxmate_journey" ], "type": "string", "description": "* `waitlist_added` - waitlist_added\n* `waitlist_spot_available` - waitlist_spot_available\n* `waitlist_spot_expired` - waitlist_spot_expired\n* `waitlist_removed` - waitlist_removed\n* `event_cancelled` - event_cancelled\n* `event_changed` - event_changed\n* `event_registration_confirmed` - event_registration_confirmed\n* `event_reminder` - event_reminder\n* `verification_code` - verification_code\n* `two_factor_authentication` - two_factor_authentication\n* `broadcast_message` - broadcast_message\n* `boxmate_journey` - boxmate_journey", "x-spec-enum-id": "09bdc98710126411" }, "description": "Only include rows with particular triggers." }, "customers": { "type": "array", "items": { "type": "integer" }, "description": "Only include rows for particular customers. Formas as customer `id` values." }, "status_updated_at_lte": { "type": "string", "format": "date-time", "description": "Only include messages with a status update on or before a timestamp." }, "status_updated_at_gte": { "type": "string", "format": "date-time", "description": "Only include messages with a status update on or after a timestamp." }, "status_updated_at_timeframe": { "type": "string", "description": "Only include messages with a status update within a particular timeframe." } }, "title": "SMSMessagesParamsRequest" }, "ScopedProvider": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "maxLength": 255 }, "object": { "enum": [ "scoped_provider" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." } }, "required": [ "id", "name", "object" ], "title": "ScopedProvider" }, "SendFormRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "SendFormRequest" }, "SendMissingFormsEmailResult": { "type": "object", "properties": { "success": { "type": "boolean", "readOnly": true }, "reason": { "enum": [ "provider_inactive", "notifications_disabled", "no_missing_documents", "throttled" ], "type": "string", "x-spec-enum-id": "95e5154aeee1c910", "readOnly": true, "description": "Machine-readable skip reason; present only when success is false.\n\n* `provider_inactive` - provider_inactive\n* `notifications_disabled` - notifications_disabled\n* `no_missing_documents` - no_missing_documents\n* `throttled` - throttled" }, "message": { "type": "string", "readOnly": true, "description": "Human-readable explanation; present only when success is false." } }, "required": [ "message", "reason", "success" ], "title": "SendMissingFormsEmailResult" }, "SendTestEmail": { "type": "object", "properties": { "subject": { "type": "string" }, "body_html": { "type": "string" } }, "required": [ "body_html", "subject" ], "title": "SendTestEmail" }, "SendTestEmailRequest": { "type": "object", "properties": { "subject": { "type": "string", "minLength": 1 }, "body_html": { "type": "string", "minLength": 1 } }, "required": [ "body_html", "subject" ], "title": "SendTestEmailRequest" }, "SendWaiverRequest": { "type": "object", "properties": { "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "SendWaiverRequest" }, "SessionCriterionWriteRequest": { "type": "object", "properties": { "venue": { "type": "integer" }, "offering_types": { "type": "string" } }, "required": [ "offering_types", "venue" ], "title": "SessionCriterionWriteRequest" }, "Share": { "type": "object", "properties": { "customer": { "type": "integer", "readOnly": true }, "family": { "type": "boolean" }, "shared": { "type": "boolean" } }, "required": [ "customer", "family", "shared" ], "title": "Share" }, "ShareMembership": { "type": "object", "properties": { "customers": { "type": "array", "items": { "type": "integer" } } }, "required": [ "customers" ], "title": "ShareMembership" }, "ShareMembershipRequest": { "type": "object", "properties": { "customers": { "type": "array", "items": { "type": "integer" } } }, "required": [ "customers" ], "title": "ShareMembershipRequest" }, "SlotInitiatePurchaseParamsRequest": { "type": "object", "properties": { "return_to": { "type": "string", "format": "uri", "minLength": 1 }, "customer": { "type": "integer" } }, "required": [ "customer" ], "title": "SlotInitiatePurchaseParamsRequest" }, "SlotInitiatePurchaseSuccess": { "type": "object", "properties": { "next_url": { "type": "string", "format": "uri" }, "expires_at": { "type": "string", "format": "date-time" } }, "required": [ "expires_at", "next_url" ], "title": "SlotInitiatePurchaseSuccess" }, "SlotRead": { "type": "object", "properties": { "object": { "enum": [ "appointment_slot", "room_rental_slot" ], "type": "string", "readOnly": true }, "id": { "type": "string", "readOnly": true, "description": "Uniquely identifies the slot." }, "offering_type": { "type": "integer", "readOnly": true }, "instructor": { "type": "integer", "readOnly": true, "nullable": true }, "venue": { "type": "integer", "readOnly": true, "nullable": true }, "venue_room": { "type": "integer", "readOnly": true, "nullable": true }, "starts_at": { "type": "string", "readOnly": true }, "ends_at": { "type": "string", "readOnly": true }, "is_available": { "type": "boolean", "readOnly": true }, "start_time": { "type": "string", "readOnly": true }, "end_time": { "type": "string", "readOnly": true }, "utc_start": { "type": "string", "readOnly": true }, "utc_end": { "type": "string", "readOnly": true }, "encoded_slot_data": { "type": "string", "readOnly": true }, "registrations_open": { "type": "string", "readOnly": true }, "registrations_close": { "type": "string", "readOnly": true }, "cancellation_cutoff": { "type": "string", "readOnly": true } }, "required": [ "cancellation_cutoff", "encoded_slot_data", "end_time", "ends_at", "id", "instructor", "is_available", "object", "offering_type", "registrations_close", "registrations_open", "start_time", "starts_at", "utc_end", "utc_start", "venue", "venue_room" ], "title": "SlotRead" }, "SlotRegisterParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "customer_membership": { "type": "integer" } }, "required": [ "customer" ], "title": "SlotRegisterParamsRequest" }, "SlotRegisterSuccess": { "type": "object", "properties": { "attendance": { "type": "integer" }, "event": { "type": "integer" } }, "required": [ "attendance", "event" ], "title": "SlotRegisterSuccess" }, "StaffAssignmentRead": { "type": "object", "properties": { "id": { "type": "integer" }, "object": { "enum": [ "crm_staff_assignment" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "customer": { "type": "integer", "description": "ID of the customer this staff assignment belongs to." }, "staff": { "oneOf": [ { "type": "integer", "description": "ID of the staff member assigned to the customer. *This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/StaffRead" } ] } }, "required": [ "customer", "id", "object", "staff" ], "title": "StaffAssignmentRead" }, "StaffCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "email": { "type": "string", "format": "email", "minLength": 1 }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } } }, "required": [ "email", "name", "permissions" ], "title": "StaffCreateRequest" }, "StaffRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "staff" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 100 }, "image": { "title": "ImageReference", "type": "object", "properties": { "id": { "type": [ "integer" ], "example": 13314 }, "url": { "type": "string", "format": "uri" }, "original_width": { "type": "number", "example": 64 }, "original_height": { "type": "integer", "example": 64 } }, "nullable": true }, "permissions": { "type": "object", "properties": { "email_notifications": { "type": "boolean" }, "revenue": { "type": "boolean" }, "attendances": { "type": "boolean" }, "super_admin": { "type": "boolean" }, "customers": { "type": "boolean" }, "discount_codes": { "type": "boolean" }, "manage_events": { "type": "boolean" }, "store": { "type": "boolean" }, "developer": { "type": "boolean" }, "customer_payments": { "type": "boolean" }, "instructor_attendances": { "type": "boolean" }, "instructor_manage_events": { "type": "boolean" }, "pos": { "type": "boolean" }, "crm_all_customer_records": { "type": "boolean" }, "crm_own_customer_records": { "type": "boolean" }, "crm_lifecycle_status_admin": { "type": "boolean" }, "perform_by_boxmate": { "type": "boolean" }, "marketing_suite": { "type": "boolean" } } }, "email": { "type": "string", "readOnly": true }, "user": { "type": "integer", "nullable": true } }, "required": [ "email", "id", "image", "name", "object", "permissions" ], "title": "StaffRead" }, "StaffUISettingsRead": { "type": "object", "properties": { "customer_list": { "nullable": true } }, "required": [ "customer_list" ], "title": "StaffUISettingsRead" }, "StartBillingPeriod": { "type": "object", "properties": { "start_date": { "type": "string", "format": "date" }, "end_date": { "type": "string", "format": "date" }, "original_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "inactive_period": { "$ref": "#/components/schemas/Period" }, "ratio": { "$ref": "#/components/schemas/StartRatio" } }, "required": [ "end_date", "inactive_period", "original_price", "ratio", "start_date" ], "title": "StartBillingPeriod" }, "StartRatio": { "type": "object", "properties": { "unavailable_units": { "type": "integer" }, "total_units": { "type": "integer" } }, "required": [ "total_units", "unavailable_units" ], "title": "StartRatio" }, "StartVerificationParamsRequest": { "type": "object", "properties": { "phone_number": { "type": "string", "minLength": 1, "maxLength": 20 }, "provider": { "type": "integer" }, "direct_auth_key": { "type": "string", "minLength": 1 }, "pending_login": { "type": "string", "format": "uuid", "nullable": true } }, "required": [ "direct_auth_key", "phone_number", "provider" ], "title": "StartVerificationParamsRequest" }, "StatusCondition": { "oneOf": [ { "type": "object", "properties": { "condition_type": { "enum": [ "customer_membership_hold_exists" ], "type": "string", "description": "* `customer_membership_hold_exists` - customer_membership_hold_exists", "x-spec-enum-id": "d843aede7035d169" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CustomerMembershipHoldCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "recurring_membership_payment_failure_count" ], "type": "string", "description": "* `recurring_membership_payment_failure_count` - recurring_membership_payment_failure_count", "x-spec-enum-id": "d6d6f552827829e0" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 } }, "required": [ "condition_type", "count", "operator" ], "title": "RecurringMembershipPaymentFailureCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "account_claimed" ], "type": "string", "description": "* `account_claimed` - account_claimed", "x-spec-enum-id": "fd86f94593cd13bc" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - equals\n* `not_equals` - not_equals", "x-spec-enum-id": "bdd75729ce114f50" }, "is_claimed": { "type": "boolean" } }, "required": [ "condition_type", "is_claimed", "operator" ], "title": "AccountClaimedCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_exists" ], "type": "string", "description": "* `attendance_exists` - attendance_exists", "x-spec-enum-id": "4449de137a02fed3" }, "exists": { "type": "boolean", "default": true }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type" ], "title": "AttendanceExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_penalty_exists" ], "type": "string", "description": "* `attendance_penalty_exists` - attendance_penalty_exists", "x-spec-enum-id": "12bc77c4ee5b3c9b" }, "exists": { "type": "boolean", "default": true } }, "required": [ "condition_type" ], "title": "AttendancePenaltyExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "late_cancel_count" ], "type": "string", "description": "* `late_cancel_count` - late_cancel_count", "x-spec-enum-id": "c05adebea7acbfd9" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "LateCancelCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "remaining_pack_uses_count" ], "type": "string", "description": "* `remaining_pack_uses_count` - remaining_pack_uses_count", "x-spec-enum-id": "97447a201d5a2941" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type", "count", "operator" ], "title": "RemainingPackUsesCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "lead_source" ], "type": "string", "description": "* `lead_source` - lead_source", "x-spec-enum-id": "da2716953cbde696" }, "lead_sources": { "type": "array", "items": { "type": "integer" }, "description": "At least one lead source is required." } }, "required": [ "condition_type", "lead_sources" ], "title": "LeadSourceCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_count" ], "type": "string", "description": "* `attendance_count` - attendance_count", "x-spec-enum-id": "6014d1e3e6a9240a" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "AttendanceCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "no_show_count" ], "type": "string", "description": "* `no_show_count` - no_show_count", "x-spec-enum-id": "afbe2f444069730b" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "NoShowCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_since_signup" ], "type": "string", "description": "* `days_since_signup` - days_since_signup", "x-spec-enum-id": "32433e48ca82ebfa" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 0 } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceSignupCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "cancelled_customer_membership_exists" ], "type": "string", "description": "* `cancelled_customer_membership_exists` - cancelled_customer_membership_exists", "x-spec-enum-id": "c104542a3487bfc8" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CancelledCustomerMembershipCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_since_last_attendance" ], "type": "string", "description": "* `days_since_last_attendance` - days_since_last_attendance", "x-spec-enum-id": "d02053989a65f260" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 1 }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceLastAttendanceCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "customer_registration_block_exists" ], "type": "string", "description": "* `customer_registration_block_exists` - customer_registration_block_exists", "x-spec-enum-id": "0591203f2907176a" }, "exists": { "type": "boolean", "default": true } }, "required": [ "condition_type" ], "title": "CustomerRegistrationBlockExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "completed_membership_pack_exists" ], "type": "string", "description": "* `completed_membership_pack_exists` - completed_membership_pack_exists", "x-spec-enum-id": "d83c9951328e85f9" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CompletedMembershipPackExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "active_customer_membership_exists" ], "type": "string", "description": "* `active_customer_membership_exists` - active_customer_membership_exists", "x-spec-enum-id": "b6f8d0a9fa1ef2c0" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "ActiveCustomerMembershipCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_in_status" ], "type": "string", "description": "* `days_in_status` - days_in_status", "x-spec-enum-id": "e3d43128656bc4ec" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 1 }, "in_status": { "type": "integer" } }, "required": [ "condition_type", "days", "in_status", "operator" ], "title": "DaysInStatusCondition" } ], "title": "StatusCondition" }, "StatusConditionRequest": { "oneOf": [ { "type": "object", "properties": { "condition_type": { "enum": [ "customer_membership_hold_exists" ], "type": "string", "description": "* `customer_membership_hold_exists` - customer_membership_hold_exists", "x-spec-enum-id": "d843aede7035d169" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CustomerMembershipHoldCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "recurring_membership_payment_failure_count" ], "type": "string", "description": "* `recurring_membership_payment_failure_count` - recurring_membership_payment_failure_count", "x-spec-enum-id": "d6d6f552827829e0" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 } }, "required": [ "condition_type", "count", "operator" ], "title": "RecurringMembershipPaymentFailureCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "account_claimed" ], "type": "string", "description": "* `account_claimed` - account_claimed", "x-spec-enum-id": "fd86f94593cd13bc" }, "operator": { "enum": [ "equals", "not_equals" ], "type": "string", "description": "* `equals` - equals\n* `not_equals` - not_equals", "x-spec-enum-id": "bdd75729ce114f50" }, "is_claimed": { "type": "boolean" } }, "required": [ "condition_type", "is_claimed", "operator" ], "title": "AccountClaimedCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_exists" ], "type": "string", "description": "* `attendance_exists` - attendance_exists", "x-spec-enum-id": "4449de137a02fed3" }, "exists": { "type": "boolean", "default": true }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type" ], "title": "AttendanceExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_penalty_exists" ], "type": "string", "description": "* `attendance_penalty_exists` - attendance_penalty_exists", "x-spec-enum-id": "12bc77c4ee5b3c9b" }, "exists": { "type": "boolean", "default": true } }, "required": [ "condition_type" ], "title": "AttendancePenaltyExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "late_cancel_count" ], "type": "string", "description": "* `late_cancel_count` - late_cancel_count", "x-spec-enum-id": "c05adebea7acbfd9" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "LateCancelCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "remaining_pack_uses_count" ], "type": "string", "description": "* `remaining_pack_uses_count` - remaining_pack_uses_count", "x-spec-enum-id": "97447a201d5a2941" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type", "count", "operator" ], "title": "RemainingPackUsesCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "lead_source" ], "type": "string", "description": "* `lead_source` - lead_source", "x-spec-enum-id": "da2716953cbde696" }, "lead_sources": { "type": "array", "items": { "type": "integer" }, "description": "At least one lead source is required." } }, "required": [ "condition_type", "lead_sources" ], "title": "LeadSourceCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "attendance_count" ], "type": "string", "description": "* `attendance_count` - attendance_count", "x-spec-enum-id": "6014d1e3e6a9240a" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "AttendanceCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "no_show_count" ], "type": "string", "description": "* `no_show_count` - no_show_count", "x-spec-enum-id": "afbe2f444069730b" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "count": { "type": "integer", "minimum": 0 }, "last_n_days": { "type": "integer", "minimum": 1, "nullable": true } }, "required": [ "condition_type", "count", "operator" ], "title": "NoShowCountCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_since_signup" ], "type": "string", "description": "* `days_since_signup` - days_since_signup", "x-spec-enum-id": "32433e48ca82ebfa" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 0 } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceSignupCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "cancelled_customer_membership_exists" ], "type": "string", "description": "* `cancelled_customer_membership_exists` - cancelled_customer_membership_exists", "x-spec-enum-id": "c104542a3487bfc8" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CancelledCustomerMembershipCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_since_last_attendance" ], "type": "string", "description": "* `days_since_last_attendance` - days_since_last_attendance", "x-spec-enum-id": "d02053989a65f260" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 1 }, "include_unconfirmed": { "type": "boolean", "nullable": true }, "offering_types": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceLastAttendanceCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "customer_registration_block_exists" ], "type": "string", "description": "* `customer_registration_block_exists` - customer_registration_block_exists", "x-spec-enum-id": "0591203f2907176a" }, "exists": { "type": "boolean", "default": true } }, "required": [ "condition_type" ], "title": "CustomerRegistrationBlockExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "completed_membership_pack_exists" ], "type": "string", "description": "* `completed_membership_pack_exists` - completed_membership_pack_exists", "x-spec-enum-id": "d83c9951328e85f9" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CompletedMembershipPackExistsCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "active_customer_membership_exists" ], "type": "string", "description": "* `active_customer_membership_exists` - active_customer_membership_exists", "x-spec-enum-id": "b6f8d0a9fa1ef2c0" }, "exists": { "type": "boolean", "default": true }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "ActiveCustomerMembershipCondition" }, { "type": "object", "properties": { "condition_type": { "enum": [ "days_in_status" ], "type": "string", "description": "* `days_in_status` - days_in_status", "x-spec-enum-id": "e3d43128656bc4ec" }, "operator": { "enum": [ "gt", "lt", "gte", "lte" ], "type": "string", "description": "* `gt` - gt\n* `lt` - lt\n* `gte` - gte\n* `lte` - lte", "x-spec-enum-id": "8141bb941b38a68c" }, "days": { "type": "integer", "minimum": 1 }, "in_status": { "type": "integer" } }, "required": [ "condition_type", "days", "in_status", "operator" ], "title": "DaysInStatusCondition" } ], "title": "StatusConditionRequest" }, "StoreOrderItemsParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "product_id", "product_variant.product.id", "product_variant", "product_variant.product", "product_name", "product_variant.product.name", "product_variant_id", "product_variant.id", "product_variant_detials", "product_variant.details", "order_id", "order.id", "order", "order_number", "order.number", "ordered_at", "order.ordered_at", "order_comments", "order.comments", "payment_status", "delivery_status", "quantity", "unit_price", "line_total" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `product_id` - product_id\n* `product_variant.product.id` - product_variant.product.id\n* `product_variant` - product_variant\n* `product_variant.product` - product_variant.product\n* `product_name` - product_name\n* `product_variant.product.name` - product_variant.product.name\n* `product_variant_id` - product_variant_id\n* `product_variant.id` - product_variant.id\n* `product_variant_detials` - product_variant_detials\n* `product_variant.details` - product_variant.details\n* `order_id` - order_id\n* `order.id` - order.id\n* `order` - order\n* `order_number` - order_number\n* `order.number` - order.number\n* `ordered_at` - ordered_at\n* `order.ordered_at` - order.ordered_at\n* `order_comments` - order_comments\n* `order.comments` - order.comments\n* `payment_status` - payment_status\n* `delivery_status` - delivery_status\n* `quantity` - quantity\n* `unit_price` - unit_price\n* `line_total` - line_total", "x-spec-enum-id": "704ca6c82de73545" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "products": { "type": "array", "items": { "type": "integer" } }, "payment_status": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } }, "delivery_status": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } }, "ordered_at_lte": { "type": "string", "format": "date-time" }, "ordered_at_gte": { "type": "string", "format": "date-time" }, "ordered_at_timeframe": { "type": "string" } }, "title": "StoreOrderItemsParamsRequest" }, "StoreOrdersParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "id", "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "number", "ordered_at", "comments", "items", "payment_status", "delivery_status", "items_count", "total_price" ], "type": "string", "description": "* `id` - id\n* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `number` - number\n* `ordered_at` - ordered_at\n* `comments` - comments\n* `items` - items\n* `payment_status` - payment_status\n* `delivery_status` - delivery_status\n* `items_count` - items_count\n* `total_price` - total_price", "x-spec-enum-id": "260ceffb2dd53ddc" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "payment_status": { "type": "array", "items": { "enum": [ "paid", "not_paid" ], "type": "string", "description": "* `paid` - paid\n* `not_paid` - not_paid", "x-spec-enum-id": "feb09b7a772c56bf" } }, "delivery_status": { "type": "array", "items": { "enum": [ "delivered", "not_delivered" ], "type": "string", "description": "* `delivered` - delivered\n* `not_delivered` - not_delivered", "x-spec-enum-id": "425f7a6659b00775" } }, "ordered_at_lte": { "type": "string", "format": "date-time" }, "ordered_at_gte": { "type": "string", "format": "date-time" }, "ordered_at_timeframe": { "type": "string" } }, "title": "StoreOrdersParamsRequest" }, "Stripe": { "type": "object", "properties": { "charges_enabled": { "type": "boolean" }, "payouts_enabled": { "type": "boolean" }, "verify_current_deadline": { "type": "string", "format": "date-time", "nullable": true }, "stripe_dashboard_url": { "type": "string" } }, "required": [ "charges_enabled", "payouts_enabled", "stripe_dashboard_url", "verify_current_deadline" ], "title": "Stripe" }, "StyleConfigRequest": { "type": "object", "properties": { "accent_color": { "type": "string", "minLength": 1 }, "background": { "type": "string", "minLength": 1 }, "font": { "type": "string", "minLength": 1, "maxLength": 64, "pattern": "^[A-Za-z0-9 \\-]+$" }, "corner_radius": { "type": "integer", "maximum": 24, "minimum": 0 } }, "title": "StyleConfigRequest" }, "TeamUpBilling": { "type": "object", "properties": { "in_retry": { "type": "boolean" }, "retry_count": { "type": "integer" }, "payment_errors": { "type": "array", "items": { "$ref": "#/components/schemas/TeamUpPaymentError" } }, "subscription": { "allOf": [ { "$ref": "#/components/schemas/TeamUpSubscription" } ], "nullable": true }, "has_payment_method": { "type": "boolean" }, "is_comped": { "type": "boolean" }, "referee_service_fee_discount": { "$ref": "#/components/schemas/RefereeServiceFeeDiscount" } }, "required": [ "has_payment_method", "in_retry", "is_comped", "payment_errors", "referee_service_fee_discount", "retry_count", "subscription" ], "title": "TeamUpBilling" }, "TeamUpPaymentError": { "type": "object", "properties": { "attempt_date": { "type": "string", "format": "date" }, "details": { "type": "string" } }, "required": [ "attempt_date", "details" ], "title": "TeamUpPaymentError" }, "TeamUpSubscription": { "type": "object", "properties": { "id": { "type": "integer" } }, "required": [ "id" ], "title": "TeamUpSubscription" }, "TerminologyRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "terminology" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "type": { "type": "string", "readOnly": true }, "singular": { "type": "string", "maxLength": 50 }, "plural": { "type": "string", "maxLength": 50 }, "singular_possessive": { "type": "string", "maxLength": 50 }, "plural_possessive": { "type": "string", "maxLength": 50 }, "replacement_strategy": { "type": "string", "readOnly": true } }, "required": [ "id", "object", "plural", "plural_possessive", "replacement_strategy", "singular", "singular_possessive", "type" ], "title": "TerminologyRead" }, "TerminologyUpdateRequest": { "type": "object", "properties": { "singular": { "type": "string", "minLength": 1, "maxLength": 50 }, "plural": { "type": "string", "minLength": 1, "maxLength": 50 }, "singular_possessive": { "type": "string", "minLength": 1, "maxLength": 50 }, "plural_possessive": { "type": "string", "minLength": 1, "maxLength": 50 } }, "required": [ "plural", "plural_possessive", "singular", "singular_possessive" ], "title": "TerminologyUpdateRequest" }, "TieredRateRead": { "type": "object", "properties": { "lower_bound": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64" }, "upper_bound": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64", "nullable": true }, "per_customer_amount": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true } }, "required": [ "lower_bound", "per_customer_amount" ], "title": "TieredRateRead" }, "TieredRateWriteRequest": { "type": "object", "properties": { "lower_bound": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64" }, "upper_bound": { "type": "integer", "maximum": 4294967295, "minimum": 0, "format": "int64", "nullable": true }, "per_customer_amount": { "type": "string", "example": "10.99", "writeOnly": true } }, "required": [ "lower_bound", "per_customer_amount" ], "title": "TieredRateWriteRequest" }, "TrackingConfigRequest": { "type": "object", "properties": { "emit_host_events": { "type": "boolean", "default": true }, "redirect_url": { "type": "string", "format": "uri", "maxLength": 500 } }, "title": "TrackingConfigRequest" }, "TrialStatus": { "type": "object", "properties": { "status": { "enum": [ "pending", "ongoing", "unknown" ], "type": "string", "readOnly": true }, "has_payment_method": { "type": "boolean" }, "billing_date": { "type": "string", "format": "date" }, "is_blocked": { "type": "boolean" }, "trial_customers_count": { "type": "integer" }, "days_total": { "type": "integer" }, "days_remaining": { "type": "integer" }, "show_chat": { "type": "boolean", "readOnly": true }, "only_customer": { "allOf": [ { "$ref": "#/components/schemas/OnlyCustomer" } ], "nullable": true, "readOnly": true } }, "required": [ "billing_date", "days_remaining", "days_total", "has_payment_method", "is_blocked", "only_customer", "show_chat", "status", "trial_customers_count" ], "title": "TrialStatus" }, "TwoFactorRequirementsRead": { "type": "object", "properties": { "is_sms_enabled": { "type": "boolean" }, "is_2fa_required_for_registration": { "type": "boolean" }, "is_2fa_required_for_login": { "type": "boolean" } }, "required": [ "is_2fa_required_for_login", "is_2fa_required_for_registration", "is_sms_enabled" ], "title": "TwoFactorRequirementsRead" }, "UnavailableEvent": { "type": "object", "properties": { "event": { "type": "integer" }, "attendance": { "type": "integer", "nullable": true }, "reasons": { "type": "array", "items": { "type": "string" }, "readOnly": true } }, "required": [ "attendance", "event", "reasons" ], "title": "UnavailableEvent" }, "UniversalCheckoutItem": { "oneOf": [ { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "event": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "event", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "ClassViaDropInCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "event": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" }, "customer_membership": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "event", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "ClassOnMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "membership", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "PrepaidMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "membership", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "DropInMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "room_rental_slot": { "type": "string" }, "event": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "RoomRentalViaDropInCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "course_date": { "type": "integer" } }, "required": [ "associated_checkout_items", "course_date", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "CourseDateViaDropinCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "course_date_series": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" }, "customer_membership": { "type": "integer" } }, "required": [ "associated_checkout_items", "course_date_series", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "CourseOnMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" }, "plan": { "type": "integer" }, "downgrade_from_customer_membership": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "downgrade_from_customer_membership", "id", "item_type", "membership", "plan", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "RecurringMembershipDowngradeCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" }, "plan": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "membership", "plan", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "RecurringMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "room_rental_slot": { "type": "string" }, "event": { "type": "integer" }, "customer_membership": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "RoomRentalOnMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "appointment_slot": { "type": "string" }, "event": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "AppointmentViaDropInCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "appointment_slot": { "type": "string" }, "event": { "type": "integer" }, "customer_membership": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "AppointmentOnMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "minimum": 1 }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "store_product_variant": { "type": "integer" }, "store_order_item": { "type": "integer" }, "store_order": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "StoreProductCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "joining_fee": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "joining_fee", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "JoiningFeeCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "membership", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "PackMembershipCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } } }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "recipient": { "type": "integer", "nullable": true }, "recipient_email": { "type": "string", "format": "email" }, "recipient_name": { "type": "string" }, "deliver_on_date": { "type": "string", "format": "date", "nullable": true } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "quantity", "recipient_email", "recipient_name", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "GiftCardCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "course_date_series": { "type": "integer" } }, "required": [ "associated_checkout_items", "course_date_series", "description", "id", "item_type", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price" ], "title": "CourseViaDropInCheckoutItem" }, { "type": "object", "properties": { "id": { "type": "string", "readOnly": true }, "item_type": { "enum": [ "MEM_RECUR", "MEM_RECUR_UP", "MEM_RECUR_DOWN", "MEM_PK", "MEM_PP", "MEM_DRP", "APPT_MEM", "APPT_DRP", "CLASS_MEM", "CLASS_DRP", "ROOM_RTL_MEM", "ROOM_RTL_DRP", "CRS_MEM", "CRS_DRP", "CRS_DT_DRP", "STR_PRO", "JOINING_FEE", "GIFT_CARD" ], "type": "string", "description": "* `MEM_RECUR` - Recurring Membership Purchase\n* `MEM_RECUR_UP` - Recurring Membership Upgrade\n* `MEM_RECUR_DOWN` - Recurring Membership Downgrade\n* `MEM_PK` - Pack Membership Purchase\n* `MEM_PP` - Prepaid Membership Purchase\n* `MEM_DRP` - Drop-In Membership Purchase\n* `APPT_MEM` - Appointment Booked on Membership\n* `APPT_DRP` - Appointment Booked via Drop-In\n* `CLASS_MEM` - Class Booked on Membership\n* `CLASS_DRP` - Class Booked via Drop-In\n* `ROOM_RTL_MEM` - Room Rental on Membership\n* `ROOM_RTL_DRP` - Room Rental via Drop-In\n* `CRS_MEM` - Course Booked on Membership\n* `CRS_DRP` - Course Booked via Drop-In\n* `CRS_DT_DRP` - Course Date Booked via Drop-In\n* `STR_PRO` - Product Purchased from Store\n* `JOINING_FEE` - Joining Fee Payment\n* `GIFT_CARD` - Gift Card", "x-spec-enum-id": "6d2eaadbf9e8f46d", "readOnly": true }, "quantity": { "type": "integer", "readOnly": true }, "unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_unit_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "standard_recurring_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "total_price": { "title": "Price", "type": "object", "properties": { "decimal": { "type": "number" }, "string": { "type": "string", "minLength": 1, "description": "The price as a string.", "example": "£45" }, "iso_currency_code": { "type": "string", "minLength": 1, "example": "gbp" }, "currency_symbol": { "type": "string", "minLength": 1, "example": "£" }, "currency_symbol_position": { "type": "string", "minLength": 1, "enum": [ "before", "after" ] } }, "readOnly": true }, "associated_checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/AssociatedCheckoutItem" }, "readOnly": true }, "description": { "type": "string", "readOnly": true }, "membership": { "type": "integer" }, "plan": { "type": "integer" }, "upgrade_from_customer_membership": { "type": "integer" } }, "required": [ "associated_checkout_items", "description", "id", "item_type", "membership", "plan", "quantity", "recurring_price", "standard_recurring_price", "standard_unit_price", "total_price", "unit_price", "upgrade_from_customer_membership" ], "title": "RecurringMembershipUpgradeCheckoutItem" } ], "title": "UniversalCheckoutItem" }, "UniversalCheckoutItemPriceRequest": { "type": "object", "properties": { "recurring_price": { "type": "string", "example": "10.99", "nullable": true }, "unit_price": { "type": "string", "example": "10.99", "nullable": true } }, "title": "UniversalCheckoutItemPriceRequest" }, "UniversalCheckoutItemQuantityRequest": { "type": "object", "properties": { "quantity": { "type": "integer", "minimum": 1 } }, "required": [ "quantity" ], "title": "UniversalCheckoutItemQuantityRequest" }, "UniversalCheckoutItemRequest": { "oneOf": [ { "type": "object", "properties": { "event": { "type": "integer" } }, "required": [ "event" ], "title": "ClassViaDropInCheckoutItem" }, { "type": "object", "properties": { "event": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" }, "customer_membership": { "type": "integer" } }, "required": [ "event" ], "title": "ClassOnMembershipCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "membership" ], "title": "PrepaidMembershipCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" } }, "required": [ "membership" ], "title": "DropInMembershipCheckoutItem" }, { "type": "object", "properties": { "room_rental_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" } }, "title": "RoomRentalViaDropInCheckoutItem" }, { "type": "object", "properties": { "course_date": { "type": "integer" } }, "required": [ "course_date" ], "title": "CourseDateViaDropinCheckoutItem" }, { "type": "object", "properties": { "course_date_series": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" }, "customer_membership": { "type": "integer" } }, "required": [ "course_date_series" ], "title": "CourseOnMembershipCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "plan": { "type": "integer" }, "downgrade_from_customer_membership": { "type": "integer" } }, "required": [ "downgrade_from_customer_membership", "membership", "plan" ], "title": "RecurringMembershipDowngradeCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "plan": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "membership", "plan" ], "title": "RecurringMembershipCheckoutItem" }, { "type": "object", "properties": { "room_rental_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" }, "customer_membership": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" } }, "title": "RoomRentalOnMembershipCheckoutItem" }, { "type": "object", "properties": { "appointment_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" } }, "title": "AppointmentViaDropInCheckoutItem" }, { "type": "object", "properties": { "appointment_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" }, "customer_membership": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" } }, "title": "AppointmentOnMembershipCheckoutItem" }, { "type": "object", "properties": { "quantity": { "type": "integer", "minimum": 1 }, "store_product_variant": { "type": "integer" }, "store_order_item": { "type": "integer" }, "store_order": { "type": "integer" } }, "required": [ "quantity" ], "title": "StoreProductCheckoutItem" }, { "type": "object", "properties": { "joining_fee": { "type": "integer" } }, "required": [ "joining_fee" ], "title": "JoiningFeeCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "renew_from_customer_membership": { "type": "integer", "nullable": true } }, "required": [ "membership" ], "title": "PackMembershipCheckoutItem" }, { "type": "object", "properties": { "unit_price": { "type": "string", "example": "10.99" }, "recipient": { "type": "integer", "nullable": true }, "recipient_email": { "type": "string", "format": "email", "minLength": 1 }, "recipient_name": { "type": "string", "minLength": 1 }, "deliver_on_date": { "type": "string", "format": "date", "nullable": true } }, "required": [ "recipient_email", "recipient_name", "unit_price" ], "title": "GiftCardCheckoutItem" }, { "type": "object", "properties": { "course_date_series": { "type": "integer" } }, "required": [ "course_date_series" ], "title": "CourseViaDropInCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "plan": { "type": "integer" }, "upgrade_from_customer_membership": { "type": "integer" } }, "required": [ "membership", "plan", "upgrade_from_customer_membership" ], "title": "RecurringMembershipUpgradeCheckoutItem" } ], "title": "UniversalCheckoutItemRequest" }, "UniversalCheckoutRead": { "type": "object", "properties": { "checkout_items": { "type": "array", "items": { "$ref": "#/components/schemas/UniversalCheckoutItem" }, "readOnly": true }, "checkout_url": { "type": "string", "readOnly": true }, "created_at": { "type": "string", "format": "date-time", "readOnly": true }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "discount_code": { "type": "string", "nullable": true }, "id": { "type": "integer", "readOnly": true }, "origin": { "type": "string", "enum": [ "POS", "API" ], "readOnly": true }, "status": { "type": "string", "enum": [ "open", "complete", "expired" ], "readOnly": true }, "return_to": { "type": "string", "nullable": true, "maxLength": 1000 }, "use_account_credit": { "type": "boolean" }, "fee_line_items": { "type": "array", "items": { "$ref": "#/components/schemas/FeeLineItem" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "checkout_items", "checkout_url", "created_at", "customer", "discount_code", "id", "origin", "status", "use_account_credit" ], "title": "UniversalCheckoutRead" }, "UniversalCheckoutReadRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "discount_code": { "type": "string", "nullable": true, "minLength": 1 }, "return_to": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 1000 }, "use_account_credit": { "type": "boolean" } }, "required": [ "customer", "discount_code", "use_account_credit" ], "title": "UniversalCheckoutReadRequest" }, "UniversalCheckoutWriteRequest": { "type": "object", "properties": { "customer": { "type": "integer" }, "discount_code": { "type": "string", "nullable": true, "minLength": 1 }, "return_to": { "type": "string", "nullable": true, "minLength": 1, "description": "The URL to return to after checkout is complete." }, "use_account_credit": { "type": "boolean" } }, "title": "UniversalCheckoutWriteRequest" }, "UnregisterParamsRequest": { "type": "object", "properties": { "customer": { "type": "integer", "description": "The unique numeric identifier of the customer to unregister." }, "is_late_cancel": { "type": "boolean", "description": "Can only be set in `provider` mode. If a customer makes the request, the late cancellation deadline will be used." } }, "required": [ "customer" ], "title": "UnregisterParamsRequest" }, "UnregisterRead": { "type": "object", "properties": { "late": { "type": "string", "readOnly": true, "description": "Whether the unregistering counted as a late cancel." }, "attendance": { "type": "integer" } }, "required": [ "attendance", "late" ], "title": "UnregisterRead" }, "UpdateVenueRoomRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 64 }, "status": { "type": "string", "enum": [ "active", "archived" ] }, "thumbnail": { "type": "integer", "nullable": true } }, "required": [ "name", "status" ], "title": "UpdateVenueRoomRequest" }, "UsageRead": { "type": "object", "properties": { "usage_periods": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "end_date": { "nullable": false }, "max_uses": { "nullable": false }, "offering_type_limits": { "nullable": false, "type": "array", "items": { "type": "object", "properties": { "is_extra": { "nullable": false, "type": "boolean" }, "max_uses": { "nullable": false }, "offering_type": { "nullable": false, "type": "object", "properties": { "id": { "nullable": false, "type": "integer" }, "name": { "nullable": false, "type": "string" } } }, "prorate_adjustment": { "nullable": false }, "remaining_count": { "nullable": false }, "used_count": { "nullable": false, "type": "integer" } } } }, "period_type": { "nullable": false, "type": "string" }, "prorate_adjustment": { "nullable": false }, "remaining_count": { "nullable": false }, "start_date": { "nullable": false }, "used_count": { "nullable": false, "type": "integer" } } } } }, "title": "UsageRead" }, "UsageSummary": { "type": "object", "properties": { "is_unlimited": { "type": "boolean", "readOnly": true }, "max_uses": { "type": "integer", "readOnly": true, "nullable": true }, "used_count": { "type": "integer", "readOnly": true, "nullable": true }, "remaining_count": { "type": "integer", "readOnly": true, "nullable": true } }, "required": [ "is_unlimited", "max_uses", "remaining_count", "used_count" ], "title": "UsageSummary" }, "UserInfoResponse": { "type": "object", "properties": { "sub": { "type": "string", "description": "Subject - Identifier for the End-User." }, "name": { "type": "string", "nullable": true, "description": "End-User's full name." }, "given_name": { "type": "string", "nullable": true, "description": "Given name(s) or first name(s) of the End-User." }, "family_name": { "type": "string", "nullable": true, "description": "Surname(s) or last name(s) of the End-User." }, "email": { "type": "string", "format": "email", "nullable": true, "description": "End-User's preferred e-mail address. Requires 'email' scope." }, "email_verified": { "type": "boolean", "nullable": true, "description": "True if the End-User's e-mail address has been verified. Requires 'email' scope." }, "updated_at": { "type": "integer", "nullable": true, "description": "Time the End-User's information was last updated (Unix timestamp)." } }, "required": [ "family_name", "given_name", "name", "sub", "updated_at" ], "title": "UserInfoResponse" }, "VenueAddress": { "type": "object", "properties": { "street": { "type": "string" }, "street_secondary": { "type": "string", "nullable": true }, "city": { "type": "string" }, "region": { "type": "string" }, "postal_code": { "type": "string" }, "country": { "type": "string" }, "lat": { "type": "number", "format": "double" }, "lng": { "type": "number", "format": "double" } }, "required": [ "city", "country", "postal_code", "region", "street", "street_secondary" ], "title": "VenueAddress" }, "VenueAddressRequest": { "type": "object", "properties": { "street": { "type": "string", "minLength": 1 }, "street_secondary": { "type": "string", "nullable": true, "minLength": 1 }, "city": { "type": "string", "minLength": 1 }, "region": { "type": "string", "minLength": 1 }, "postal_code": { "type": "string", "minLength": 1 }, "country": { "type": "string", "minLength": 1 }, "lat": { "type": "number", "format": "double" }, "lng": { "type": "number", "format": "double" } }, "required": [ "city", "country", "postal_code", "region", "street", "street_secondary" ], "title": "VenueAddressRequest" }, "VenueOfferingTypePayRates": { "type": "object", "properties": { "id": { "type": "integer" }, "name": { "type": "string" }, "offering_types": { "type": "array", "items": { "$ref": "#/components/schemas/PayRateForOfferingTypeAtVenue" }, "readOnly": true } }, "required": [ "id", "name", "offering_types" ], "title": "VenueOfferingTypePayRates" }, "VenueRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "venue" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "name": { "type": "string", "maxLength": 200 }, "description": { "type": "string", "nullable": true }, "address": { "type": "string", "readOnly": true }, "physical_address": { "allOf": [ { "$ref": "#/components/schemas/VenueAddress" } ], "nullable": true }, "timezone": { "type": "string", "maxLength": 250 }, "video_url": { "type": "string", "nullable": true }, "zoom_user": { "type": "integer", "readOnly": true }, "venue_type": { "type": "string", "enum": [ "physical", "online" ] }, "venue_rooms": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "A URL to a collection of related resources. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "VenueRoom[]", "items": { "$ref": "#/components/schemas/VenueRoom" } } ] }, "lat": { "type": "number", "format": "double" }, "lng": { "type": "number", "format": "double" }, "archived": { "type": "boolean" }, "is_online": { "type": "boolean", "readOnly": true }, "video_url_type": { "type": "string", "enum": [ "static", "zoom" ] } }, "required": [ "address", "archived", "id", "is_online", "lat", "lng", "name", "object", "physical_address", "timezone", "venue_rooms", "venue_type", "zoom_user" ], "title": "VenueRead" }, "VenueRoom": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "venue_room" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "active", "archived" ] }, "name": { "type": "string", "maxLength": 64 }, "venue": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/VenueRead" } ] }, "thumbnail": { "allOf": [ { "$ref": "#/components/schemas/ReadImage" } ], "readOnly": true }, "sequence": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 } }, "required": [ "id", "name", "object", "status", "thumbnail", "venue" ], "title": "VenueRoom" }, "VenueWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 200 }, "venue_type": { "type": "string", "enum": [ "physical", "online" ] }, "description": { "type": "string", "nullable": true }, "physical_address": { "allOf": [ { "$ref": "#/components/schemas/VenueAddressRequest" } ], "nullable": true }, "timezone": { "type": "string", "minLength": 1, "maxLength": 250 }, "video_url": { "type": "string", "nullable": true, "minLength": 1 }, "video_url_type": { "type": "string", "enum": [ "static", "zoom" ] }, "zoom_user": { "type": "integer", "nullable": true }, "archived": { "type": "boolean", "default": false } }, "required": [ "name", "timezone", "venue_type" ], "title": "VenueWriteRequest" }, "Verify2FACodeParamsRequest": { "type": "object", "properties": { "phone_number": { "type": "string", "minLength": 1, "maxLength": 20 }, "verification_code": { "type": "string", "minLength": 1, "maxLength": 6 } }, "required": [ "phone_number", "verification_code" ], "title": "Verify2FACodeParamsRequest" }, "Verify2FACodeRead": { "type": "object", "properties": { "success": { "type": "string", "enum": [ true ], "description": "Constant value: True" }, "message": { "type": "string" }, "verification_key": { "type": "string", "maxLength": 32 } }, "required": [ "message", "success", "verification_key" ], "title": "Verify2FACodeRead" }, "WaitlistSpotRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "waitlist_spot" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "on_waitlist", "spot_reserved", "expired", "rejected" ] }, "added_at": { "type": "string", "format": "date-time" }, "spot_reserved_at": { "type": "string", "format": "date-time" }, "reserved_spot_expires_at": { "type": "string", "format": "date-time" }, "position": { "type": "integer", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "added_at", "id", "object", "reserved_spot_expires_at", "spot_reserved_at", "status" ], "title": "WaitlistSpotRead" }, "WaiverAgreement": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "waiver_agreement" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "waiver": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/WaiverRead" } ] }, "customer": { "oneOf": [ { "type": "integer", "description": "*This field is* `EXPANDABLE`.", "title": "ExpandableField", "x-teamup-expandable": true }, { "$ref": "#/components/schemas/CustomerRead" } ] }, "signed_at": { "type": "string", "format": "date-time", "readOnly": true }, "signature_image": { "type": "string", "format": "uri", "nullable": true } }, "required": [ "customer", "id", "object", "signed_at", "waiver" ], "title": "WaiverAgreement" }, "WaiverAgreementRequest": { "type": "object", "properties": { "waiver": { "type": "integer" }, "customer": { "type": "integer" }, "signature_image": { "type": "string", "format": "binary", "nullable": true } }, "required": [ "customer", "waiver" ], "title": "WaiverAgreementRequest" }, "WaiverMembershipSetting": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "membership": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "id", "membership", "timing" ], "title": "WaiverMembershipSetting" }, "WaiverMembershipSettingRequest": { "type": "object", "properties": { "membership": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "membership", "timing" ], "title": "WaiverMembershipSettingRequest" }, "WaiverOfferingTypeSetting": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "offering_type": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "id", "offering_type", "timing" ], "title": "WaiverOfferingTypeSetting" }, "WaiverOfferingTypeSettingRequest": { "type": "object", "properties": { "offering_type": { "type": "integer" }, "timing": { "type": "string", "enum": [ "before", "after" ] } }, "required": [ "offering_type", "timing" ], "title": "WaiverOfferingTypeSettingRequest" }, "WaiverRead": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "readOnly": true }, "text": { "type": "string", "readOnly": true }, "object": { "enum": [ "waiver" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "status": { "type": "string", "enum": [ "Active", "Archived" ] }, "when_required": { "type": "array", "items": { "type": "string", "enum": [ "signup", "all_memberships", "all_offering_types" ] } }, "signature_image_required": { "type": "boolean", "readOnly": true }, "offering_types": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this waiver's offering types. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "OfferingTypeRead[]", "items": { "$ref": "#/components/schemas/OfferingTypeRead" } } ] }, "memberships": { "oneOf": [ { "type": "string", "format": "uri", "example": "https://goteamup.com/api/v2/related_collection", "description": "Link to this waiver's memberships. *This field is* `EXPANDABLE`.", "readOnly": true, "title": "ExpandableField", "x-teamup-expandable": true }, { "type": "array", "title": "MembershipRead[]", "items": { "$ref": "#/components/schemas/MembershipRead" } } ] }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "created_datetime": { "type": "string", "format": "date-time", "readOnly": true }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverOfferingTypeSetting" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverMembershipSetting" }, "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "can_edit": { "type": "boolean", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." }, "signed_profile_waiver_count": { "type": "integer", "x-teamup-deferred": true, "description": "*This field is* `DEFERRED`." } }, "required": [ "created_datetime", "id", "memberships", "name", "object", "offering_types", "signature_image_required", "status", "text", "timing_mode", "when_required" ], "title": "WaiverRead" }, "WaiverSignaturesParamsRequest": { "type": "object", "properties": { "id_gt": { "type": "integer" }, "sort": { "type": "array", "items": { "type": "string", "minLength": 1 }, "description": "The column names to order the returned rows by. Prefix with a `-` (minus) sign for descending order." }, "format": { "enum": [ "csv", "json" ], "type": "string", "description": "* `csv` - csv\n* `json` - json", "x-spec-enum-id": "2d1a7513ddee4786", "default": "csv" }, "columns": { "type": "array", "items": { "enum": [ "customer_id", "customer.id", "customer", "customer_name", "customer.name", "customer_email", "customer.email", "waiver_id", "waiver.id", "waiver", "waiver_name", "waiver.name", "signed_at", "download_url" ], "type": "string", "description": "* `customer_id` - customer_id\n* `customer.id` - customer.id\n* `customer` - customer\n* `customer_name` - customer_name\n* `customer.name` - customer.name\n* `customer_email` - customer_email\n* `customer.email` - customer.email\n* `waiver_id` - waiver_id\n* `waiver.id` - waiver.id\n* `waiver` - waiver\n* `waiver_name` - waiver_name\n* `waiver.name` - waiver.name\n* `signed_at` - signed_at\n* `download_url` - download_url", "x-spec-enum-id": "ca63b52ab53a1abd" } }, "customers": { "type": "array", "items": { "type": "integer" } }, "waivers": { "type": "array", "items": { "type": "integer" } }, "signed_at_lte": { "type": "string", "format": "date-time" }, "signed_at_gte": { "type": "string", "format": "date-time" }, "signed_at_timeframe": { "type": "string" } }, "title": "WaiverSignaturesParamsRequest" }, "WaiverWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 256 }, "text": { "type": "string", "minLength": 1 }, "sign_once": { "type": "boolean" }, "signature_image_required": { "type": "boolean" }, "when_required": { "type": "array", "items": { "type": "string", "enum": [ "signup", "all_memberships", "all_offering_types" ] } }, "offering_types": { "type": "array", "items": { "type": "integer" } }, "memberships": { "type": "array", "items": { "type": "integer" } }, "timing_mode": { "type": "string", "enum": [ "before", "after", "custom" ] }, "offering_type_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverOfferingTypeSettingRequest" } }, "membership_settings": { "type": "array", "items": { "$ref": "#/components/schemas/WaiverMembershipSettingRequest" } } }, "required": [ "name", "text" ], "title": "WaiverWriteRequest" }, "WebhookDestination": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "object": { "enum": [ "webhook_destination" ], "readOnly": true, "description": "String representing the object's type. Objects of the same type share the same value." }, "url": { "type": "string", "format": "uri" }, "status": { "type": "string", "enum": [ "active", "disabled" ] }, "feed_item_types": { "type": "array", "items": { "enum": [ "*", "event_registration.created", "event_registration.removed", "event_registration.late_cancelled", "event_registration.attended", "event_registration.noshowed", "event_registration.waitlist.added", "event_registration.waitlist.removed", "event_registration.waitlist.spot_reserved", "event_registration.waitlist.spot_expired", "event_registration.waitlist.spot_declined", "event_registration.waitlist.reserved_spot_removed", "event.ended", "event.cancelled", "customer.created", "customer.invited", "customer.signed_up", "customer.deleted", "customer.updated", "customer_membership.created", "customer_membership.started", "customer_membership.ended", "customer_membership.cancelled", "customer_membership.completed", "customer_referral.created", "customer_referral.confirmed", "course_session.ended", "lead_form.submitted", "customer_status.changed", "crm_interaction.created", "crm_email.sent" ], "type": "string", "description": "* `*` - *\n* `event_registration.created` - event_registration.created\n* `event_registration.removed` - event_registration.removed\n* `event_registration.late_cancelled` - event_registration.late_cancelled\n* `event_registration.attended` - event_registration.attended\n* `event_registration.noshowed` - event_registration.noshowed\n* `event_registration.waitlist.added` - event_registration.waitlist.added\n* `event_registration.waitlist.removed` - event_registration.waitlist.removed\n* `event_registration.waitlist.spot_reserved` - event_registration.waitlist.spot_reserved\n* `event_registration.waitlist.spot_expired` - event_registration.waitlist.spot_expired\n* `event_registration.waitlist.spot_declined` - event_registration.waitlist.spot_declined\n* `event_registration.waitlist.reserved_spot_removed` - event_registration.waitlist.reserved_spot_removed\n* `event.ended` - event.ended\n* `event.cancelled` - event.cancelled\n* `customer.created` - customer.created\n* `customer.invited` - customer.invited\n* `customer.signed_up` - customer.signed_up\n* `customer.deleted` - customer.deleted\n* `customer.updated` - customer.updated\n* `customer_membership.created` - customer_membership.created\n* `customer_membership.started` - customer_membership.started\n* `customer_membership.ended` - customer_membership.ended\n* `customer_membership.cancelled` - customer_membership.cancelled\n* `customer_membership.completed` - customer_membership.completed\n* `customer_referral.created` - customer_referral.created\n* `customer_referral.confirmed` - customer_referral.confirmed\n* `course_session.ended` - course_session.ended\n* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed\n* `crm_interaction.created` - crm_interaction.created\n* `crm_email.sent` - crm_email.sent", "x-spec-enum-id": "7c223cf9e924d141" }, "description": "Use `*` if webhooks should be sent for all types." }, "application": { "type": "integer" } }, "required": [ "application", "feed_item_types", "id", "object", "url" ], "title": "WebhookDestination" }, "WebhookDestinationRequest": { "type": "object", "properties": { "url": { "type": "string", "format": "uri", "minLength": 1 }, "status": { "type": "string", "enum": [ "active", "disabled" ] }, "feed_item_types": { "type": "array", "items": { "enum": [ "*", "event_registration.created", "event_registration.removed", "event_registration.late_cancelled", "event_registration.attended", "event_registration.noshowed", "event_registration.waitlist.added", "event_registration.waitlist.removed", "event_registration.waitlist.spot_reserved", "event_registration.waitlist.spot_expired", "event_registration.waitlist.spot_declined", "event_registration.waitlist.reserved_spot_removed", "event.ended", "event.cancelled", "customer.created", "customer.invited", "customer.signed_up", "customer.deleted", "customer.updated", "customer_membership.created", "customer_membership.started", "customer_membership.ended", "customer_membership.cancelled", "customer_membership.completed", "customer_referral.created", "customer_referral.confirmed", "course_session.ended", "lead_form.submitted", "customer_status.changed", "crm_interaction.created", "crm_email.sent" ], "type": "string", "description": "* `*` - *\n* `event_registration.created` - event_registration.created\n* `event_registration.removed` - event_registration.removed\n* `event_registration.late_cancelled` - event_registration.late_cancelled\n* `event_registration.attended` - event_registration.attended\n* `event_registration.noshowed` - event_registration.noshowed\n* `event_registration.waitlist.added` - event_registration.waitlist.added\n* `event_registration.waitlist.removed` - event_registration.waitlist.removed\n* `event_registration.waitlist.spot_reserved` - event_registration.waitlist.spot_reserved\n* `event_registration.waitlist.spot_expired` - event_registration.waitlist.spot_expired\n* `event_registration.waitlist.spot_declined` - event_registration.waitlist.spot_declined\n* `event_registration.waitlist.reserved_spot_removed` - event_registration.waitlist.reserved_spot_removed\n* `event.ended` - event.ended\n* `event.cancelled` - event.cancelled\n* `customer.created` - customer.created\n* `customer.invited` - customer.invited\n* `customer.signed_up` - customer.signed_up\n* `customer.deleted` - customer.deleted\n* `customer.updated` - customer.updated\n* `customer_membership.created` - customer_membership.created\n* `customer_membership.started` - customer_membership.started\n* `customer_membership.ended` - customer_membership.ended\n* `customer_membership.cancelled` - customer_membership.cancelled\n* `customer_membership.completed` - customer_membership.completed\n* `customer_referral.created` - customer_referral.created\n* `customer_referral.confirmed` - customer_referral.confirmed\n* `course_session.ended` - course_session.ended\n* `lead_form.submitted` - lead_form.submitted\n* `customer_status.changed` - customer_status.changed\n* `crm_interaction.created` - crm_interaction.created\n* `crm_email.sent` - crm_email.sent", "x-spec-enum-id": "7c223cf9e924d141" }, "description": "Use `*` if webhooks should be sent for all types." }, "application": { "type": "integer" } }, "required": [ "application", "feed_item_types", "url" ], "title": "WebhookDestinationRequest" }, "WidgetConfigRequest": { "oneOf": [ { "type": "object", "properties": { "v": { "type": "integer", "maximum": 1, "minimum": 1, "default": 1 }, "render": { "enum": [ "auto", "inline", "iframe" ], "type": "string", "description": "* `auto` - auto\n* `inline` - inline\n* `iframe` - iframe", "x-spec-enum-id": "a6047f7b3871834f", "default": "auto" }, "style": { "$ref": "#/components/schemas/StyleConfigRequest" }, "tracking": { "$ref": "#/components/schemas/TrackingConfigRequest" }, "booking": { "$ref": "#/components/schemas/BookingConfigRequest" }, "views": { "type": "array", "items": { "enum": [ "list", "day", "week", "month" ], "type": "string", "description": "* `list` - list\n* `day` - day\n* `week` - week\n* `month` - month", "x-spec-enum-id": "4dab91935a8a3398" }, "minItems": 1 }, "default_view": { "enum": [ "list", "day", "week", "month" ], "type": "string", "description": "* `list` - list\n* `day` - day\n* `week` - week\n* `month` - month", "x-spec-enum-id": "4dab91935a8a3398", "default": "week" }, "venue_ids": { "type": "array", "items": { "type": "integer", "minimum": 1 }, "maxItems": 200 }, "offering_type_ids": { "type": "array", "items": { "type": "integer", "minimum": 1 }, "maxItems": 200 }, "category_ids": { "type": "array", "items": { "type": "integer", "minimum": 1 }, "maxItems": 200 }, "instructor_ids": { "type": "array", "items": { "type": "integer", "minimum": 1 }, "maxItems": 200 }, "visible_filters": { "type": "array", "items": { "enum": [ "venue", "offering_type", "category", "instructor" ], "type": "string", "description": "* `venue` - venue\n* `offering_type` - offering_type\n* `category` - category\n* `instructor` - instructor", "x-spec-enum-id": "023732c22dd413ff" } }, "start_date": { "type": "string", "format": "date", "nullable": true }, "list_days": { "type": "integer", "maximum": 90, "minimum": 1, "default": 14 }, "hide_empty_days": { "type": "boolean", "default": false }, "show_fields": { "type": "array", "items": { "enum": [ "instructor", "venue", "spots_left", "price", "description" ], "type": "string", "description": "* `instructor` - instructor\n* `venue` - venue\n* `spots_left` - spots_left\n* `price` - price\n* `description` - description", "x-spec-enum-id": "0a4a3366a8519f77" } }, "compact": { "type": "boolean", "default": false } }, "title": "ScheduleWidgetConfig" } ], "title": "WidgetConfigRequest" }, "WorkflowTrigger": { "type": "object", "properties": { "template_variables": { "type": "string", "readOnly": true, "description": "Template variables available for use in email templates for this trigger." } }, "required": [ "template_variables" ], "title": "WorkflowTrigger" }, "ZoomUser": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "first_name": { "type": "string", "maxLength": 100 }, "last_name": { "type": "string", "maxLength": 100 }, "email": { "type": "string", "maxLength": 100 } }, "required": [ "email", "first_name", "id", "last_name" ], "title": "ZoomUser" }, "_ReadValue": { "type": "object", "properties": { "answer": { "type": "boolean" }, "explanation": { "type": "string", "description": "An additional explanation. Only required sometimes." } }, "required": [ "answer", "explanation" ], "title": "_ReadValue" }, "_ReadValueRequest": { "type": "object", "properties": { "answer": { "type": "boolean" }, "explanation": { "type": "string", "minLength": 1, "description": "An additional explanation. Only required sometimes." } }, "required": [ "answer", "explanation" ], "title": "_ReadValueRequest" }, "_ValueRead": { "type": "object", "properties": { "address_line1": { "type": "string" }, "address_line2": { "type": "string" }, "city": { "type": "string" }, "region": { "type": "string" }, "postcode": { "type": "string" }, "country": { "type": "string" } }, "title": "_ValueRead" }, "_ValueReadRequest": { "type": "object", "properties": { "address_line1": { "type": "string", "minLength": 1 }, "address_line2": { "type": "string", "minLength": 1 }, "city": { "type": "string", "minLength": 1 }, "region": { "type": "string", "minLength": 1 }, "postcode": { "type": "string", "minLength": 1 }, "country": { "type": "string", "minLength": 1 } }, "title": "_ValueReadRequest" }, "_ValueWrite": { "type": "object", "properties": { "address_line1": { "type": "string" }, "address_line2": { "type": "string", "nullable": true }, "city": { "type": "string" }, "region": { "type": "string" }, "postcode": { "type": "string" }, "country": { "type": "string" } }, "required": [ "address_line1", "city", "country", "postcode", "region" ], "title": "_ValueWrite" }, "_ValueWriteRequest": { "type": "object", "properties": { "answer": { "type": "boolean" }, "explanation": { "type": "string", "nullable": true, "description": "An additional explanation. Only required sometimes." } }, "required": [ "answer" ], "title": "_ValueWriteRequest" } }, "securitySchemes": { "JWT Authentication": { "type": "http", "scheme": "bearer", "in": "header", "name": "Authorization", "bearerFormat": "JWT", "description": "Use the prefix `JWT ` followed by the token value." }, "Token Authentication": { "type": "http", "scheme": "bearer", "in": "header", "name": "Authorization", "description": "Use the prefix `Token ` followed by the token value." } } }, "servers": [ { "url": "https://goteamup.com/api/v2", "description": "TeamUp API v2 Production Server" } ], "tags": [ { "name": "Applications" }, { "name": "Attendance Strikes Report" }, { "name": "Attendances" }, { "name": "Attendances Report" }, { "name": "Auth" }, { "name": "Availability Schedule Offering Types" }, { "name": "Availability Schedules" }, { "name": "Broadcast Messages" }, { "name": "Bulk Actions" }, { "name": "Bulk Evaluations" }, { "name": "Business Advisor Config" }, { "name": "Business Advisor Reports" }, { "name": "Business Closures" }, { "name": "Calendar Events" }, { "name": "Calendar Source Accounts" }, { "name": "Calendar Sync Settings" }, { "name": "Checkins" }, { "name": "Checkouts" }, { "name": "Classes Report" }, { "name": "Content" }, { "name": "Content Collections" }, { "name": "Content Filters" }, { "name": "Content Views Report" }, { "name": "Course Series" }, { "name": "Course Session Attendances" }, { "name": "Course Session Attendances Report" }, { "name": "Course Sessions" }, { "name": "Courses" }, { "name": "Customer CRM Progression Report" }, { "name": "Customer Credits Report" }, { "name": "Customer Field Changes Report" }, { "name": "Customer Field Values" }, { "name": "Customer Fields" }, { "name": "Customer Form Submissions" }, { "name": "Customer Forms" }, { "name": "Customer Issues" }, { "name": "Customer Membership Holds" }, { "name": "Customer Membership Holds Report" }, { "name": "Customer Memberships" }, { "name": "Customer Memberships Report" }, { "name": "Customer Referrals Report" }, { "name": "Customer Registration Blocks" }, { "name": "Customer Segments" }, { "name": "Customers" }, { "name": "Customers Report" }, { "name": "Discount Code Applicabilities" }, { "name": "Discount Code Groups" }, { "name": "Discount Code Uses Report" }, { "name": "Discount Codes" }, { "name": "Embed Widgets" }, { "name": "Events" }, { "name": "Family Invites" }, { "name": "Feature Flags" }, { "name": "Fees Calculator" }, { "name": "Gift Cards" }, { "name": "Gift Cards Report" }, { "name": "Images" }, { "name": "Instructed Sessions Report" }, { "name": "Instructor Pay Rates" }, { "name": "Instructors" }, { "name": "Instructors Report" }, { "name": "Integrations" }, { "name": "Interactions" }, { "name": "Internal" }, { "name": "Invoice Line Items Report" }, { "name": "Invoices" }, { "name": "Invoices Report" }, { "name": "Jobs" }, { "name": "Joining Fees" }, { "name": "Kisi Config" }, { "name": "Kisi Groups" }, { "name": "Lead Forms" }, { "name": "Lead Sources" }, { "name": "M2M Tokens" }, { "name": "Marketing Suite" }, { "name": "Membership Categories" }, { "name": "Membership Payment Plans" }, { "name": "Membership Penalty Notifications" }, { "name": "Membership Penalty Systems" }, { "name": "Membership Registration Grants" }, { "name": "Membership Terms" }, { "name": "Memberships" }, { "name": "Missing Forms and Waivers Notifications" }, { "name": "Offering Type Categories" }, { "name": "Offering Types" }, { "name": "Order Items" }, { "name": "Orders" }, { "name": "Payment Methods" }, { "name": "Payment Processors" }, { "name": "Payment Subscriptions" }, { "name": "Platform Referrals" }, { "name": "Policies" }, { "name": "Policy Agreements" }, { "name": "Policy Versions" }, { "name": "Product Variant Attributes" }, { "name": "Product Variant Inventory Adjustments" }, { "name": "Product Variants" }, { "name": "Products" }, { "name": "Providers" }, { "name": "Purchase Fees" }, { "name": "Push Class Reminders" }, { "name": "Push Notification Settings" }, { "name": "Push Notification Tokens" }, { "name": "Push Notifications" }, { "name": "Recurring Reservations" }, { "name": "Registration Eligibility" }, { "name": "Registration Options" }, { "name": "Registration Timelines" }, { "name": "SMS Messages Report" }, { "name": "Settings" }, { "name": "Slots" }, { "name": "Staff" }, { "name": "Status Changes" }, { "name": "Statuses" }, { "name": "Store Order Items Report" }, { "name": "Store Orders Report" }, { "name": "Store Settings" }, { "name": "Terminologies" }, { "name": "Two Factor Auth" }, { "name": "Venue Rooms" }, { "name": "Venues" }, { "name": "Waiver Agreements" }, { "name": "Waiver Signatures Report" }, { "name": "Waivers" }, { "name": "Webhook Destinations" }, { "name": "Wellhub" }, { "name": "Workflow Action Types" }, { "name": "Workflow Actions" }, { "name": "Workflow Triggers" }, { "name": "Workflows" }, { "name": "Zoom" } ], "x-tagGroups": [ { "name": "Auth", "tags": [ "Auth", "M2M Tokens", "Two Factor Auth" ] }, { "name": "CRM", "tags": [ "Bulk Evaluations", "Customer Segments", "Interactions", "Lead Forms", "Lead Sources", "Settings", "Status Changes", "Statuses", "Workflow Action Types", "Workflow Actions", "Workflow Triggers", "Workflows" ] }, { "name": "Core", "tags": [ "Applications", "Attendances", "Availability Schedule Offering Types", "Availability Schedules", "Broadcast Messages", "Bulk Actions", "Business Advisor Config", "Business Advisor Reports", "Business Closures", "Calendar Events", "Calendar Source Accounts", "Calendar Sync Settings", "Checkins", "Checkouts", "Content", "Content Collections", "Content Filters", "Course Series", "Course Session Attendances", "Course Sessions", "Courses", "Customer Field Values", "Customer Fields", "Customer Form Submissions", "Customer Forms", "Customer Issues", "Customer Membership Holds", "Customer Memberships", "Customer Registration Blocks", "Customers", "Discount Code Applicabilities", "Discount Code Groups", "Discount Codes", "Embed Widgets", "Events", "Family Invites", "Feature Flags", "Fees Calculator", "Gift Cards", "Images", "Instructor Pay Rates", "Instructors", "Internal", "Invoices", "Jobs", "Joining Fees", "Membership Categories", "Membership Payment Plans", "Membership Penalty Systems", "Membership Registration Grants", "Membership Terms", "Memberships", "Offering Type Categories", "Offering Types", "Payment Methods", "Payment Processors", "Payment Subscriptions", "Platform Referrals", "Policies", "Policy Agreements", "Policy Versions", "Providers", "Purchase Fees", "Push Class Reminders", "Push Notification Settings", "Push Notification Tokens", "Push Notifications", "Recurring Reservations", "Registration Eligibility", "Registration Options", "Registration Timelines", "Slots", "Staff", "Terminologies", "Venue Rooms", "Venues", "Waiver Agreements", "Waivers", "Webhook Destinations" ] }, { "name": "Integrations", "tags": [ "Integrations", "Kisi Config", "Kisi Groups", "Marketing Suite", "Wellhub", "Zoom" ] }, { "name": "Notifications", "tags": [ "Membership Penalty Notifications", "Missing Forms and Waivers Notifications" ] }, { "name": "Reports", "tags": [ "Attendance Strikes Report", "Attendances Report", "Classes Report", "Content Views Report", "Course Session Attendances Report", "Customer CRM Progression Report", "Customer Credits Report", "Customer Field Changes Report", "Customer Membership Holds Report", "Customer Memberships Report", "Customer Referrals Report", "Customers Report", "Discount Code Uses Report", "Gift Cards Report", "Instructed Sessions Report", "Instructors Report", "Invoice Line Items Report", "Invoices Report", "SMS Messages Report", "Store Order Items Report", "Store Orders Report", "Waiver Signatures Report" ] }, { "name": "Store", "tags": [ "Order Items", "Orders", "Product Variant Attributes", "Product Variant Inventory Adjustments", "Product Variants", "Products", "Store Settings" ] } ] }