name: 'Menu Management'
description: |-

  APIs for managing menu items for POS
endpoints:
  -
    custom: []
    httpMethods:
      - GET
    uri: api/v1/tenant/menu
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Get Menu Overview'
      description: 'Get menu structure with categories and item counts'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters: []
    cleanUrlParameters: []
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "data": {
              "categories": [],
              "total_items": 50,
              "available_items": 45
            }
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - GET
    uri: api/v1/tenant/menu/items
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'List Menu Items'
      description: 'Get paginated list of menu items'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters: []
    cleanUrlParameters: []
    queryParameters:
      page:
        custom: []
        name: page
        description: 'Page number.'
        required: false
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      per_page:
        custom: []
        name: per_page
        description: 'Items per page (max 100).'
        required: false
        example: 15
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      available:
        custom: []
        name: available
        description: 'Filter only available items.'
        required: false
        example: true
        type: boolean
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      category_id:
        custom: []
        name: category_id
        description: 'Filter by category.'
        required: false
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      search:
        custom: []
        name: search
        description: 'Search by name or description.'
        required: false
        example: pizza
        type: string
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanQueryParameters:
      page: 1
      per_page: 15
      available: true
      category_id: 1
      search: pizza
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "data": [],
            "meta": {
              "pagination": {}
            }
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - GET
    uri: 'api/v1/tenant/menu/items/{id}'
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Get Single Menu Item'
      description: 'Get detailed information about a specific menu item'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters:
      id:
        custom: []
        name: id
        description: 'Menu item ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanUrlParameters:
      id: 1
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "data": {}
          }
        headers: []
        description: ''
      -
        custom: []
        status: 404
        content: |-
          {
            "success": false,
            "message": "Menu item not found",
            "error_code": "NOT_FOUND"
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - POST
    uri: api/v1/tenant/menu/items
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Create Menu Item'
      description: 'Create a new menu item'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: multipart/form-data
      Accept: application/json
    urlParameters: []
    cleanUrlParameters: []
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters:
      name:
        custom: []
        name: name
        description: 'Item name.'
        required: true
        example: 'Margherita Pizza'
        type: string
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      description:
        custom: []
        name: description
        description: 'optional Item description.'
        required: false
        example: 'Classic pizza with tomato and mozzarella'
        type: string
        enumValues: []
        exampleWasSpecified: true
        nullable: true
        deprecated: false
      price:
        custom: []
        name: price
        description: 'Item price.'
        required: true
        example: 12.99
        type: number
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      category_id:
        custom: []
        name: category_id
        description: 'Category ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      preparation_time:
        custom: []
        name: preparation_time
        description: 'optional Prep time in minutes.'
        required: false
        example: 15
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: true
        deprecated: false
      is_available:
        custom: []
        name: is_available
        description: 'optional Availability status.'
        required: false
        example: true
        type: boolean
        enumValues: []
        exampleWasSpecified: true
        nullable: true
        deprecated: false
      image:
        custom: []
        name: image
        description: 'optional Item image'
        required: false
        example: null
        type: file
        enumValues: []
        exampleWasSpecified: false
        nullable: true
        deprecated: false
    cleanBodyParameters:
      name: 'Margherita Pizza'
      description: 'Classic pizza with tomato and mozzarella'
      price: 12.99
      category_id: 1
      preparation_time: 15
      is_available: true
    fileParameters:
      image: null
    responses:
      -
        custom: []
        status: 201
        content: |-
          {
            "success": true,
            "message": "Menu item created successfully",
            "data": {}
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - PUT
    uri: 'api/v1/tenant/menu/items/{id}'
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Update Menu Item'
      description: 'Update an existing menu item'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: multipart/form-data
      Accept: application/json
    urlParameters:
      id:
        custom: []
        name: id
        description: 'Menu item ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanUrlParameters:
      id: 1
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters:
      name:
        custom: []
        name: name
        description: 'Must not be greater than 255 characters.'
        required: false
        example: b
        type: string
        enumValues: []
        exampleWasSpecified: false
        nullable: false
        deprecated: false
      description:
        custom: []
        name: description
        description: ''
        required: false
        example: 'Eius et animi quos velit et.'
        type: string
        enumValues: []
        exampleWasSpecified: false
        nullable: true
        deprecated: false
      price:
        custom: []
        name: price
        description: 'Must be at least 0.'
        required: false
        example: 60
        type: number
        enumValues: []
        exampleWasSpecified: false
        nullable: false
        deprecated: false
      category_id:
        custom: []
        name: category_id
        description: 'The <code>id</code> of an existing record in the categories table.'
        required: false
        example: null
        type: string
        enumValues: []
        exampleWasSpecified: false
        nullable: false
        deprecated: false
      preparation_time:
        custom: []
        name: preparation_time
        description: 'Must be at least 0.'
        required: false
        example: 42
        type: integer
        enumValues: []
        exampleWasSpecified: false
        nullable: true
        deprecated: false
      is_available:
        custom: []
        name: is_available
        description: ''
        required: false
        example: true
        type: boolean
        enumValues: []
        exampleWasSpecified: false
        nullable: true
        deprecated: false
      image:
        custom: []
        name: image
        description: 'Must be an image. Must not be greater than 2048 kilobytes.'
        required: false
        example: null
        type: file
        enumValues: []
        exampleWasSpecified: false
        nullable: true
        deprecated: false
    cleanBodyParameters:
      name: b
      description: 'Eius et animi quos velit et.'
      price: 60
      preparation_time: 42
      is_available: true
    fileParameters:
      image: null
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "message": "Menu item updated successfully",
            "data": {}
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - DELETE
    uri: 'api/v1/tenant/menu/items/{id}'
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Delete Menu Item'
      description: 'Soft delete a menu item'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters:
      id:
        custom: []
        name: id
        description: 'Menu item ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanUrlParameters:
      id: 1
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "message": "Menu item deleted successfully"
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - POST
    uri: 'api/v1/tenant/menu/items/{id}/toggle'
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Toggle Item Availability'
      description: 'Quickly toggle menu item availability (for out of stock scenarios)'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters:
      id:
        custom: []
        name: id
        description: 'Menu item ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanUrlParameters:
      id: 1
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "message": "Item availability updated",
            "data": {
              "is_available": false
            }
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - DELETE
    uri: 'api/v1/tenant/menu/items/{id}/image'
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Delete Menu Item Image'
      description: 'Remove the image from a menu item'
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters:
      id:
        custom: []
        name: id
        description: 'Menu item ID.'
        required: true
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanUrlParameters:
      id: 1
    queryParameters: []
    cleanQueryParameters: []
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "message": "Image deleted successfully"
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
  -
    custom: []
    httpMethods:
      - GET
    uri: api/v1/tenant/pos/data
    metadata:
      custom: []
      groupName: 'Menu Management'
      groupDescription: |-

        APIs for managing menu items for POS
      subgroup: ''
      subgroupDescription: ''
      title: 'Get All Menu Data (POS Optimized)'
      description: |-
        Get all menu data including categories, items, and modifiers in one request.
        Optimized for POS tablet/mobile app to load everything at once.
      authenticated: true
      deprecated: false
    headers:
      Authorization: 'Bearer YOUR_TOKEN_HERE'
      Content-Type: application/json
      Accept: application/json
    urlParameters: []
    cleanUrlParameters: []
    queryParameters:
      available:
        custom: []
        name: available
        description: 'Filter only available items.'
        required: false
        example: true
        type: boolean
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
      category_id:
        custom: []
        name: category_id
        description: 'Filter by category.'
        required: false
        example: 1
        type: integer
        enumValues: []
        exampleWasSpecified: true
        nullable: false
        deprecated: false
    cleanQueryParameters:
      available: true
      category_id: 1
    bodyParameters: []
    cleanBodyParameters: []
    fileParameters: []
    responses:
      -
        custom: []
        status: 200
        content: |-
          {
            "success": true,
            "data": {
              "categories": [],
              "items": [],
              "total_items": 50
            }
          }
        headers: []
        description: ''
    responseFields: []
    auth:
      - headers
      - Authorization
      - 'Bearer 6g43cv8PD1aE5beadkZfhV6'
    controller: null
    method: null
    route: null
