Epos Now Categories API
Manage the product categories used to organize the catalog and the till layout - list, retrieve, create, update, and delete categories that group products for merchandising and reporting.
Manage the product categories used to organize the catalog and the till layout - list, retrieve, create, update, and delete categories that group products for merchandising and reporting.
openapi: 3.0.3
info:
title: EposNow HQ REST API
description: >-
The EposNow HQ REST API lets developers programmatically interact with the
cloud-based aspects of the Epos Now point of sale (POS) platform for retail
and hospitality - products, categories, transactions (sales), customers,
stock, tax rates, and devices. This document models the documented V2 API
surface (base https://api.eposnowhq.com/api/V2). Epos Now recommends the
newer V4 / "Global" API (https://api.eposnowhq.com/api/v4) for new
integrations, which reorganizes the same domains; V4 per-resource paths are
not fully enumerated here. All requests use HTTP Basic authentication with a
per-device access token (Base64 of "API Key:API Secret") issued from the
Back Office. List endpoints are paginated at up to 200 records per page via
the page query parameter.
version: 'V2'
contact:
name: Epos Now Developers
url: https://developer.eposnowhq.com/
servers:
- url: https://api.eposnowhq.com/api/V2
description: EposNow HQ REST API (V2)
security:
- basicAuth: []
tags:
- name: Products
description: The product catalog sold at the point of sale.
- name: Categories
description: Categories that group products for the till and reporting.
- name: Transactions
description: Sales records (orders) captured at the point of sale.
- name: Customers
description: Customer records for loyalty, accounts, and CRM.
- name: Stock
description: Product stock levels and stock control.
- name: Devices
description: Registered tills and API devices on the account.
paths:
/Product:
get:
operationId: listProducts
tags:
- Products
summary: List products
description: Returns a paginated list of products, up to 200 per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of products.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Product'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createProduct
tags:
- Products
summary: Create a product
description: Creates a new product in the catalog.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
responses:
'200':
description: The created product.
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
'401':
$ref: '#/components/responses/Unauthorized'
/Product/{Id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getProduct
tags:
- Products
summary: Get a product
description: Returns a single product by its ID.
responses:
'200':
description: The requested product.
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateProduct
tags:
- Products
summary: Update a product
description: Updates an existing product.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
responses:
'200':
description: The updated product.
content:
application/json:
schema:
$ref: '#/components/schemas/Product'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteProduct
tags:
- Products
summary: Delete a product
description: Deletes a product from the catalog.
responses:
'200':
description: Deletion confirmation.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/Category:
get:
operationId: listCategories
tags:
- Categories
summary: List categories
description: Returns a paginated list of categories, up to 200 per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of categories.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Category'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createCategory
tags:
- Categories
summary: Create a category
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
responses:
'200':
description: The created category.
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
'401':
$ref: '#/components/responses/Unauthorized'
/Category/{Id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getCategory
tags:
- Categories
summary: Get a category
responses:
'200':
description: The requested category.
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateCategory
tags:
- Categories
summary: Update a category
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
responses:
'200':
description: The updated category.
content:
application/json:
schema:
$ref: '#/components/schemas/Category'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCategory
tags:
- Categories
summary: Delete a category
responses:
'200':
description: Deletion confirmation.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/Transaction:
get:
operationId: listTransactions
tags:
- Transactions
summary: List transactions
description: >-
Returns a paginated list of transactions (sales records), up to 200 per
page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of transactions.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Transaction'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createTransaction
tags:
- Transactions
summary: Create a transaction
description: Creates a new transaction (sale) with its line items and tenders.
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
responses:
'200':
description: The created transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'401':
$ref: '#/components/responses/Unauthorized'
/Transaction/{Id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getTransaction
tags:
- Transactions
summary: Get a transaction
responses:
'200':
description: The requested transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateTransaction
tags:
- Transactions
summary: Update a transaction
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
responses:
'200':
description: The updated transaction.
content:
application/json:
schema:
$ref: '#/components/schemas/Transaction'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteTransaction
tags:
- Transactions
summary: Delete a transaction
responses:
'200':
description: Deletion confirmation.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/Customer:
get:
operationId: listCustomers
tags:
- Customers
summary: List customers
description: Returns a paginated list of customers, up to 200 per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of customers.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
post:
operationId: createCustomer
tags:
- Customers
summary: Create a customer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
responses:
'200':
description: The created customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
/Customer/{Id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getCustomer
tags:
- Customers
summary: Get a customer
responses:
'200':
description: The requested customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
put:
operationId: updateCustomer
tags:
- Customers
summary: Update a customer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
responses:
'200':
description: The updated customer.
content:
application/json:
schema:
$ref: '#/components/schemas/Customer'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
delete:
operationId: deleteCustomer
tags:
- Customers
summary: Delete a customer
responses:
'200':
description: Deletion confirmation.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/ProductStock:
get:
operationId: listProductStock
tags:
- Stock
summary: List product stock levels
description: >-
Returns a paginated list of product stock levels, up to 200 per page.
Used to read on-hand inventory per product.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of product stock levels.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProductStock'
'401':
$ref: '#/components/responses/Unauthorized'
/StockTransfer:
get:
operationId: listStockTransfers
tags:
- Stock
summary: List stock transfers
description: >-
Returns a paginated list of stock transfers between locations, up to 200
per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of stock transfers.
content:
application/json:
schema:
type: array
items:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/TaxRate:
get:
operationId: listTaxRates
tags:
- Products
summary: List tax rates
description: Returns a paginated list of tax rates, up to 200 per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of tax rates.
content:
application/json:
schema:
type: array
items:
type: object
additionalProperties: true
'401':
$ref: '#/components/responses/Unauthorized'
/Device:
get:
operationId: listDevices
tags:
- Devices
summary: List devices
description: >-
Returns a paginated list of the tills and API devices registered on the
account, up to 200 per page.
parameters:
- $ref: '#/components/parameters/Page'
responses:
'200':
description: A paginated list of devices.
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/Device'
'401':
$ref: '#/components/responses/Unauthorized'
/Device/{Id}:
parameters:
- $ref: '#/components/parameters/Id'
get:
operationId: getDevice
tags:
- Devices
summary: Get a device
responses:
'200':
description: The requested device.
content:
application/json:
schema:
$ref: '#/components/schemas/Device'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
HTTP Basic authentication. The access token is the Base64 encoding of
"API Key:API Secret" (the API Key, a colon, then the API Secret, with no
spaces), sent as "Authorization: Basic {token}". Credentials are issued
per API Device registered under Web Integrations in the Epos Now Back
Office.
parameters:
Id:
name: Id
in: path
required: true
description: The unique identifier of the resource.
schema:
type: integer
Page:
name: page
in: query
required: false
description: The page number of results to return (up to 200 records per page).
schema:
type: integer
default: 1
responses:
Unauthorized:
description: Missing or invalid Basic authentication credentials.
NotFound:
description: The requested resource was not found.
schemas:
Product:
type: object
properties:
Id:
type: integer
Name:
type: string
Description:
type: string
CategoryId:
type: integer
SalePrice:
type: number
CostPrice:
type: number
Barcode:
type: string
TaxRateId:
type: integer
additionalProperties: true
Category:
type: object
properties:
Id:
type: integer
Name:
type: string
ParentId:
type: integer
additionalProperties: true
Transaction:
type: object
description: A sales record (order) captured at the point of sale.
properties:
Id:
type: integer
DeviceId:
type: integer
CustomerId:
type: integer
DateTime:
type: string
format: date-time
Amount:
type: number
TransactionItems:
type: array
items:
type: object
additionalProperties: true
additionalProperties: true
Customer:
type: object
properties:
Id:
type: integer
Title:
type: string
Forename:
type: string
Surname:
type: string
EmailAddress:
type: string
PhoneNumber:
type: string
CustomerTypeId:
type: integer
additionalProperties: true
ProductStock:
type: object
properties:
ProductId:
type: integer
LocationId:
type: integer
CurrentStock:
type: number
additionalProperties: true
Device:
type: object
properties:
Id:
type: integer
Name:
type: string
LocationId:
type: integer
additionalProperties: true