Developers

PUBLIC API v1

List products of the company

GET /api/v1/companies/{company_pk}/products/

Active products by default; pass `status=archived` or `status=all` for the rest. `search` matches name, SKU and description.

Permission: read_invoices · Direct link

Company-scoped. Account permissions, plan limits and document state still apply.

Path and query parameters

ParameterLocation / typeDescription
company_categoryquery · string (uuid)Not specified
company_pkRequiredpath · string (uuid)Company's public id (primary key)
orderingquery · "-created" | "-modified" | "-name" | "-price" | "created" | "modified" | "name" | "price"[]Ordering * `name` - Name * `-name` - Name (descending) * `price` - Price * `-price` - Price (descending) * `created` - Created * `-created` - Created (descending) * `modified` - Modified * `-modified` - Modified (descending)
pagequery · integerA page number within the paginated result set.
page_sizequery · integerNumber of results to return per page.
searchquery · stringNot specified
statusquery · "active" | "all" | "archived"* `active` - Active * `archived` - Archived * `all` - All
typequery · "GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unitquery · "days" | "hours" | "items" | "kilograms" | "liters" | "meters" | "square_meters"* `items` - Piece * `hours` - Hour * `days` - Day * `kilograms` - Kilogram * `liters` - Liter * `meters` - Meter * `square_meters` - Square meter

Responses

200 Response fields

application/json

FieldType / accepted valuesDescription
countRequiredintegerNot specified
nextstring (uri) | nullNot specified
previousstring (uri) | nullNot specified
resultsRequiredobject[]Not specified
Nested fields
FieldType / accepted valuesDescription
publicIdRequiredRead onlystring (uuid)Not specified
companyRequiredstring (uuid)Not specified
nameRequiredstringNot specified
descriptionstringNot specified
type"GOODS" | "SERVICES"* `GOODS` - Goods * `SERVICES` - Services
unit"items" | "hours" | "days" | "kilograms" | "liters" | "meters" | "square_meters" | ""Not specified
priceinteger (int64)Not specified
isPriceGrossbooleanNot specified
priceNetRequiredRead onlyintegerNot specified
priceGrossRequiredRead onlyintegerNot specified
vatRateintegerNot specified
skustringNot specified
companyCategorystring (uuid) | nullNot specified
companyCategoryCodeRequiredRead onlystring | nullNot specified
companyCategoryNameRequiredRead onlystring | nullNot specified
status"active" | "archived"* `active` - Active * `archived` - Archived
createdRequiredRead onlystring (date-time)Not specified
modifiedstring (date-time) | nullNot specified
400 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredstringNot specified
codeintegerNot specified
type_stringNot specified
fieldRequiredstringNot specified
401 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredRead onlystringNot specified
403 Response fields

application/json

FieldType / accepted valuesDescription
detailRequiredRead onlystringNot specified
429 Rate limit exceeded. Wait for the Retry-After header before retrying.

Use the base URL https://api.norman.finance/api/v1. Sign up or log in to Norman to create an API key, then send it as a Bearer token. For an OpenAPI JSON file, contact support.