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

# Get category

> Load a category from a composed menu with per-context availability.

Returns a single category from the active menu, including how it appears across channels, stores, and fulfillment types. Use this endpoint to render category headers, descriptions, and availability badges in your ordering UI.

<Note>
  Requires a Fire spark access token obtained through [token
  exchange](/docs/storefront-api/oauth/exchange/post).
</Note>

## Path parameters

| Parameter | Description                                                                                |
| --------- | ------------------------------------------------------------------------------------------ |
| `id`      | External category identifier. Alphanumeric characters, `_`, and `-` only. 1–64 characters. |

## Query parameters

| Parameter        | Required | Description                      |
| ---------------- | -------- | -------------------------------- |
| `fulfillment_id` | No       | External fulfillment identifier. |
| `store_id`       | No       | External store identifier.       |
| `channel_id`     | No       | External channel identifier.     |
| `brand_id`       | No       | External brand identifier.       |

## Request

```bash theme={null}
curl "https://firespark.cloud/api/storefront/v1/menus/categories/burgers?fulfillment_id=delivery&store_id=downtown&channel_id=app&brand_id=0001" \
  -H "Authorization: Bearer ACCESS_TOKEN"
```

## Response

<ResponseExample>
  ```json Success theme={null}
  {
    "data": {
      "id": "burgers",
      "uid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "brand_id": "0001",
      "organization_id": "11111111-1111-1111-1111-111111111111",
      "merchant_id": "22222222-2222-2222-2222-222222222222",
      "name": "Burgers",
      "description": "Hand-crafted burgers",
      "channels": {
        "APP": {
          "id": "app",
          "uid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
          "name": "Mobile app",
          "stores": {
            "downtown": {
              "id": "downtown",
              "uid": "c3d4e5f6-a7b8-9012-cdef-123456789012",
              "name": "Downtown",
              "fulfillment": {
                "DELIVERY": {
                  "uid": "d4e5f6a7-b8c9-0123-def4-567890abcdef",
                  "id": "delivery",
                  "type": "DELIVERY",
                  "name": "Delivery",
                  "availability": {
                    "status": "ACTIVE",
                    "schedules": [
                      { "day_of_week": "monday", "periods": [{ "start_time": "11:00:00", "end_time": "22:00:00" }] }
                    ],
                    "inactive_until": null
                  },
                  "items": [{ "type": "PRODUCT", "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }]
                }
              }
            }
          }
        }
      },
      "cms_template_id": null,
      "cms": null,
      "status": "ACTIVE"
    }
  }
  ```
</ResponseExample>

## Category object

| Field             | Type           | Description                                                                |
| ----------------- | -------------- | -------------------------------------------------------------------------- |
| `id`              | string         | External category identifier.                                              |
| `uid`             | string (UUID)  | Fire spark internal identifier.                                            |
| `brand_id`        | string \| null | External brand identifier. `null` when the resource is not brand-scoped.   |
| `organization_id` | string (UUID)  | Fire spark organization identifier.                                        |
| `merchant_id`     | string (UUID)  | Fire spark merchant identifier.                                            |
| `name`            | string         | Display name. 1–100 characters.                                            |
| `description`     | string         | Optional category description. Up to 500 characters. `null` when omitted.  |
| `channels`        | object         | Per-channel visibility and availability keyed by channel code.             |
| `cms_template_id` | string (UUID)  | CMS template linked to this category. `null` when no template is assigned. |
| `cms`             | object         | Read-only. Resolved CMS template when assigned.                            |
| `status`          | string         | `ACTIVE` or `INACTIVE`.                                                    |

<AccordionGroup>
  <Accordion title="channels">
    Map of channel codes. Each entry contains:

    | Field    | Required | Type          | Description                                |
    | -------- | -------- | ------------- | ------------------------------------------ |
    | `id`     | Yes      | string        | External channel identifier.               |
    | `uid`    | Yes      | string (UUID) | Fire spark channel identifier.             |
    | `name`   | Yes      | string        | Display name.                              |
    | `stores` | Yes      | object        | Map of store codes to store configuration. |

    Each store entry:

    | Field         | Required | Type          | Description                                                 |
    | ------------- | -------- | ------------- | ----------------------------------------------------------- |
    | `id`          | Yes      | string        | External store identifier.                                  |
    | `uid`         | Yes      | string (UUID) | Fire spark store identifier.                                |
    | `name`        | Yes      | string        | Display name.                                               |
    | `fulfillment` | Yes      | object        | Map of fulfillment type codes to fulfillment configuration. |

    Each fulfillment entry:

    | Field          | Required | Type          | Description                                                   |
    | -------------- | -------- | ------------- | ------------------------------------------------------------- |
    | `uid`          | Yes      | string (UUID) | Fire spark fulfillment identifier.                            |
    | `id`           | Yes      | string        | External fulfillment identifier.                              |
    | `type`         | Yes      | string        | Fulfillment type code (for example `DELIVERY`).               |
    | `name`         | Yes      | string        | Display name.                                                 |
    | `availability` | Yes      | object        | Category availability for this context. See **availability**. |
    | `items`        | No       | array         | Ordered category entries. Defaults to `[]`.                   |

    Each entry in `items`:

    | Field  | Required | Type   | Description                              |
    | ------ | -------- | ------ | ---------------------------------------- |
    | `type` | Yes      | string | `CATEGORY` or `PRODUCT`.                 |
    | `id`   | Yes      | string | External category or product identifier. |
  </Accordion>

  <Accordion title="availability">
    | Field            | Required | Type          | Description                                                                                      |
    | ---------------- | -------- | ------------- | ------------------------------------------------------------------------------------------------ |
    | `status`         | Yes      | string        | `ACTIVE`, `INACTIVE`, or `HIDDEN`.                                                               |
    | `schedules`      | No       | array \| null | Schedule entries with `day_of_week` and `periods`. `null` when there is no schedule restriction. |
    | `inactive_until` | No       | string        | Optional ISO 8601 datetime when a temporary inactive state ends.                                 |

    Each schedule entry contains `day_of_week` (`monday` through `sunday`) and a `periods` array. Each period has optional `closed` (default `false`), `start_time`, `end_time`, and optional `start_date` / `end_date` bounds.
  </Accordion>
</AccordionGroup>

## Error responses

| Status | Description                                             |
| ------ | ------------------------------------------------------- |
| `401`  | Missing or invalid access token.                        |
| `403`  | Token does not have access to this category.            |
| `404`  | Category not found in the active menu for this context. |


## OpenAPI

````yaml GET /menus/categories/{id}
openapi: 3.0.1
info:
  title: Fire spark Storefront API
  description: Customer-facing channel endpoints for Fire spark.
  version: 1.0.0
servers:
  - url: https://firespark.cloud/api/storefront/v1
security:
  - bearerAuth: []
paths:
  /menus/categories/{id}:
    get:
      summary: Get category
      parameters:
        - in: path
          name: id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External category identifier.
        - in: query
          name: fulfillment_id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External fulfillment identifier.
        - in: query
          name: store_id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External store identifier.
        - in: query
          name: channel_id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External channel identifier.
        - in: query
          name: brand_id
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-zA-Z0-9_-]+$
          description: External brand identifier.
      responses:
        '200':
          description: Ok
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/MenuCategory'
components:
  schemas:
    MenuCategory:
      type: object
      properties:
        id:
          type: string
          minLength: 1
          maxLength: 64
          pattern: ^[a-zA-Z0-9_-]+$
        name:
          $ref: '#/components/schemas/MultiLanguageText'
        items:
          type: array
          items: 0ef08d63-0882-41ae-b38b-4d369cac046d
    MultiLanguageText:
      type: object
      additionalProperties:
        type: string
      example:
        en_us: Example
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````