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

# List available fields

> Retrieve all available fields (both default and custom) for your venue. Fields include metadata such as type, collection, code, label, and whether they're required in the back office. Custom fields are automatically merged from both venue-level and venue group-level configurations.



## OpenAPI

````yaml /api-reference/bookingshake-openapi.json get /fields
openapi: 3.0.3
info:
  title: BookingShake API
  description: >-
    The BookingShake API allows you to programmatically create and manage
    events, bookings, and related resources. Integrate BookingShake with your
    applications to automate event creation, retrieve booking sources, spaces,
    statuses, and custom fields.


    **Rate Limiting:** All endpoints are rate limited per API key. POST
    /events/create allows 10 requests per minute, while GET endpoints allow 60
    requests per minute. Rate limit information is provided in response headers
    (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset).
  version: 1.0.0
  contact:
    name: BookingShake Support
    email: support@bookingshake.com
    url: https://bookingshake.com
servers:
  - url: https://api.bookingshake.io/api
    description: Production server
security:
  - bearerAuth: []
tags:
  - name: Events
    description: Create and manage events and bookings
  - name: Resources
    description: Retrieve booking sources, spaces, and statuses
  - name: Fields
    description: Retrieve available custom and default fields
  - name: Invoices
    description: Retrieve issued invoices
  - name: Payments
    description: Retrieve payments
  - name: Contacts
    description: Retrieve contacts (people)
  - name: Products
    description: Retrieve the venue product catalog
paths:
  /fields:
    get:
      tags:
        - Fields
      summary: List available fields
      description: >-
        Retrieve all available fields (both default and custom) for your venue.
        Fields include metadata such as type, collection, code, label, and
        whether they're required in the back office. Custom fields are
        automatically merged from both venue-level and venue group-level
        configurations.
      operationId: getFields
      responses:
        '200':
          description: List of fields retrieved successfully
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: Maximum requests allowed per minute (60 for this endpoint)
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: Requests remaining in the current window
            X-RateLimit-Reset:
              schema:
                type: integer
              description: Unix timestamp when the rate limit resets
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Field'
              example:
                - value: field_event_type
                  type: text
                  collection: reservations
                  code: event_type
                  label: Event Type
                  isRequiredInBO: false
                  isCustom: false
                - value: field_date
                  type: date
                  collection: reservations
                  code: date
                  label: Date
                  isRequiredInBO: true
                  isCustom: false
                - value: field_source
                  type: select
                  collection: reservations
                  code: source
                  label: Source
                  isRequiredInBO: false
                  isCustom: false
                  data:
                    - label: Website
                      value: src_website
                    - label: Phone
                      value: src_phone
                - value: field_pax
                  type: number
                  collection: reservations
                  code: pax
                  label: Number of Guests
                  isRequiredInBO: true
                  isCustom: false
                - value: field_firstname
                  type: text
                  collection: clients
                  code: firstname
                  label: First Name
                  isRequiredInBO: true
                  isCustom: false
                - value: field_email
                  type: email
                  collection: clients
                  code: email
                  label: Email
                  isRequiredInBO: true
                  isCustom: false
                - value: Abc123XyZ789
                  type: input
                  collection: clients
                  code: custom_a1b2c3d4e5
                  label: Preferred Language
                  isRequiredInBO: false
                  isCustom: true
                - value: Def456UvW012
                  type: input
                  collection: reservations
                  code: custom_f6g7h8i9j0
                  label: Budget Range
                  isRequiredInBO: true
                  isCustom: true
        '400':
          description: Bad request - invalid token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                message: invalid token
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                message: error
      security:
        - bearerAuth: []
components:
  schemas:
    Field:
      type: object
      properties:
        value:
          type: string
          description: Unique field identifier
          example: Abc123XyZ789
        type:
          type: string
          description: Field type (e.g., text, number, date, select)
          example: text
        collection:
          type: string
          description: >-
            Indicates where the field should be used: 'clients'
            (contact.custom_fields), 'accounts' (company.custom_fields), or
            'reservations' (booking.custom_fields)
          example: clients
          enum:
            - clients
            - accounts
            - reservations
        code:
          type: string
          description: >-
            Field code/identifier. For custom fields, follows the format
            'custom_XXXXXXXXXXX'
          example: custom_a1b2c3d4e5
        label:
          type: string
          description: Field display label (translated based on venue's default language)
          example: Event Type
        isRequiredInBO:
          type: boolean
          description: Whether the field is required in the back office
          example: false
        isCustom:
          type: boolean
          description: >-
            Indicates if this is a custom field (true) or a default system field
            (false)
          example: false
        data:
          type: array
          description: Additional data for select-type fields (list of available options)
          items:
            type: object
          example:
            - label: Option 1
              value: opt1
            - label: Option 2
              value: opt2
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message describing what went wrong
          example: invalid token
    RateLimitResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
          example: Rate limit exceeded
        data:
          type: object
          properties:
            limit:
              type: integer
              description: Maximum requests allowed per window
              example: 10
            window:
              type: string
              description: Time window duration
              example: 60 seconds
            remaining:
              type: integer
              description: Requests remaining (always 0 on rate limit error)
              example: 0
            resetAt:
              type: string
              format: date-time
              description: ISO 8601 timestamp when the limit resets
              example: '2025-11-17T14:30:00.000Z'
            retryAfter:
              type: integer
              description: Seconds to wait before retrying
              example: 45
  responses:
    RateLimitExceeded:
      description: Rate limit exceeded - too many requests
      headers:
        X-RateLimit-Limit:
          schema:
            type: integer
          description: Maximum requests allowed per minute
        X-RateLimit-Remaining:
          schema:
            type: integer
          description: Requests remaining (always 0 on 429)
        X-RateLimit-Reset:
          schema:
            type: integer
          description: Unix timestamp when the rate limit resets
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait before retrying
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitResponse'
          example:
            message: Rate limit exceeded
            data:
              limit: 60
              window: 60 seconds
              remaining: 0
              resetAt: '2025-11-17T14:30:00.000Z'
              retryAfter: 45
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Bearer authentication using your BookingShake API key. Retrieve your API
        key from Settings > Integrations in your BookingShake dashboard.

````