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/oauth)[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/oauth)[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) * [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. **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. **JWT token example:** For an end-user access token obtained from TeamUp's OAuth flow: Authorization: JWT **M2M token example:** For an M2M token: Authorization: Token * * * ### 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) * [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/oauth)[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) * [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.) [ 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) 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/oauth)[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) * [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/oauth)[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) * [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/oauth)[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) * [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/oauth)[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) * [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/oauth)[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) * [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/oauth)[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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) May 4, 2026 =========== May 4, 2026 · 2 min read ### GET /auth/m2m\_tokens * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-retrieve) ### POST /auth/m2m\_tokens * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-create) ### DELETE /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-destroy) ### PATCH /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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-m2m-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-m2m-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-m2m-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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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-m2m-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-m2m-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-m2m-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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) 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) [ 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. 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/oauth)[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) ### 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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) [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) [ 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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) [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-m2m-tokens-retrieve) ### POST /auth/m2m\_tokens * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-create) ### DELETE /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-destroy) ### PATCH /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-tokens-partial-update) ### PUT /auth/m2m\_tokens/{id} * endpoint added [View updated docs](/api-reference/endpoints/auth-m2m-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) [ 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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) [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) [ 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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) [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) [ 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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/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/oauth)[Support](/support/faq)[Changelog](/changelog) Search Recent updates ### 2026 * [August 10, 2026](/changelog/2026/08/10) * [July 23, 2026](/changelog/2026/07/23) * [July 22, 2026](/changelog/2026/07/22) * [July 17, 2026](/changelog/2026/07/17) * [July 15, 2026](/changelog/2026/07/15) * [July 14, 2026](/changelog/2026/07/14) * [July 13, 2026](/changelog/2026/07/13) * [July 9, 2026](/changelog/2026/07/09) * [July 7, 2026](/changelog/2026/07/07) * [June 29, 2026](/changelog/2026/06/29) * [June 24, 2026](/changelog/2026/06/24) * [June 23, 2026](/changelog/2026/06/23) * [June 22, 2026](/changelog/2026/06/22) * [June 16, 2026](/changelog/2026/06/16) * [June 11, 2026](/changelog/2026/06/11) [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) [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-m2m-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-m2m-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-m2m-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-m2m-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-m2m-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-m2m-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) [ 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. 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [](/) * 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. [ 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/oauth)[Support](/support/faq)[Changelog](/changelog) Search * [OAuth](/guides/oauth) * [Webhooks](/guides/webhooks) * [](/) * 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} * * * 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) * [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) * [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/oauth)[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/oauth)[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 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 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 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/oauth)[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 or permissions 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": "" } } } }, "/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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: object_is_own_schedule\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.*" } }, "/communication/broadcast_messages": { "post": { "operationId": "communication_broadcast_messages_create", "description": "Create 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": "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": [ "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": "" } } } }, "/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\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": "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": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to 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/BroadcastMessageSendRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BroadcastMessageSendRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BroadcastMessageSendRequest" } } } }, "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/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\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": "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.*" } }, "/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_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": "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": "" } } } }, "/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", "learn_to_skate", "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\n* `learn_to_skate` - learn_to_skate" }, { "in": "query", "name": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to 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\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": "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": "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}/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: `pos`.\n- Must have one of the following permissions: `super_admin`.\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.\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": "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/{notification_preference_id}": { "patch": { "operationId": "customers_notification_preferences_partial_update", "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": "notification_preference_id", "schema": { "type": "string", "pattern": "^\\d+$" }, "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": "" } }, "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}/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": "" } } } }, "/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": "" } } } }, "/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: `super_admin`, `manage_events`.\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": "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: `super_admin`, `manage_events`.\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": "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- Any customer can perform this action.\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- The caller must be the instructor whose blocked times or availability is being accessed.\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": "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- The caller must be the instructor whose blocked times or availability is being accessed.\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": "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- The caller must be the instructor whose blocked times or availability is being accessed.\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": "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": { "application_id": { "type": [ "number", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "box_mate" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "BoxMate" }, { "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": { "application_id": { "type": [ "number", "null" ] }, "enabled": { "type": "boolean" }, "type": { "enum": [ "box_mate" ], "type": "string" } }, "required": [ "type", "enabled", "application_id" ], "title": "BoxMate" }, { "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/learn_to_skate/abandon_membership": { "post": { "operationId": "integrations_learn_to_skate_abandon_membership_create", "description": "Abandons membership (must be done by the active consumer who is currently associated with the membership).\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: learn_to_skate_enabled\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Abandon consumer membership", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which 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": [ "Learn To Skate" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AbandonLearnToSkateMembershipRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/AbandonLearnToSkateMembershipRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/AbandonLearnToSkateMembershipRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } } }, "/integrations/learn_to_skate/config": { "get": { "operationId": "integrations_learn_to_skate_config_retrieve", "description": "Retrieve a provider's Learn to Skate integration config.\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" ] } } ], "tags": [ "Learn To Skate" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } } }, "description": "" } } }, "put": { "operationId": "integrations_learn_to_skate_config_update", "description": "Update a provider's Learn to Skate integration config.\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" ] } } ], "tags": [ "Learn To Skate" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfigRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfigRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfigRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } } }, "description": "" } } }, "patch": { "operationId": "integrations_learn_to_skate_config_partial_update", "description": "Partially update provider's Learn to Skate integration config.\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" ] } } ], "tags": [ "Learn To Skate" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/PatchedLearnToSkateConfigRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/PatchedLearnToSkateConfigRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/PatchedLearnToSkateConfigRequest" } } } }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LearnToSkateConfig" } } }, "description": "" } } } }, "/integrations/learn_to_skate/current_membership_number": { "get": { "operationId": "integrations_learn_to_skate_current_membership_number_retrieve", "description": "Retrieve the current Learn to Skate membership number for the active consumer.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: learn_to_skate_enabled\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get current membership number", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which 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": "membership_number", "schema": { "type": "string", "minLength": 1, "maxLength": 10 }, "required": true } ], "tags": [ "Learn To Skate" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } } }, "/integrations/learn_to_skate/membership_renew_url/{membership_number}": { "get": { "operationId": "integrations_learn_to_skate_membership_renew_url_retrieve", "description": "Gets a renewal URL for the given Learn to Skate membership number.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: learn_to_skate_enabled\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Get membership renewal URL", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which 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": "membership_number", "schema": { "type": "string", "pattern": "^[\\w-]+$" }, "required": true } ], "tags": [ "Learn To Skate" ], "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } } }, "/integrations/learn_to_skate/resend_account_link": { "post": { "operationId": "integrations_learn_to_skate_resend_account_link_create", "description": "Resends account link for consumer membership.\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: learn_to_skate_enabled\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Resend consumer membership account 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" ] } } ], "tags": [ "Learn To Skate" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/BaseLearnToSkateMembershipRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/BaseLearnToSkateMembershipRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/BaseLearnToSkateMembershipRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "description": "No response body" } } } }, "/integrations/learn_to_skate/verify_membership": { "post": { "operationId": "integrations_learn_to_skate_verify_membership_create", "description": "Verifies a membership and associates it with the active consumer (the association is permanent until abandoning).\n\n\n#### Providers\n- *No access.*\n\n\n#### Customers\n- The following condition must be met: learn_to_skate_enabled\n\n\n#### Unregistered Customers\n- *No access.*", "summary": "Verify consumer membership", "parameters": [ { "in": "header", "name": "TeamUp-Provider-ID", "schema": { "type": "string" }, "description": "ID of the provider account the API request is for. Required if the access credentials have access to multiple providers." }, { "in": "header", "name": "Teamup-Request-Mode", "schema": { "type": "string", "enum": [ "customer", "provider" ] }, "description": "The authenticated user may have access to both staff and customer profiles. Indicate which 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": [ "Learn To Skate" ], "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateMembershipVerifyRequest" } }, "application/x-www-form-urlencoded": { "schema": { "$ref": "#/components/schemas/LearnToSkateMembershipVerifyRequest" } }, "multipart/form-data": { "schema": { "$ref": "#/components/schemas/LearnToSkateMembershipVerifyRequest" } } }, "required": true }, "security": [ { "Token Authentication": [] }, { "JWT Authentication": [] } ], "responses": { "200": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/LearnToSkateMembershipVerify" } }, "application/xml": { "schema": { "$ref": "#/components/schemas/LearnToSkateMembershipVerify" } } }, "description": "" } } } }, "/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`.\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 gympass 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 gympass 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": "expand", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to expand.", "explode": false, "style": "form" }, { "in": "query", "name": "fields", "schema": { "type": "array", "items": { "type": "string" } }, "description": "A comma-separated list of fields to 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", "due_date" ] } }, "description": "Ordering\n\n* `due_date` - Due date\n* `-due_date` - Due date (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- Must have one of the following permissions: `customers`.\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": [ "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- *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 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- *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 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- Any provider can perform this action.\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": "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- *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 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_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": "" } } } }, "/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" } } } }, "/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 ## 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", "staturday" ] } } }, { "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", "staturday" ] } } }, { "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_failed_payments", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have failed payments or not." }, { "in": "query", "name": "has_issues", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have associated 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" }, "description": "Return rows based on whether customers are claimed or not." }, { "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": "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", "description": "Whether the customer account has been 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_failed_payments", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have failed payments or not." }, { "in": "query", "name": "has_issues", "schema": { "type": "boolean" }, "description": "Return rows based on whether customers have associated 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" }, "description": "Return rows based on whether customers are claimed or not." }, { "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": "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", "description": "Whether the customer account has been 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": { "type": "integer" }, "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- Only first-party applications are allowed to use this endpoint.\n- The following condition must be met: is_self_provider_user\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- Only first-party applications are allowed to use this endpoint.\n- The following condition must be met: is_self_provider_user\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: request_method_get\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- Must have one of the following permissions: `manage_events`.\n- The following condition must be met: request_method_get\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\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": "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": { "AbandonLearnToSkateMembershipRequest": { "type": "object", "properties": { "membership_number": { "type": "string", "minLength": 1, "maxLength": 10 } }, "title": "AbandonLearnToSkateMembershipRequest" }, "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" }, "BaseLearnToSkateMembershipRequest": { "type": "object", "properties": { "membership_number": { "type": "string", "minLength": 1, "maxLength": 10 } }, "required": [ "membership_number" ], "title": "BaseLearnToSkateMembershipRequest" }, "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" }, "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 }, "acknowledged": { "type": "boolean" } }, "required": [ "acknowledged", "reason", "status" ], "title": "BroadcastMessageContentCheck" }, "BroadcastMessageContentCheckRequest": { "type": "object", "properties": { "status": { "type": "string", "nullable": true, "minLength": 1 }, "reason": { "type": "string", "nullable": true, "minLength": 1 }, "acknowledged": { "type": "boolean" } }, "required": [ "acknowledged", "reason", "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" }, "BroadcastMessageSendRequest": { "type": "object", "properties": { "acknowledge_content_warning": { "type": "boolean", "default": false, "description": "Set to true to proceed with sending a message that was flagged by the automated content check." } }, "title": "BroadcastMessageSendRequest" }, "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. The same filter parameters available on the `/customers` list endpoint can be used." }, "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 } }, "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" ] }, "dispatch_at": { "type": "string", "format": "date-time", "nullable": true, "description": "When this evaluation should be dispatched. Used for debouncing: each update to CRM status criteria pushes this time forward. A periodic task picks up QUEUED evaluations where dispatch_at <= now." }, "status_updated_at": { "type": "string", "format": "date-time", "nullable": true }, "items_total": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "items_completed": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "override_locked_status": { "type": "boolean", "description": "When True, this bulk evaluation will update customers whose CRM status has been manually locked (is_crm_status_locked=True), overriding the lock." } }, "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 to allow customers to move to a status that is earlier in the pipeline." }, "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 }, "interaction_type": { "type": "string", "enum": [ "Call", "Contacted", "Email", "Meeting" ] }, "call_outcome": { "type": "string", "enum": [ "Connected", "No Answer", "Voicemail" ], "nullable": true }, "note": { "type": "string", "description": "Optional note 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 }, "note": { "type": "string", "description": "Optional note 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 }, "old_status": { "type": "string", "nullable": true }, "changed_by": { "type": "integer", "nullable": true }, "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, "pattern": "^[-a-zA-Z0-9_]+$" }, "color": { "type": "string", "nullable": true, "maxLength": 6 }, "enabled": { "type": "boolean" }, "condition_match_type": { "enum": [ "all", "any" ], "type": "string", "description": "* `all` - All\n* `any` - Any", "x-spec-enum-id": "0a55c3153ef51701" }, "precedence": { "type": "integer", "maximum": 2147483647, "minimum": -2147483648 }, "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": [ "id", "object", "slug", "triggered_bulk_evaluation" ], "title": "CRMStatusRead" }, "CRMStatusWriteRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1 }, "enabled": { "type": "boolean" }, "color": { "type": "string", "minLength": 1, "maxLength": 6 }, "condition_match_type": { "enum": [ "all", "any" ], "type": "string", "description": "* `all` - all\n* `any` - any", "x-spec-enum-id": "459b4c3ca3f51d1f" }, "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", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowCondition" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplate" }, "scheduled_delay": { "type": "string", "nullable": true }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" } }, "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", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowCondition" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplate" }, "scheduled_delay": { "type": "string", "nullable": true } }, "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", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" } }, "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", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true } }, "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" }, "label": { "type": "string" } }, "required": [ "condition_type", "label", "operator" ], "title": "CustomerLabelCondition" }, { "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" } ], "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" }, "label": { "type": "string", "minLength": 1 } }, "required": [ "condition_type", "label", "operator" ], "title": "CustomerLabelCondition" }, { "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" } ], "title": "CRMWorkflowConditionRequest" }, "CRMWorkflowCreateRequest": { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1, "maxLength": 255 }, "trigger": { "enum": [ "customer_status.changed", "lead_form.submitted" ], "type": "string", "description": "* `customer_status.changed` - customer_status.changed\n* `lead_form.submitted` - lead_form.submitted", "x-spec-enum-id": "115c7411a7673eb1" } }, "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": [ "customer_status.changed", "lead_form.submitted" ], "type": "string", "description": "* `customer_status.changed` - customer_status.changed\n* `lead_form.submitted` - lead_form.submitted", "x-spec-enum-id": "115c7411a7673eb1" } }, "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", "staturday" ] } }, "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" }, "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" } ] }, "customer_url": { "type": "string", "readOnly": true }, "provider_url": { "type": "string", "readOnly": true } }, "required": [ "attending_count", "course", "customer_url", "ends_at", "id", "instructors", "max_occupancy", "name", "object", "provider_url", "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 }, "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" }, { "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" } ], "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": [ { "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": "string" } }, "required": [ "customer", "field", "value" ], "title": "ShortTextCreate" }, { "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", "description": "The phone number." } }, "required": [ "customer", "field", "value" ], "title": "PhoneCreate" }, { "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": "integer" } }, "required": [ "customer", "field", "value" ], "title": "IntegerCreate" }, { "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" }, { "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" }, { "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" } ], "title": "CustomerFieldValueCreate" }, "CustomerFieldValueCreateRequest": { "oneOf": [ { "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": "string", "minLength": 1 } }, "required": [ "customer", "field", "value" ], "title": "ShortTextCreate" }, { "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", "minLength": 1, "description": "The phone number." } }, "required": [ "customer", "field", "value" ], "title": "PhoneCreate" }, { "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": "integer" } }, "required": [ "customer", "field", "value" ], "title": "IntegerCreate" }, { "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" }, { "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" }, { "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" } ], "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" }, "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": "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": "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": "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": { "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": { "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": { "$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" }, { "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": { "$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" } ], "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", "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": "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": "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": "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": { "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": { "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": { "$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" }, { "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": { "$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" } ], "title": "CustomerFieldValueReadRequest" }, "CustomerFieldValueUpdateRequest": { "oneOf": [ { "properties": { "value": { "type": "string", "description": "The value of the choice." } }, "title": "ChoiceUpdate" }, { "properties": { "value": { "type": "array", "items": { "type": "string", "description": "The value of the choice." } } }, "title": "ChoiceMultipleUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1, "description": "The phone number." } }, "required": [ "value" ], "title": "PhoneUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "format": "decimal", "pattern": "^-?\\d{0,17}(?:\\.\\d{0,3})?$" } }, "required": [ "value" ], "title": "DecimalUpdate" }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "value" ], "title": "BooleanUpdate" }, { "type": "object", "properties": { "value": { "$ref": "#/components/schemas/_ValueWriteRequest" } }, "required": [ "value" ], "title": "AddressUpdate" }, { "type": "object", "properties": { "value": { "type": "integer" } }, "required": [ "value" ], "title": "IntegerUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 } }, "required": [ "value" ], "title": "LongTextUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "minLength": 1 } }, "required": [ "value" ], "title": "ShortTextUpdate" }, { "type": "object", "properties": { "value": { "type": "string", "format": "date", "description": "A date." } }, "required": [ "value" ], "title": "DateUpdate" }, { "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" ] }, "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`." } }, "required": [ "active_hold", "billed_price", "customer", "discount_code", "discount_code_makes_free_forever", "id", "is_set_for_cancellation", "membership", "name", "object", "payment_subscription", "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", "description": "Return rows based on whether customers are claimed or not." }, "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_issues": { "type": "boolean", "description": "Return rows based on whether customers have associated 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." } }, "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", "description": "* `all` - All\n* `any` - Any", "x-spec-enum-id": "0a55c3153ef51701", "nullable": true }, "enabled": { "type": "boolean", "nullable": true } }, "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" }, "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" }, "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" }, "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 or email." }, "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." }, "is_claimed": { "type": "boolean", "description": "Filter by whether a customer's account is claimed." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Filter by active membership IDs." }, "has_issues": { "type": "boolean", "description": "Filter by whether a customer has 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." } }, "title": "FilterCriteria" }, "FilterCriteriaRequest": { "type": "object", "properties": { "query": { "type": "string", "minLength": 1, "description": "Free-text search by customer name or email." }, "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." }, "is_claimed": { "type": "boolean", "description": "Filter by whether a customer's account is claimed." }, "active_memberships": { "type": "array", "items": { "type": "integer" }, "description": "Filter by active membership IDs." }, "has_issues": { "type": "boolean", "description": "Filter by whether a customer has 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." } }, "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" } }, "required": [ "access_token", "expires_in", "refresh_token" ], "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", "staturday" ] } }, "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", "description": "Return rows based on whether customers are claimed or not." }, "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_issues": { "type": "boolean", "description": "Return rows based on whether customers have associated 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." } }, "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 }, "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_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_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_event_registration" ], "description": "Constant value: billed_event_registration" } }, "required": [ "id", "name", "type" ], "title": "BilledEventRegistration" }, { "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": { "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" }, "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", "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" ] } } } }, "required": [ "amount", "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 }, "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 to after form submission", "maxLength": 200 }, "send_invite_email": { "type": "boolean" } }, "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 to after form submission", "maxLength": 200 }, "send_invite_email": { "type": "boolean" }, "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, "maxLength": 255 }, "archived": { "type": "boolean" } }, "required": [ "id", "name", "object" ], "title": "LeadSource" }, "LeadSourceRequest": { "type": "object", "properties": { "name": { "type": "string", "minLength": 1, "maxLength": 255 }, "slug": { "type": "string", "nullable": true, "maxLength": 255 }, "archived": { "type": "boolean" } }, "required": [ "name" ], "title": "LeadSourceRequest" }, "LearnToSkateConfig": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "verify_lts_membership_for_memberships": { "type": "array", "items": { "type": "integer" } }, "verify_lts_membership_for_offering_types": { "type": "array", "items": { "type": "integer" } } }, "title": "LearnToSkateConfig" }, "LearnToSkateConfigRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "verify_lts_membership_for_memberships": { "type": "array", "items": { "type": "integer" } }, "verify_lts_membership_for_offering_types": { "type": "array", "items": { "type": "integer" } } }, "title": "LearnToSkateConfigRequest" }, "LearnToSkateMembershipVerify": { "type": "object", "properties": { "membership_number": { "type": "string", "maxLength": 10, "minLength": 1 }, "expiration": { "type": "string", "format": "date-time", "readOnly": true }, "is_expired": { "type": "boolean", "readOnly": true }, "unverified_error_detail": { "type": "string", "readOnly": true }, "status": { "enum": [ 0, 1, 2, 3 ], "type": "integer", "description": "* `0` - Valid\n* `1` - Invalid\n* `2` - Pending Link Completion\n* `3` - Unknown", "x-spec-enum-id": "5e1359630610450a", "readOnly": true } }, "required": [ "expiration", "is_expired", "membership_number", "status", "unverified_error_detail" ], "title": "LearnToSkateMembershipVerify" }, "LearnToSkateMembershipVerifyRequest": { "type": "object", "properties": { "membership_number": { "type": "string", "minLength": 1, "maxLength": 10 } }, "required": [ "membership_number" ], "title": "LearnToSkateMembershipVerifyRequest" }, "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 } }, "required": [ "application", "created_at", "expires_at", "id", "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)." } }, "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 } }, "required": [ "id", "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", "staturday", "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", "staturday", "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": [ "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" }, { "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" } ], "title": "MembershipWriteRequest" }, "MissingForm": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "readOnly": true } }, "required": [ "id", "name" ], "title": "MissingForm" }, "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": "array", "items": { "$ref": "#/components/schemas/MissingForm" }, "readOnly": true }, "missing_waivers": { "type": "array", "items": { "$ref": "#/components/schemas/MissingWaiver" }, "readOnly": true }, "missing_requisites_workflow_url": { "type": "string", "readOnly": true } }, "required": [ "missing_forms", "missing_requisites_workflow_url", "missing_waivers" ], "title": "MissingRequisites" }, "MissingWaiver": { "type": "object", "properties": { "id": { "type": "integer", "readOnly": true }, "name": { "type": "string", "readOnly": true } }, "required": [ "id", "name" ], "title": "MissingWaiver" }, "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" }, "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 }, "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", "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "title": "PaginatedCourseReadList" }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "title": "PaginatedDiscountCodeReadList" }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "title": "PaginatedPaymentSubscriptionList" }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "title": "PaginatedPurchaseFeeReadList" }, "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" } } }, "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" } } }, "title": "PaginatedRecurringReservationReadList" }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } } }, "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" } }, "required": [ "access_token", "expires_in", "refresh_token" ], "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 to allow customers to move to a status that is earlier in the pipeline." } }, "title": "PatchedCRMConfigRequest" }, "PatchedCRMWorkflowActionRequest": { "oneOf": [ { "type": "object", "properties": { "name": { "type": "string", "nullable": true, "minLength": 1 }, "action_type": { "enum": [ "email_customer", "email_staff" ], "type": "string", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true }, "use_case": { "enum": [ "marketing", "general" ], "type": "string", "description": "* `marketing` - marketing\n* `general` - general", "x-spec-enum-id": "e0e2c7067615d3c9" } }, "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", "description": "* `email_customer` - Email Customer\n* `email_staff` - Email Staff", "x-spec-enum-id": "3fc519615b601022" }, "workflow": { "type": "integer" }, "conditions": { "type": "array", "items": { "$ref": "#/components/schemas/CRMWorkflowConditionRequest" } }, "email_template": { "$ref": "#/components/schemas/EmailTemplateRequest" }, "scheduled_delay": { "type": "string", "nullable": true } }, "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" }, "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 to after form submission", "maxLength": 200 }, "send_invite_email": { "type": "boolean" }, "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, "maxLength": 255 }, "archived": { "type": "boolean" } }, "title": "PatchedLeadSourceRequest" }, "PatchedLearnToSkateConfigRequest": { "type": "object", "properties": { "enabled": { "type": "boolean" }, "verify_lts_membership_for_memberships": { "type": "array", "items": { "type": "integer" } }, "verify_lts_membership_for_offering_types": { "type": "array", "items": { "type": "integer" } } }, "title": "PatchedLearnToSkateConfigRequest" }, "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)." } }, "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" } }, "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" }, "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": [ "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": [ "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" }, { "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": [ "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" } ], "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" }, "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" }, "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" }, "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", "staturday", "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" }, "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" }, "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" }, "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 }, "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", "staturday", "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" }, "staff": { "oneOf": [ { "type": "integer", "description": "*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": [ "completed_membership_pack_exists" ], "type": "string", "description": "* `completed_membership_pack_exists` - completed_membership_pack_exists", "x-spec-enum-id": "d83c9951328e85f9" }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CompletedMembershipPackExistsCondition" }, { "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 } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceLastAttendanceCondition" }, { "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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" }, { "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": [ "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": [ "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" } ], "title": "StatusCondition" }, "StatusConditionRequest": { "oneOf": [ { "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" }, "memberships": { "type": "array", "items": { "type": "integer" } } }, "required": [ "condition_type" ], "title": "CompletedMembershipPackExistsCondition" }, { "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 } }, "required": [ "condition_type", "days", "operator" ], "title": "DaysSinceLastAttendanceCondition" }, { "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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": [ "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" }, { "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": [ "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": [ "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" } ], "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" }, "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" } }, "required": [ "has_payment_method", "in_retry", "is_comped", "payment_errors", "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" }, "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 }, "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": "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" ] } }, "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" }, { "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 }, "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 }, "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 }, "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 }, "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 }, "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 }, "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 }, "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", "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 }, "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 }, "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" ] } } }, "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 }, "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 }, "membership": { "type": "integer" }, "plan": { "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" ], "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 }, "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": "PrepaidMembershipCheckoutItem" } ], "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": { "membership": { "type": "integer" } }, "required": [ "membership" ], "title": "PackMembershipCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" }, "plan": { "type": "integer" }, "upgrade_from_customer_membership": { "type": "integer" } }, "required": [ "membership", "plan", "upgrade_from_customer_membership" ], "title": "RecurringMembershipUpgradeCheckoutItem" }, { "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": { "room_rental_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" } }, "title": "RoomRentalViaDropInCheckoutItem" }, { "type": "object", "properties": { "event": { "type": "integer" } }, "required": [ "event" ], "title": "ClassViaDropInCheckoutItem" }, { "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": { "event": { "type": "integer" }, "customer_membership_checkout_item": { "type": "string" }, "customer_membership": { "type": "integer" } }, "required": [ "event" ], "title": "ClassOnMembershipCheckoutItem" }, { "type": "object", "properties": { "appointment_slot": { "type": "string", "minLength": 1 }, "event": { "type": "integer" } }, "title": "AppointmentViaDropInCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" } }, "required": [ "membership" ], "title": "DropInMembershipCheckoutItem" }, { "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": { "course_date": { "type": "integer" } }, "required": [ "course_date" ], "title": "CourseDateViaDropinCheckoutItem" }, { "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": { "joining_fee": { "type": "integer" } }, "required": [ "joining_fee" ], "title": "JoiningFeeCheckoutItem" }, { "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": { "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": { "membership": { "type": "integer" }, "plan": { "type": "integer" } }, "required": [ "membership", "plan" ], "title": "RecurringMembershipCheckoutItem" }, { "type": "object", "properties": { "membership": { "type": "integer" } }, "required": [ "membership" ], "title": "PrepaidMembershipCheckoutItem" } ], "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" }, "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" ] }, "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": [ "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" }, "WorkflowTrigger": { "type": "object", "properties": { "template_variables": { "type": "string", "readOnly": true } }, "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": { "answer": { "type": "boolean" }, "explanation": { "type": "string", "nullable": true, "description": "An additional explanation. Only required sometimes." } }, "required": [ "answer" ], "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": "Business Advisor Config" }, { "name": "Business Advisor Reports" }, { "name": "Business Closures" }, { "name": "CRM" }, { "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 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": "Customers" }, { "name": "Customers Report" }, { "name": "Discount Code Applicabilities" }, { "name": "Discount Code Groups" }, { "name": "Discount Code Uses Report" }, { "name": "Discount Codes" }, { "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": "Internal" }, { "name": "Invoice Line Items Report" }, { "name": "Invoices" }, { "name": "Invoices Report" }, { "name": "Jobs" }, { "name": "Joining Fees" }, { "name": "Kisi Config" }, { "name": "Kisi Groups" }, { "name": "Learn To Skate" }, { "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": "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 Notification Tokens" }, { "name": "Recurring Reservations" }, { "name": "Registration Eligibility" }, { "name": "Registration Options" }, { "name": "Registration Timelines" }, { "name": "SMS Messages Report" }, { "name": "Slots" }, { "name": "Staff" }, { "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": "Zoom" } ], "x-tagGroups": [ { "name": "Auth", "tags": [ "Auth", "M2M Tokens", "Two Factor Auth" ] }, { "name": "Core", "tags": [ "Applications", "Attendances", "Availability Schedule Offering Types", "Availability Schedules", "Broadcast Messages", "Bulk Actions", "Business Advisor Config", "Business Advisor Reports", "Business Closures", "CRM", "Calendar Events", "Calendar Source Accounts", "Calendar Sync Settings", "Checkins", "Checkouts", "Content", "Content Collections", "Content Filters", "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", "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", "Policies", "Policy Agreements", "Policy Versions", "Providers", "Purchase Fees", "Push Notification Tokens", "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", "Learn To Skate", "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" ] } ] }