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

# Get table column config

> Server-driven column catalog for an admin table: which columns the entity
has, how to render each cell, and how to sort or inline-edit it. The client
renders exactly the columns returned.

The response varies by:
- **organization** — columns can be gated on the org's feature flags (for
  example the check-in, test-result and queue columns), so never assume a
  fixed column set;
- **locale** — `header`s are returned in the authenticated user's language.

This endpoint returns only the column config, not the rows. Fetch the row
data from the entity's own JSON:API resource collection (the resource type
matches `entityType`, except `queue-ticket-bookings`, which reads from
`bookings`), and save inline edits by PATCHing that resource. See the
"Table Configuration" guide for the full cell-type and inline-edit contract.




## OpenAPI

````yaml /developers/openapi/admin-internal.openapi.json get /api/v1/ui/admin/table-config/{entityType}
openapi: 3.1.0
info:
  title: admin-api
  version: '1.0'
  description: >-
    The Admin API gives you **full programmatic access** to your anny
    organization. It is built for **server-side integrations** — backend
    services, automation scripts, and custom tooling that act on behalf of your
    team.


    ---


    ## When to use the Admin API


    Use the Admin API when you need to **drive workflows from your own
    systems**:


    - **Sync membership data** — create or update customers, assign them to
    communities, reflect subscription status from an external CRM

    - **Create bookings programmatically** — build back-office tools or automate
    repeat reservations without going through the customer checkout

    - **Issue and forward invoices** — generate invoices, send them to
    customers, or push them to your accounting system

    - **React to real-time events** — pair the API with
    [Webhooks](/developers/guides/admin/webhooks) to trigger side effects
    whenever a booking is created, cancelled, or checked in

    - **Drive display panels** — push live occupancy and schedule data to
    digital signage or lobby displays


    Combined with [webhook subscriptions](/developers/guides/admin/webhooks),
    you can build fully automated, event-driven workflows without polling.


    ---


    ## Authentication


    Generate a long-lived API token directly in the admin dashboard under
    **Organization Settings → API**. All requests require it in the
    `Authorization` header:


    ```

    Authorization: Bearer {access_token}

    ```


    Every endpoint is **organization-scoped**. Pass your organization ID as a
    query parameter on every request:


    ```

    ?o={organization_id}

    ```


    See the [Authentication guide](/developers/guides/authentication) for token
    scopes and the full OAuth2 flow.


    ---


    ## Admin API vs Customer API


    | | Admin API | Customer API |

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

    | **Use case** | Server-side automation, backend tooling | End-user apps,
    booking widgets |

    | **Auth** | Required — API token or OAuth2 | Optional — many endpoints work
    without a token |

    | **Identifiers** | Immutable UUIDs and integer IDs | Slugs, booking
    numbers, order numbers |

    | **Access** | Full read/write | Public and customer-owned data only |


    → [Go to the Customer API](/developers/api-reference/customer)


    ---


    ## Resource Identifiers


    The Admin API uses **immutable IDs** — UUIDs for most entities, integers for
    legacy ones. These are safe to store in external systems and never change,
    even if an organization renames a resource.


    ---


    ## Starting Points


    | Guide | What it covers |

    |---|---|

    | [Getting Started](/developers) | First steps and quickstart |

    | [JSON:API Conventions](/developers/guides/json-api-conventions) | Request
    and response format |

    | [Authentication](/developers/guides/authentication) | API tokens, OAuth2,
    scopes |

    | [Availability & Booking Search](/developers/guides/availability) | Search
    open slots and timeslots |

    | [Admin Booking Creation](/developers/guides/admin/booking-creation) |
    Create bookings from the back office |

    | [Admin Booking Edit](/developers/guides/admin/booking-edit) | Edit
    resource, dates, fields, add-ons, and sub-bookings |

    | [Admin Booking Lifecycle](/developers/guides/admin/booking-lifecycle) |
    Status changes, check-in, cancellations |

    | [Invoices](/developers/guides/admin/invoices) | Create, send, and manage
    invoices |

    | [Customer Management](/developers/guides/admin/customer-management) |
    Create and manage customer records |

    | [Booking Calendars](/developers/guides/admin/calendar-events) | Custom
    calendar events |

    | [Timeslot Management](/developers/guides/admin/timeslot-management) |
    Manage timeslot CRUD, recurrence, allocations, and rescheduling |

    | [Broadcast Campaigns](/developers/guides/admin/broadcasting) | Email and
    push campaigns |

    | [Exports](/developers/guides/admin/exports) | Export bookings and customer
    data |

    | [Webhooks & Events](/developers/guides/admin/webhooks) | Subscribe to
    real-time events |


    ---


    ## Base URLs


    | Environment | URL |

    |---|---|

    | Production | `https://b.anny.co` |

    | Gov-Cloud | `https://b.anny.eu` |
  contact:
    name: anny GmbH
    url: https://anny.co
    email: support@anny.co
servers:
  - url: https://b.anny.co
    description: Production
  - url: https://b.anny.eu
    description: Gov-Cloud
security:
  - Bearer: []
tags:
  - name: Booking Quotas
  - name: Orders
  - name: Organizations
  - name: Table Configuration
  - name: Test-Results
  - name: User Settings
  - name: Terminal Locations
  - name: Terminal Readers
  - name: Connection Tokens
  - name: Views
  - name: Voice Integration
paths:
  /api/v1/ui/admin/table-config/{entityType}:
    get:
      tags:
        - Table Configuration
      summary: Get table column config
      description: >
        Server-driven column catalog for an admin table: which columns the
        entity

        has, how to render each cell, and how to sort or inline-edit it. The
        client

        renders exactly the columns returned.


        The response varies by:

        - **organization** — columns can be gated on the org's feature flags
        (for
          example the check-in, test-result and queue columns), so never assume a
          fixed column set;
        - **locale** — `header`s are returned in the authenticated user's
        language.


        This endpoint returns only the column config, not the rows. Fetch the
        row

        data from the entity's own JSON:API resource collection (the resource
        type

        matches `entityType`, except `queue-ticket-bookings`, which reads from

        `bookings`), and save inline edits by PATCHing that resource. See the

        "Table Configuration" guide for the full cell-type and inline-edit
        contract.
      operationId: get-internal-table-config
      parameters:
        - schema:
            type: string
          in: header
          name: Authorization
          description: Bearer Token
          required: true
        - schema:
            type: string
            enum:
              - booking-passes
              - bookings
              - businesses
              - communities
              - customers
              - invoices
              - orders
              - plan-subscriptions
              - queue-ticket-bookings
              - resources
              - services
              - vouchers
          in: path
          name: entityType
          required: true
          description: The entity whose column catalog to return.
        - schema:
            type: string
          in: query
          name: o
          description: Organization ID
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  entityType:
                    type: string
                    description: Echoes the requested entity type.
                  columns:
                    type: array
                    description: Columns in display order.
                    items:
                      $ref: '#/components/schemas/table-column.v1'
              examples:
                customers:
                  summary: >-
                    Customers catalog (excerpt — text, icon-with-source, custom,
                    date, custom field)
                  value:
                    entityType: customers
                    columns:
                      - key: givenName
                        header: First name
                        sortable: true
                        defaultVisible: true
                        group: customer
                        cell:
                          type: text
                      - key: company
                        header: Company
                        sortable: true
                        defaultVisible: true
                        group: customer
                        icon:
                          - far
                          - building
                        cell:
                          type: icon
                          source: companyDisplay
                      - key: communities
                        header: Communities
                        sortable: false
                        cell:
                          type: custom
                      - key: createdAt
                        header: Created at
                        type: date
                        sortable: true
                        defaultVisible: true
                        cell:
                          type: date
                      - key: customField.7b2c1e34-9a1d-4c2f-8e5a-1f0b9d2c3a4e
                        header: T-shirt size
                        sortable: false
                        group: customField
                        icon:
                          - far
                          - pen-field
                        cell:
                          type: customField
                          source: customEntryMap.7b2c1e34-9a1d-4c2f-8e5a-1f0b9d2c3a4e
                bookings:
                  summary: >-
                    Bookings catalog (excerpt — model chips, dateRange,
                    currency, inline-editable)
                  value:
                    entityType: bookings
                    columns:
                      - key: number
                        header: No.
                        sortable: true
                        defaultVisible: true
                        cell:
                          type: text
                      - key: customer.fullName
                        header: Customer
                        sortable: false
                        defaultVisible: true
                        cell:
                          type: customer
                          source: customer
                      - key: resource.name
                        header: Resource
                        defaultVisible: true
                        cell:
                          type: resource
                          source: resource
                      - key: period
                        header: Period
                        type: dateRange
                        sortable: true
                        defaultVisible: true
                        cell:
                          type: dateRange
                      - key: subtotal
                        header: Subtotal
                        type: number
                        align: right
                        sortable: true
                        defaultVisible: true
                        cell:
                          type: currency
                      - key: note
                        header: Note
                        sortable: false
                        cell:
                          type: text
                          editable:
                            kind: text
                            writePath: note
                            rules:
                              - max:255
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found — no field catalog is registered for `entityType`.
      security:
        - Bearer: []
components:
  schemas:
    table-column.v1:
      $schema: https://json-schema.org/draft/2020-12/schema
      x-version: 1.0.0
      title: Table Column
      type: object
      description: >-
        A single column in an admin table's server-driven catalog, returned by
        the

        table-config endpoint. Describes the column identity, how to sort it,
        and how

        to render its cell. See the "Table Configuration" guide for the full
        contract.
      x-tags:
        - Models
      properties:
        key:
          type: string
          description: >-
            Stable column identifier (camelCase). Also the persisted view key
            and, for

            sortable columns, the JSON:API `sort` field. Never changes once
            shipped. A

            dotted key (e.g. `customer.fullName`) reads through a relationship.
          examples:
            - givenName
            - customer.fullName
        header:
          type: string
          description: Localized column label.
          examples:
            - First name
        type:
          type: string
          description: >-
            Sort/format primitive for the table shell. Omitted for plain
            (alphabetical)

            columns.
          enum:
            - date
            - number
            - dateRange
        sortable:
          type: boolean
          description: Whether the column is server-sortable via the JSON:API `sort` param.
        defaultVisible:
          type: boolean
          description: >-
            Present and `true` only for columns shown by default; absent means
            hidden by

            default.
        group:
          type: string
          description: Optional grouping bucket for the column picker.
          examples:
            - customer
        icon:
          type: array
          description: Optional FontAwesome icon for the header as `[style, name]`.
          items:
            type: string
          minItems: 2
          maxItems: 2
          examples:
            - - far
              - user
        align:
          type: string
          description: >-
            Optional column alignment. `right` for numeric/currency columns;
            left is implied.
          enum:
            - right
        cell:
          type: object
          description: How to render the cell and where it reads its data off the row.
          properties:
            type:
              type: string
              description: >-
                Cell renderer type — the wire contract the client keys its
                component

                registry on. A client that doesn't recognise a type should fall
                back to

                plain text, so new types never break older clients.
              enum:
                - text
                - number
                - date
                - dateRange
                - currency
                - icon
                - resource
                - service
                - customer
                - customField
                - addOnGroup
                - addOn
                - custom
            source:
              type: string
              description: >-
                Path to the cell's data on the row. Omitted for value cells
                (defaults to

                the column key). For the model chips (`resource` / `service` /
                `customer`)

                it names the relation on the row, and the client reads the whole
                related

                model. An `icon` cell with no `source` renders the row itself.
              examples:
                - customer
            matchPath:
              type: string
              description: >-
                On a list source, the record field compared against
                `matchValue`.
            matchValue:
              type: string
              description: >-
                The value `matchPath` must equal (compared as a string) to keep
                a record.

                Always sent as a string; coerce the record field before
                comparing.
            editable:
              type: object
              description: Present only on inline-editable cells.
              properties:
                kind:
                  type: string
                  description: '`text` renders a text input; `boolean` a toggle.'
                  enum:
                    - text
                    - boolean
                writePath:
                  type: string
                  description: >-
                    Top-level row attribute/relation to write on PATCH. Defaults
                    to the

                    column key; never a dotted path.
                rules:
                  type: array
                  description: >-
                    Constraint tokens the client maps to validators (e.g.
                    `required`,

                    `numeric`, `max:255`).
                  items:
                    type: string
              required:
                - kind
          required:
            - type
      required:
        - key
        - cell
  securitySchemes:
    Bearer:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://auth.anny.co/oauth/authorize
          tokenUrl: https://auth.anny.co/oauth/token
          refreshUrl: https://auth.anny.co/oauth/token/refresh
          scopes: {}

````