Lavu Inventory API

Ingredients and ingredient usage.

OpenAPI Specification

lavu-inventory-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Lavu (POSLavu) Inventory API
  description: POST-based data API for the Lavu restaurant point-of-sale platform. A single request endpoint accepts form-encoded credentials (dataname, key, token) plus a `table` selector and returns XML `<row>` elements for the requested table. The documented tables expose menu structure (menu_groups, menu_categories, menu_items), floor layout (tables), and transactions (orders, order_contents, order_payments) along with inventory data (ingredients, ingredient_usage). Records can be written by adding `cmd=insert` and an XML `contents` payload. Documentation is published at admin.poslavu.com and credentials are retrieved from the API tab of the POSLavu Control Panel.
  version: '1.0'
  contact:
    name: Kin Lane
    email: kin@apievangelist.com
  x-generated-from: documentation
  x-source-url: https://admin.poslavu.com/cp/areas/api_doc.html
  x-last-validated: '2026-06-02'
servers:
- url: https://admin.poslavu.com/cp/reqserv
  description: Read endpoint (query tables)
- url: https://admin.poslavu.com/v2/reqserv
  description: Insert endpoint (write records)
tags:
- name: Inventory
  description: Ingredients and ingredient usage.
paths:
  /:
    post:
      operationId: queryTable
      summary: Lavu Query a POSLavu Table
      description: Retrieve rows from a POSLavu data table. Provide the `dataname`, `key`, and `token` credentials from the API tab of the POSLavu Control Panel, select the `table`, and optionally filter with `column`/`value` (exact match) or `column`/`value_min`/`value_max` (range), and paginate with `limit` (offset,count). Responses are returned as XML `<row>` elements.
      tags:
      - Inventory
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/QueryRequest'
            examples:
              QueryTableRequestExample:
                summary: Default queryTable request
                x-microcks-default: true
                value:
                  dataname: MyRestaurant
                  key: a1b2c3d4e5f6
                  token: f6e5d4c3b2a1
                  table: orders
                  column: closed
                  value_min: '2011-01-01 00:00:00'
                  value_max: '2011-02-01 00:00:00'
                  limit: 0,20
      responses:
        '200':
          description: XML document containing zero or more `<row>` elements.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/RowList'
              examples:
                QueryTable200Example:
                  summary: Default queryTable 200 response
                  x-microcks-default: true
                  value:
                    row:
                    - id: '1'
                      order_id: '1'
                      location: Dev West Side
                      location_id: '9'
                      opened: '2010-10-06 12:01:20'
                      closed: '2011-01-26 17:16:31'
                      subtotal: '40.50'
                      taxrate: '0.06875'
                      tax: '2.78'
                      total: '43.28'
                      server: Ancori Lifigi
                      server_id: '5'
                      tablename: Booth 7
                      send_status: '1'
                      discount: '0.00'
                      discount_sh: ''
                      gratuity: '0.00'
                      gratuity_percent: '0.2250'
                      card_gratuity: '0.00'
                      cash_paid: '46.64'
                      card_paid: '0.00'
                      gift_certificate: '0.00'
                      change_amount: '3.36'
                      reopen_refund: '0.00'
                      void: '1'
                      cashier: Ancori Lifigi
                      cashier_id: '5'
                      auth_by: ''
                      auth_by_id: '0'
                      guests: '1'
                      email: ''
                      permission: '0'
                      check_has_printed: '1'
                      no_of_checks: '2'
                      card_desc: ''
                      transaction_id: ''
                      multiple_tax_rates: '0'
                      tab: '0'
                      original_id: '0'
                      deposit_status: '0'
                      register: ''
                      refunded: '0'
                      refund_notes: ''
                      refunded_cc: ''
                      refund_notes_cc: ''
                      refunded_by: '0'
                      refunded_by_cc: '0'
                      cash_tip: ''
                      discount_value: ''
                      reopened_datetime: ''
                      discount_type: ''
                      deposit_amount: ''
                      subtotal_without_deposit: ''
                      togo_status: ''
                      togo_phone: ''
                      togo_time: ''
                      cash_applied: '43.28'
                      rounding_amount: ''
      security:
      - posLavuCredentials: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
  /insert:
    post:
      operationId: insertRecords
      summary: Lavu Insert Records Into a POSLavu Table
      description: Insert one or more records into a POSLavu data table. Send `cmd=insert`, the target `table`, and a `contents` field containing one or more XML `<row>` payloads. Writes target the v2 request server (https://admin.poslavu.com/v2/reqserv). On success for an order insert, the API returns a `<result>` element containing the new `<id>` and `<order_id>`. Note this path is documented via the `cmd=insert` POST variable rather than a distinct URL path; it is modeled here as a separate operation for clarity.
      tags:
      - Inventory
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/InsertRequest'
            examples:
              InsertRecordsRequestExample:
                summary: Default insertRecords request
                x-microcks-default: true
                value:
                  dataname: MyRestaurant
                  key: a1b2c3d4e5f6
                  token: f6e5d4c3b2a1
                  cmd: insert
                  table: orders
                  contents: <row><opened>2011-09-06 16:10:00</opened><subtotal>14.25</subtotal><total>15.23</total><server>Ancori</server><guests>2</guests></row>
      responses:
        '200':
          description: XML `<result>` element with the new record id and order id.
          content:
            application/xml:
              schema:
                $ref: '#/components/schemas/InsertResult'
              examples:
                InsertRecords200Example:
                  summary: Default insertRecords 200 response
                  x-microcks-default: true
                  value:
                    id: '42'
                    order_id: '42'
      security:
      - posLavuCredentials: []
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  schemas:
    InsertRequest:
      type: object
      description: Form-encoded fields for a record insert request.
      required:
      - dataname
      - key
      - token
      - cmd
      - table
      - contents
      properties:
        dataname:
          type: string
          description: Account data name from the API tab of the POSLavu Control Panel.
          example: MyRestaurant
        key:
          type: string
          description: API key from the API tab of the POSLavu Control Panel.
          example: a1b2c3d4e5f6
        token:
          type: string
          description: API token from the API tab of the POSLavu Control Panel.
          example: f6e5d4c3b2a1
        cmd:
          type: string
          description: Command selector; must be `insert` for write operations.
          enum:
          - insert
          example: insert
        table:
          type: string
          description: The data table to insert into.
          enum:
          - orders
          - order_contents
          - order_payments
          - menu_items
          - ingredients
          example: orders
        contents:
          type: string
          description: One or more XML `<row>` payloads representing the records to insert.
          example: <row><opened>2011-09-06 16:10:00</opened><total>15.23</total></row>
    RowList:
      type: object
      description: A list of table rows returned by a query.
      properties:
        row:
          type: array
          description: The returned rows. Each row's fields depend on the queried table.
          items:
            type: object
            additionalProperties: true
    InsertResult:
      type: object
      description: Result of an insert operation.
      properties:
        id:
          type: string
          description: Identifier of the newly created entry.
          example: '42'
        order_id:
          type: string
          description: Order identifier assigned to a newly created order.
          example: '42'
    QueryRequest:
      type: object
      description: Form-encoded fields for a table query request.
      required:
      - dataname
      - key
      - token
      - table
      properties:
        dataname:
          type: string
          description: Account data name from the API tab of the POSLavu Control Panel.
          example: MyRestaurant
        key:
          type: string
          description: API key from the API tab of the POSLavu Control Panel.
          example: a1b2c3d4e5f6
        token:
          type: string
          description: API token from the API tab of the POSLavu Control Panel.
          example: f6e5d4c3b2a1
        table:
          type: string
          description: The data table to query.
          enum:
          - menu_groups
          - menu_categories
          - menu_items
          - tables
          - orders
          - order_contents
          - order_payments
          - ingredients
          - ingredient_usage
          example: orders
        column:
          type: string
          description: Column name to filter on.
          example: closed
        value:
          type: string
          description: Exact value to match for the filter column.
          example: '1'
        value_min:
          type: string
          description: Inclusive lower bound for a range filter on the filter column.
          example: '2011-01-01 00:00:00'
        value_max:
          type: string
          description: Inclusive upper bound for a range filter on the filter column.
          example: '2011-02-01 00:00:00'
        limit:
          type: string
          description: Pagination control in `offset,count` format (e.g. `0,20`).
          example: 0,20
  securitySchemes:
    posLavuCredentials:
      type: apiKey
      in: query
      name: token
      description: POSLavu requests are authenticated with three form-encoded credentials (`dataname`, `key`, `token`) issued in the API tab of the POSLavu Control Panel. OpenAPI cannot express a multi-field credential as a single scheme; the `token` field is declared here as the representative credential and all three are required on every request.