> ## Documentation Index
> Fetch the complete documentation index at: https://docs.1club.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Reorder class types

> Sets the order of the organization's class types: the ids, first to last. Every list of them follows it - this API, the 1club admin, the club's website and member apps. A type left out (one added since you read the list) keeps its place after the listed ones. Returns the list as it now stands.




## OpenAPI

````yaml /openapi-platform.json put /v1/platform/class-types/order
openapi: 3.0.0
info:
  title: 1club Platform API
  version: 1.0.0
  description: >-
    The 1club Platform API lets you programmatically access and manage your
    organization's data.


    ## Official API Contract


    This documentation is the official source of truth for the 1club Platform
    API.

    If an integration relies on undocumented endpoints, fields, response shapes,
    or internal behavior outside this spec, we can't guarantee backward
    compatibility.

    Build against what's documented here to stay stable as the platform evolves.


    ## Authentication


    All requests require a customer API key passed as a Bearer token:


    ```

    Authorization: Bearer 1club_sk_live_...

    ```


    Generate API keys from the admin portal under **Settings > API Tokens**.

    The key is tied to your organization - all responses are scoped to your
    org's data.


    Agents and MCP connectors can instead send an OAuth access token (the
    `platformOAuth` scheme), requesting only the scopes the task needs.


    ## Rate Limiting


    - **100 requests per minute** per API key

    - When exceeded, the API returns `429 Too Many Requests` with a
    `Retry-After` header

    - Rate limit headers are included in every response:
      - `X-RateLimit-Limit` - max requests per window
      - `X-RateLimit-Remaining` - requests remaining
      - `X-RateLimit-Reset` - seconds until the window resets

    ## Errors


    | Status | Meaning |

    |--------|---------|

    | `400` | Invalid request parameters |

    | `401` | Missing or invalid API key |

    | `404` | Resource not found (or doesn't belong to your organization) |

    | `429` | Rate limit exceeded |

    | `500` | Internal server error |


    ## Versioning and deprecation


    The API is versioned in the path (`/v1`). Changes within a version are
    additive: new endpoints, new optional parameters and new response fields can
    appear at any time, so clients should ignore fields they do not recognise.

    A breaking change ships as a new version.

    An operation due to be removed is first marked `deprecated: true` in this
    spec and announced in the changelog at https://docs.1club.ai/changelog, with
    advance notice before it is withdrawn.
  contact:
    name: 1club API Support
    email: support@1club.ai
servers:
  - url: https://api.1club.ai
    description: Production API
security:
  - customerApiAuth: []
  - platformOAuth: []
tags: []
paths:
  /v1/platform/class-types/order:
    put:
      tags:
        - Classes
      summary: Reorder class types
      description: >
        Sets the order of the organization's class types: the ids, first to
        last. Every list of them follows it - this API, the 1club admin, the
        club's website and member apps. A type left out (one added since you
        read the list) keeps its place after the listed ones. Returns the list
        as it now stands.
      operationId: updateClassTypeOrder
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PlatformTypeOrder'
      responses:
        '200':
          description: Every class type in the organization, in the new order
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/PlatformClassType'
        '400':
          $ref: '#/components/responses/PlatformBadRequest'
        '401':
          $ref: '#/components/responses/PlatformUnauthorized'
        '403':
          description: API key is missing the required `classes:write` scope
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PlatformError'
        '429':
          $ref: '#/components/responses/PlatformRateLimited'
      security:
        - customerApiAuth: []
components:
  schemas:
    PlatformTypeOrder:
      type: object
      description: A new order for the organization's instructor, class or area types.
      required:
        - orderedIds
      additionalProperties: false
      properties:
        orderedIds:
          type: array
          minItems: 1
          maxItems: 500
          items:
            type: integer
          description: >-
            The type ids, first to last. A type left out keeps its place after
            the listed ones.
    PlatformClassType:
      type: object
      description: >-
        A kind of class the organization runs. Reference the `id` as
        `classTypeId` on a class, or in `classTypeIds` on a class pay rate
        policy. One shape for the list, get-by-id, create and update.
      properties:
        id:
          type: integer
        name:
          type: string
        slug:
          type: string
          description: >-
            Stable key, derived from the name when a create does not send one. A
            rename never moves it.
        sortOrder:
          type: integer
          description: >-
            Position in the order staff set in Settings, 1 first. Lists come
            back in this order; change it with the type's PUT .../order.
        description:
          type: string
          nullable: true
        revenueAccountId:
          type: integer
          nullable: true
          description: >-
            Where a sale on this kind of class posts. Null falls back to the
            organization's default account.
        classCount:
          type: integer
          description: Classes currently run as this type, past and future.
        createdAt:
          type: string
          format: date-time
        updatedAt:
          type: string
          format: date-time
        maxPartySize:
          type: integer
          description: >-
            How many people one booking on a class of this kind may bring,
            including the booker.
        allowMultiDay:
          type: boolean
          description: >-
            Whether a class of this kind may run across more than one calendar
            day.
        cancelIfAttendanceZero:
          type: boolean
          description: Whether a class with nobody booked cancels itself.
        cancelIfAttendanceZeroHoursInAdvance:
          type: integer
          description: >-
            Hours before the start that cancellation runs. Meaningless unless
            `cancelIfAttendanceZero`.
        bookingAudience:
          $ref: '#/components/schemas/PlatformContactAudience'
        sport:
          type: string
          nullable: true
          description: >-
            The sport classes of this kind are for, a canonical sport id such as
            "jiu-jitsu". A default only: each class still carries its own
            `sport`. An unrecognised value is rejected.
        ageGroups:
          type: array
          items:
            type: string
            enum:
              - baby
              - preschool
              - child
              - preteen
              - junior
              - adult
              - senior
          description: >-
            Who a class of this kind is for: every age band it suits (baby 0–2,
            preschool 3–5, child 6–9, preteen 10–12, junior 13–17, adult 18–64,
            senior 65+), the same bands the age smart tags use. Stored youngest
            first, each once; a class for every age lists all of them, and an
            empty list means the club has not said. Marketplace search filters
            on it.
        ageGroup:
          type: string
          nullable: true
          deprecated: true
          enum:
            - infant
            - child
            - junior
            - adult
            - senior
            - all_ages
          description: >-
            Deprecated - use `ageGroups`. The single age group from before a
            class type could name several bands, kept for one release. Read: the
            old value that names exactly `ageGroups` (`infant` is baby and
            preschool, `child` is child and preteen, `all_ages` is every band),
            else null. Write: read only when `ageGroups` is absent, mapped the
            same way, null clearing. Sending back the value a read reported
            changes nothing, and it never replaces bands no old value names -
            set those with `ageGroups`.
        difficulty:
          type: string
          nullable: true
          enum:
            - beginner
            - intermediate
            - advanced
            - all_levels
          description: >-
            How hard a class of this kind is. Marketplace search filters on it.
            Not a rank: see `programId`.
        programId:
          type: integer
          nullable: true
          description: >-
            The program this kind of class belongs to, from GET
            /v1/platform/programs. Its sessions count toward the program's
            progression track. Plans cover class types, not programs, so moving
            a class type between programs changes no plan.
        progressionTrackId:
          type: integer
          nullable: true
          readOnly: true
          description: >-
            The progression track sessions of this kind count toward: its
            program's. Null counts toward none. Set it on the program.
    PlatformError:
      type: object
      properties:
        error:
          type: string
        code:
          type: string
          description: >-
            A stable, machine-readable reason, when the error has one (e.g.
            `CONTACT_EXISTS`).
        details:
          type: object
          additionalProperties: true
          description: >-
            Structured values behind the error. A 409 naming an existing record
            carries its id here, e.g. `contactId`.
    PlatformContactAudience:
      type: object
      description: >-
        Who something applies to, as a set of predicates a contact must match.
        `null` means everybody. The same shape a promotion segment and an
        automation entry condition use. `membershipPlanIds` is which plan the
        contact must HOLD, not which plan a purchase discounts.
      nullable: true
      properties:
        memberTypes:
          type: array
          maxItems: 20
          items:
            type: string
          description: Values of the contact's `type`, e.g. `member`, `lead`.
        tags:
          type: array
          maxItems: 50
          items:
            oneOf:
              - type: string
                maxLength: 100
              - type: integer
          description: Tag ids or names the contact carries.
        membershipPlanIds:
          type: array
          maxItems: 50
          items:
            type: integer
          description: Membership plans the contact must hold, from GET /v1/platform/plans.
        membershipPlanCategoryIds:
          type: array
          maxItems: 50
          items:
            type: integer
          description: Plan categories the contact must hold a plan in.
        progressionLevelIds:
          type: array
          maxItems: 50
          items:
            type: integer
          description: >-
            Progression levels the contact must hold, each counting that level
            or above on its track: "blue belt and up". The contact's current
            rank is its latest earned one.
  responses:
    PlatformBadRequest:
      description: Invalid request (bad parameters, or a body that fails validation)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlatformError'
    PlatformUnauthorized:
      description: Invalid or missing API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlatformError'
    PlatformRateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/PlatformError'
  securitySchemes:
    customerApiAuth:
      type: http
      scheme: bearer
      description: >-
        Organization-scoped bearer credential: a customer API key
        (1club_sk_live_...) or an MCP OAuth access token.
    platformOAuth:
      type: oauth2
      description: >-
        OAuth 2.1 authorization code flow with PKCE (S256), as used by MCP
        connectors. Register a client dynamically (RFC 7591) at
        https://api.1club.ai/v1/mcp/oauth/register. Each scope grants one
        capability; request only what the integration needs.
      flows:
        authorizationCode:
          authorizationUrl: https://auth.1club.ai/oauth/authorize
          tokenUrl: https://api.1club.ai/v1/mcp/oauth/token
          scopes:
            '*': >-
              Full access - read and manage everything in this organization,
              including capabilities added later
            classes:read: View classes, class types, schedules and progression tracks
            classes:write: >-
              Create, reschedule, and cancel classes, and maintain the class
              types they are run as
            checkins:read: View check-ins
            checkins:write: Check people in, to a booking or on their membership
            content:read: View published content
            content:write: >-
              Create, edit and delete content - posts, FAQs, documents and
              reusable blocks
            website:read: >-
              View your website: pages, sections, layout, styles and publish
              history
            website:write: >-
              Edit your website - pages, sections, navigation and styles. Edits
              stay unpublished until published.
            website:publish: >-
              Publish your website, making unpublished edits visible to the
              public, and roll back to an earlier version
            media:read: View your media library
            media:write: >-
              Add images and videos to your media library and edit their names
              and descriptions
            media:delete: Permanently delete files from your media library
            clubs:read: View club information
            clubs:write: >-
              Edit your clubs' details - name, contact details, address, opening
              hours, amenities and sports. Live on your website, member portal,
              app and 1club.me at once; a club listed on 1club.me sends its
              listing's changes for review.
            transactions:read: View transactions, revenue reports and your chart of accounts
            transactions:write: >-
              Record revenue collected outside 1club, such as a marketplace
              payout for your bookings, and refunds of it. Nothing is charged to
              anyone.
            transactions:delete: >-
              Void unpaid charges so they are no longer owed, and delete ones
              raised by mistake. A never-paid pass whose last charge goes is
              cancelled with it. Paid charges cannot be voided or deleted, and
              an API key reaches only the charges of bookings it made.
            invoices:read: >-
              View your invoices - who they were issued to, their amounts and
              status - and how much was invoiced over a period
            areas:read: View areas, area types, blocks and availability
            areas:write: >-
              Create and update areas and area types, and block or unblock an
              area
            bookings:read: View bookings
            bookings:write: >-
              Create, change, reschedule and cancel bookings, and add or remove
              participants
            bookings:delete: >-
              Permanently delete bookings entered by mistake, with their unpaid
              charges, check-ins and players. A paid or invoiced booking cannot
              be deleted - cancel and refund it instead.
            contacts:read: >-
              View contacts, their tags and custom field values, and your sales
              pipeline stages and sources
            contacts:write: >-
              Create and update contacts and tag them, and maintain your tags,
              smart tag rules and contact custom fields
            contacts:delete: >-
              Archive contacts, which cancels their active memberships and all
              their future bookings. Separate from creating and updating because
              those cancellations are not undone by restoring the contact.
            instructors:read: >-
              View instructors, their availability, the staff roster and their
              time off
            instructors:write: >-
              Create and update instructors (coaches) and the instructor types
              they are grouped by, including what members pay for a one-to-one
              session and how you pay the coach, and manage the staff roster
              (shifts, rotations) and their time off. Does not grant
              admin-portal access: an instructor created this way has no login
              and is never invited to your staff portal.
            plans:read: View plans and pricing
            plans:write: Create, edit and delete plans and plan categories
            memberships:read: View memberships
            memberships:write: >-
              Sell memberships, set their price and whether they are paid, and
              pause, resume or cancel them
            products:read: >-
              View the product catalogue and its categories, including prices
              and how many are left to sell
            products:write: Create and edit products and product categories
            forms:read: >-
              View your forms and their questions, and how many people have
              completed each. Not the answers themselves.
            forms:write: >-
              Create and edit forms and their questions, including sign-up forms
              that sell your plans and products. Forms are public as soon as
              they are created or changed. Does not delete forms.
            organization:write: >-
              Change organization-wide settings, which take effect immediately.
              That includes which languages you offer, across your website, the
              member portal, the mobile app and email, and what your clubs call
              their booking cards (private training, group activities, areas)
              wherever members book.
            revenue-accounts:write: >-
              Add accounts to your chart of accounts and edit them, including
              which one sales post to by default. Reading the chart needs no
              scope of its own - any of plans, products or transactions admits
              it.
            pricing-rules:read: >-
              View pricing rules - the surcharges, discounts and set prices
              applied when a booking is priced - and quote what a booking would
              cost
            pricing-rules:write: >-
              Create, edit, turn off and delete pricing rules. Changes apply to
              every booking priced afterwards.
            booking-policies:read: >-
              View booking policies: cancellation and refund rules, payment
              timing and booking windows
            booking-policies:write: >-
              Create, edit, duplicate and delete booking policies. Changes apply
              to every booking they cover from then on.
            document-rules:read: >-
              View document rules - which members are asked to sign or accept
              which documents, such as waivers
            document-rules:write: >-
              Create, edit and delete document rules, which decide who must sign
              or accept a document and whether it is required for entry
            external-programs:read: >-
              View external programs - third parties such as MultiSport or a
              corporate wellness scheme that pay for members' visits - and what
              each covers
            external-programs:write: >-
              Create, edit and remove external programs, including what each
              pays per visit and which classes, areas and coaches it can be used
              for
            templates:read: View your email and SMS templates
            templates:write: Create, edit and delete email and SMS templates
            events:read: View events, their tickets and how many are sold
            events:write: >-
              Create, edit, duplicate and delete events, and publish, unpublish
              or cancel them. Cancelling an event also cancels its attendees'
              bookings.
            messages:read: >-
              View messages sent to and received from your members, and their
              delivery status
            messages:write: >-
              Prepare draft messages to members. Drafts are never sent from
              here: someone at your club reviews and sends them from 1club.
            analytics:read: >-
              View statistics over a period - revenue, bookings, check-ins, how
              full your classes, courts and coaches were, memberships added and
              cancelled, and new members - as totals, never the people or sales
              behind them
            payment-methods:write: >-
              Add, rename and remove the payment methods staff record by hand,
              such as cash or a bank transfer, and choose which ones members may
              pick when paying for a booking. Reading them needs no scope of its
              own - transactions:read admits it.
            staff:read: >-
              View your staff accounts, their roles, and what each role is
              allowed to do
            staff:write: >-
              Change a staff member's role, and what the manager, front desk and
              instructor roles are allowed to do. Only a signed-in person can
              use it, with the same limits as in 1club: an API key is always
              refused.
            notifications:read: >-
              View which notifications each role gets by default, and on which
              channels
            notifications:write: >-
              Change which notifications each role gets and on which channels,
              and apply those defaults to everyone in a role, replacing their
              own choices
            competitors:read: >-
              View the competitors you follow, their prices and Google ratings,
              and how your prices compare with the market
            competitors:write: >-
              Add, edit and remove the competitors you follow, and have their
              websites read again

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.