Offeris
API Documentation
v23

Offeris API

Integrate quotes, orders, invoices, stock levels, products, and contacts directly into your systems. REST-based, JSON responses, API key authentication.

The Offeris API lets you create and manage price quotes, received orders, and received invoices; export stock levels; look up companies and contacts; and read your product catalogue.

There are two endpoint patterns:

  • Legacy GET endpoints use the /OOA path with an action query parameter (products, catalogue, reference data, company/contact lookup).
  • REST endpoints under /v23/open-api/ support full CRUD for quotes, orders, invoices, stock, and company/contact management.
Base URL https://{tenant}.offeris.com

Each Offeris customer has their own tenant subdomain. Most Slovak customers use sk001.offeris.com, Czech customers cz001.offeris.com. Larger customers have a dedicated subdomain (e.g. yourcompany.offeris.com). If unsure, check your Offeris login URL.


Authentication & permissions

Every request must include a valid API key passed as the key query parameter.

1

Generate an API key

In Offeris go to Settings → General settings → Communication with external systems → API keys. Create a key, set the associated user, and configure permissions per resource.

2

Include the key in requests

Append ?key=YOUR_API_KEY to every URL. For POST/PUT/DELETE the key is a URL query parameter.

GET example
GET https://sk001.offeris.com/OOA?action=PRODUCT_LIST&lang=sk&page=1&key=YOUR_API_KEY
POST example
POST https://sk001.offeris.com/v23/open-api/quotation?key=YOUR_API_KEY
Content-Type: application/json

{ ... body ... }

Permission model

Each API key has independent permissions per resource type. Permissions are a combination of Read, Write, and Delete. The user whose identity the key acts as is set when creating the key — the "Issued by" field on created documents comes from this user.

ResourceReadWriteDeleteCovers
quotationGET list, GET detail, POST, PUT state, DELETE
orderinGET list, GET detail, POST, PUT state, DELETE (soft)
invoiceinReceived invoices POST
stockStock export generate & read
PRODUCTLegacy product & catalogue endpoints
CATALOGUELegacy catalogue endpoints
HEUREKAHeureka XML feed

Company and contact lookup endpoints (GET_COMPANY, GET_CONTACT, COMPANY_LIST, CONTACT_LIST) do not require a specific permission — a valid key is sufficient.


Errors

The API uses standard HTTP status codes. Error responses include a JSON body where possible.

HTTP statusMeaning
400 Bad RequestInvalid or missing parameters.
401 UnauthorizedAPI key missing or invalid.
403 ForbiddenKey exists but lacks the required permission for this operation.
404 Not FoundThe requested resource does not exist.
500 Internal Server ErrorServer-side error (e.g. stock export generation failed).

Pagination

REST endpoints under /v23/open-api/ use Spring-style pagination with query parameters page (0-indexed), size, and sort. The response is a standard Page object.

Example
GET /v23/open-api/quotation?key=...&page=0&size=20&sort=date,desc
Page response wrapper
{
  "content": [ ... ],
  "totalElements": 142,
  "totalPages": 8,
  "size": 20,
  "number": 0
}

Legacy /OOA endpoints use fixed page sizes (500 for products, 100 for contacts) with a 1-indexed page parameter, except contacts which are 0-indexed.


Quotes

Full CRUD for price quotes. Requires quotation permission on the API key.

GET /v23/open-api/quotation List quotes

Returns a paginated list of quotes. Requires quotation / Read.

ParameterTypeRequiredDescription
keystringrequiredYour API key.
pageintegeroptionalPage index, 0-based. Default: 0.
sizeintegeroptionalRecords per page. Default: 20.
sortstringoptionalSort field and direction, e.g. date,desc or number,asc.
HTTP
GET https://sk001.offeris.com/v23/open-api/quotation?key=YOUR_API_KEY&page=0&size=20&sort=date,desc

Response: Page<QuotationOA> — see the QuotationOA object below for field reference.

GET /v23/open-api/quotation/{id} Get quote detail

Returns the full detail of a single quote. Requires quotation / Read.

HTTP
GET https://sk001.offeris.com/v23/open-api/quotation/123?key=YOUR_API_KEY

Response: QuotationOA object.

POST /v23/open-api/quotation Create or update a quote

Creates a new quote. Pass an existing id to update it. Requires quotation / Write.

If a matching company or contact already exists (matched by ID, then ICO/email), their record is updated. Transport and payment are matched by name and created if not found. Item prices are required — only the purchase price is pulled from the product automatically. The quote total is the sum of line items.

Request body

FieldTypeRequiredDescription
idintegeroptionalnull to create; existing ID to update.
numberstringoptionalQuote number. null to auto-generate.
descriptionstringoptionalDescription.
notestringoptionalAdditional notes.
datestringoptionalDate, format YYYY-MM-DD.
dealerobjectoptionalid + name. Matched by ID first, then name.
currencyobjectoptionalid + code (e.g. "€").
languageobjectoptionalid + iso (e.g. "sk").
stateobjectoptionalid + name. Use GET_ORDERIN_STATE for valid values.
companyobjectoptionalCompany. ico is required if id is not provided. See company fields below.
contactobjectoptionalContact person. Matched by id then email.
transportobjectoptionalid, name, price (double), vat (double).
paymentOAobjectoptionalid + name.
itemsarrayoptionalLine items. price, vat, amount required per item.

Company fields

FieldTypeRequiredDescription
idintegeroptionalInternal company ID.
namestringoptionalCompany name.
icostringrequired*Registration number (IČO). Required if id is not provided. Used for matching.
dicstringoptionalTax ID (DIČ).
icdphstringoptionalVAT number (IČDPH), e.g. "SK1234567890".
billingobjectoptionalcity, street, zip, country (ISO code).
shippingobjectoptionalSame structure as billing.

Contact fields

FieldTypeDescription
idintegerInternal contact ID.
firstnamestringFirst name.
middlenamestringMiddle name.
surnamestringLast name.
titleBefore / titleAfterstringAcademic titles.
emailstringEmail. Used for matching if id not provided.
mobilestringMobile number.
billing / shippingobjectAddress objects: city, street, zip, country (ISO).

Line item fields

FieldTypeRequiredDescription
id / productIdintegeroptionalProduct ID (either field accepted). Matched by orderNumber if neither is set.
orderNumberstringoptionalProduct SKU.
namestringoptionalItem name. Defaults to product name.
modelstringoptionalModel.
descriptionstringoptionalItem description.
notestringoptionalNote.
deliverystringoptionalDelivery method name for this item.
pricedoublerequiredUnit selling price, excl. VAT.
vatdoublerequiredVAT rate as percent (e.g. 20).
amountdoublerequiredQuantity.

Example request

JSON body
{
  "id": null,
  "number": null,
  "description": "Quote for Acme",
  "date": "2024-03-01",
  "dealer": { "id": null, "name": "John Smith" },
  "currency": { "id": "", "code": "€" },
  "language": { "id": "", "iso": "sk" },
  "state": { "id": "", "name": "Nevybavená" },
  "company": {
    "id": "", "name": "Acme s.r.o.", "ico": "12345678",
    "dic": "1234567890", "icdph": "SK1234567890",
    "billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
  },
  "contact": {
    "id": "", "firstname": "Ján", "surname": "Novák",
    "email": "jan.novak@acme.sk", "mobile": "0900123456"
  },
  "transport": { "id": "", "name": "Predvolený", "price": "5", "vat": "20" },
  "paymentOA": { "id": "", "name": "Dobierka" },
  "items": [
    { "orderNumber": "SKU-001", "name": "Product A", "price": 15.50, "vat": 20, "amount": 3 }
  ]
}

Response

Returns the created or updated QuotationOA object.

QuotationOA example
{
  "id": 123,
  "number": "Q-2024-001",
  "description": "Quote for Acme",
  "note": "Valid 30 days",
  "date": "2024-03-01",
  "dealer": { "id": 1, "name": "John Smith" },
  "currency": { "id": 1, "code": "€" },
  "language": { "iso": "sk" },
  "state": { "id": 1, "name": "Nevybavená" },
  "company": { "id": 55, "name": "Acme s.r.o.", "ico": "12345678", ... },
  "contact": { "id": 88, "firstname": "Ján", "surname": "Novák", "email": "jan.novak@acme.sk" },
  "transport": { "name": "Predvolený", "price": 5, "vat": 20 },
  "paymentOA": { "name": "Dobierka" },
  "items": [
    { "orderNumber": "SKU-001", "name": "Product A", "price": 15.5, "vat": 20, "amount": 3 }
  ]
}
PUT /v23/open-api/quotation/{id}/state/{idState} Change quote state

Updates the state of an existing quote. Requires quotation / Write. Use GET_ORDERIN_STATE to get available state IDs.

HTTP
PUT https://sk001.offeris.com/v23/open-api/quotation/123/state/2?key=YOUR_API_KEY

Response: 204 No Content

DELETE /v23/open-api/quotation/{id} Delete a quote

Deletes a quote by ID. Requires quotation / Delete.

HTTP
DELETE https://sk001.offeris.com/v23/open-api/quotation/123?key=YOUR_API_KEY

Response: 204 No Content


Received orders (orderin)

Full CRUD for received orders. The request and response structure mirrors quotes, with a few order-specific fields (customerNumber, promisedDeliveryFrom, promisedDeliveryTo, per-item delivered). Requires orderin permission on the API key.

GET /v23/open-api/orderin List received orders

Returns a paginated list of received orders. Requires orderin / Read.

ParameterTypeRequiredDescription
keystringrequiredYour API key.
pageintegeroptionalPage index, 0-based. Default: 0.
sizeintegeroptionalRecords per page. Default: 20.
sortstringoptionalSort field and direction, e.g. date,desc or number,asc.
HTTP
GET https://sk001.offeris.com/v23/open-api/orderin?key=YOUR_API_KEY&page=0&size=20&sort=date,desc

Response: Page<OrderinOA> — see the OrderinOA object below for field reference.

GET /v23/open-api/orderin/{id} Get received order detail

Returns the full detail of a single received order. Requires orderin / Read.

HTTP
GET https://sk001.offeris.com/v23/open-api/orderin/123?key=YOUR_API_KEY

Response: OrderinOA object.

POST /v23/open-api/orderin Create or update a received order

Creates a new received order. Pass an existing id to update it. Requires orderin / Write.

If a matching company or contact already exists (matched by ID, then ICO/email), their record is updated. Transport and payment are matched by name and created if not found. Item prices are required — only the purchase price is pulled from the product automatically. The order total is the sum of line items.

Request body

Same structure as Create / update quote, plus the order-specific fields marked below. Company, contact and line item sub-objects are identical to the quote ones.

FieldTypeRequiredDescription
idintegeroptionalnull to create; existing ID to update.
numberstringoptionalOrder number. null to auto-generate.
descriptionstringoptionalDescription.
notestringoptionalAdditional notes.
datestringoptionalOrder date, format YYYY-MM-DD. Ignored on create — Offeris sets the date itself.
customerNumberstringoptionalCustomer's own order / PO number (e.g. "PO-99887"). Order-specific.
promisedDeliveryFromstringoptionalPromised delivery start, format YYYY-MM-DD. Order-specific.
promisedDeliveryTostringoptionalPromised delivery end, format YYYY-MM-DD. Order-specific.
dealerobjectoptionalid + name. Matched by ID first, then name.
currencyobjectoptionalid + code (e.g. "€"). Matched by ID, then code.
languageobjectoptionalid + iso (e.g. "sk"). Matched by ID, then ISO code.
stateobjectoptionalid + name. Matched by ID, then name. Use GET_ORDERIN_STATE for valid values.
companyobjectoptionalCompany. ico is required if id is not provided; a new company is created when no match is found. See company fields.
contactobjectoptionalContact person. Matched by id then email. See contact fields.
transportobjectoptionalid, name, price (double), vat (double). Matched by ID, then name; created if not found.
paymentOAobjectoptionalid + name. Matched by ID, then name; created if not found.
itemsarrayoptionalLine items. price, vat, amount required per item. See line item fields.

Dates must be valid YYYY-MM-DD values — an unparseable date is rejected with 400 Bad Request. The per-item delivery field is free text (e.g. "2 týždne", "skladom"), not a date, and is truncated to 50 characters — the same limit as in the Offeris UI.

Example request

JSON body
{
  "id": null,
  "number": null,
  "description": "Order for Acme",
  "note": "Deliver in one shipment",
  "customerNumber": "PO-99887",
  "promisedDeliveryFrom": "2025-08-01",
  "promisedDeliveryTo": "2025-08-15",
  "dealer": { "id": null, "name": "John Smith" },
  "currency": { "id": "", "code": "€" },
  "language": { "id": "", "iso": "sk" },
  "state": { "id": "", "name": "Nevybavená" },
  "company": {
    "id": "", "name": "Acme s.r.o.", "ico": "12345678",
    "dic": "1234567890", "icdph": "SK1234567890",
    "billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" },
    "shipping": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
  },
  "contact": {
    "id": "", "firstname": "Ján", "surname": "Novák",
    "email": "jan.novak@acme.sk", "mobile": "0900123456"
  },
  "transport": { "id": "", "name": "Predvolený", "price": "5", "vat": "20" },
  "paymentOA": { "id": "", "name": "Dobierka" },
  "items": [
    { "orderNumber": "SKU-001", "name": "Product A", "delivery": "2 týždne", "price": 15.50, "vat": 20, "amount": 3 }
  ]
}

Response

Returns the created or updated OrderinOA object.

OrderinOA example
{
  "id": 123,
  "number": "OB-2025-001",
  "customerNumber": "PO-99887",
  "description": "Order for Acme",
  "note": "Deliver in one shipment",
  "date": "2025-07-19T22:00:00.000+00:00",
  "promisedDeliveryFrom": "2025-07-31T22:00:00.000+00:00",
  "promisedDeliveryTo": "2025-08-14T22:00:00.000+00:00",
  "dealer": { "id": 1, "name": "John Smith" },
  "currency": { "id": 1, "code": "€" },
  "language": { "iso": "sk" },
  "state": { "id": 1, "name": "Nevybavená" },
  "company": {
    "id": 55, "name": "Acme s.r.o.", "ico": "12345678",
    "dic": "1234567890", "icdph": "SK1234567890",
    "billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" },
    "shipping": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
  },
  "contact": { "id": 88, "firstname": "Ján", "surname": "Novák", "email": "jan.novak@acme.sk", "mobile": "0900123456" },
  "transport": { "name": "Predvolený", "price": 5, "vat": 20 },
  "paymentOA": { "name": "Dobierka" },
  "items": [
    { "id": 901, "productId": 41, "orderNumber": "P001", "name": "Product A",
      "delivery": "2 týždne", "price": 10.0, "vat": 20, "amount": 2, "delivered": true },
    { "id": 902, "productId": 42, "orderNumber": "P002", "name": "Product B",
      "delivery": "skladom", "price": 5.5, "vat": 10, "amount": 1, "delivered": false }
  ]
}

Fields specific to received orders

Compared to QuotationOA, the order object carries these extra fields:

FieldLocationTypeDescription
customerNumberheaderstringCustomer's own order / PO number.
promisedDeliveryFromheaderdatePromised delivery start. Same format as date in responses.
promisedDeliveryToheaderdatePromised delivery end. Same format as date in responses.
deliveredline itemboolean | nullRead-only. true once the full ordered quantity has been dispatched — i.e. the linked stock issues and issued delivery notes reach the ordered amount. Reservations are not counted. null for rows without a quantity (sections, text rows).
PUT /v23/open-api/orderin/{id}/state/{idState} Change order state

Updates the state of an existing received order to the state with ID {idState}. Requires orderin / Write. Use GET_ORDERIN_STATE to get available state IDs.

HTTP
PUT https://sk001.offeris.com/v23/open-api/orderin/123/state/2?key=YOUR_API_KEY

Response: 204 No Content

DELETE /v23/open-api/orderin/{id} Delete a received order

Deletes a received order by ID. Requires orderin / Delete.

This is a soft delete — the order is marked inactive and disappears from Offeris, but the record is not physically removed from the database.

HTTP
DELETE https://sk001.offeris.com/v23/open-api/orderin/123?key=YOUR_API_KEY

Response: 204 No Content


Received invoices (invoicein)

Received invoices have a different structure from quotes and orders — they include payment banking details, per-VAT-rate price breakdown, and support for attachments. Requires invoicein permission.

POST /v23/open-api/quotation Create or update a received invoice

Creates or updates a received invoice. Requires invoicein / Write. The "Issued by" user is taken from the API key configuration.

If a matching company already exists (by ID or ICO), its record is updated. Payment methods are matched by name and created if not found. If the company's bank account cannot be matched by IBAN or account number, a new bank account record is created.

Request body

FieldTypeRequiredDescription
idintegeroptionalnull to create; existing ID to update.
numberstringoptionalInvoice number (supplier's number). null to auto-generate.
evidenceNumberstringoptionalInternal evidence number.
descriptionstringoptionalDescription.
notestringoptionalNotes.
datestringoptionalIssue date, YYYY-MM-DD.
dueDatestringoptionalDue date, YYYY-MM-DD.
dateOfTaxableSupplystringoptionalDate of taxable supply, YYYY-MM-DD.
variableSymbolstringoptionalVariable symbol.
constantSymbolstringoptionalConstant symbol.
specificSymbolstringoptionalSpecific symbol.
salesOrderNumberstringoptionalReference to an issued order number.
currencyobjectoptionalid, code (e.g. "CZK"), rate (exchange rate; auto-fetched from NBS/CNB if omitted).
companyobjectoptionalSupplier company. Includes standard fields plus bankAccount object (see below).
paymentobjectoptionalid + name. Payment method matched by name; created if not found.
documentTypestringoptionalDocument type name. Created if not found.
vatTypeobjectoptionalVAT type: code (e.g. "01D") + name. Matched by code or name; created if not found.
pricesarrayoptionalPrice breakdown per VAT rate. Up to 3 entries. See below.
itemsarrayoptionalLine items. Matched by product ID or order number; saved as free-text item if no product match.
attachmentsUrlsstring[]optionalArray of URLs to attach to the invoice (e.g. scanned PDF).
aliceDocumentIdstringoptionalDocument ID from the Alice/Redque integration. Requires Alice to be enabled on the API key.

Bank account fields (inside company)

FieldTypeDescription
ibanstringIBAN. Used for matching existing bank accounts.
numberstringAccount number. Used for matching if IBAN is not provided.
bankNamestringBank name.
bicSwiftstringBIC / SWIFT code.
notestringNote on the bank account.

Prices array fields (per VAT rate)

FieldTypeDescription
pricedecimalPrice excl. VAT.
priceInclVatdecimalPrice incl. VAT.
vatdecimalVAT amount. Calculated automatically if omitted.
vatRatedecimalVAT rate as percent (e.g. 20).

Line item fields

FieldTypeRequiredDescription
idintegeroptionalProduct ID.
orderNumberstringoptionalProduct SKU. Item saved as free-text if product not found.
namestringoptionalItem name.
notestringoptionalNote.
pricedecimalrequiredUnit price excl. VAT.
vatRatedecimalrequiredVAT rate as percent.
amountdecimalrequiredQuantity.

Example request

JSON body
{
  "id": null,
  "number": "FA001",
  "evidenceNumber": null,
  "date": "2024-07-20",
  "dueDate": "2024-08-03",
  "dateOfTaxableSupply": "2024-07-20",
  "variableSymbol": "123456789",
  "currency": { "id": "", "code": "CZK", "rate": 25.00 },
  "company": {
    "id": "", "name": "Supplier s.r.o.", "ico": "99999999",
    "billing": { "city": "Praha", "street": "Náměstí 1", "zip": "11000", "country": "CZ" },
    "bankAccount": {
      "iban": "CZ6508000000192000145399",
      "bankName": "Česká spořitelna",
      "bicSwift": "GIBACZPX"
    }
  },
  "payment": { "id": "", "name": "Prevodom" },
  "documentType": "Faktúra",
  "prices": [
    { "price": 100, "priceInclVat": 121, "vatRate": 21 }
  ],
  "items": [
    { "orderNumber": "SKU-001", "name": "Item A", "price": 100, "vatRate": 21, "amount": 1 }
  ],
  "attachmentsUrls": ["https://example.com/invoice.pdf"]
}

Stock export

Stock data is served as a pre-generated JSON file. You first trigger generation, then retrieve the result. Requires stock / Read permission.

The export file is regenerated periodically on the server for all API keys that have stock read permission. You can also trigger it manually on demand via the POST endpoint.

POST /v23/open-api/stock/export/generate Trigger stock export generation

Generates a fresh stock export file for your tenant. No request body required.

HTTP
POST https://sk001.offeris.com/v23/open-api/stock/export/generate?key=YOUR_API_KEY
ResponseMeaning
200 OKExport generated successfully.
401 UnauthorizedInvalid API key.
500 Internal Server ErrorExport generation failed.
GET /v23/open-api/stock/export Get stock export

Returns the previously generated stock export. If no export exists yet, generate one first using the POST endpoint above.

HTTP
GET https://sk001.offeris.com/v23/open-api/stock/export?key=YOUR_API_KEY

Response

JSON
[
  {
    "id": 1,
    "orderOur": "P123",
    "recordactive": 1,
    "stock": 10.5,
    "productTypes": [
      {
        "id": 2,
        "orderOur": "PT456",
        "recordactive": 1,
        "stock": 5.0
      }
    ]
  }
]

Response fields

FieldTypeDescription
idintegerProduct ID.
orderOurstringProduct order number (SKU).
recordactiveinteger1 = active, 0 = inactive.
stockdecimalAvailable stock quantity.
productTypesarrayProduct variants, each with id, orderOur, recordactive, stock.

Companies & contacts

POST /v23/open-api/company Create or update a company

Creates a new company or updates an existing one. Matched by ICO if id is not provided. Returns the saved company object.

FieldTypeRequiredDescription
idintegeroptionalInternal company ID for update.
namestringrequired*Company name. Required if ico is not provided.
icostringrequired*Registration number. Required if name is not provided. Used for matching.
dicstringoptionalTax ID.
icdphstringoptionalVAT number.
billingobjectoptionalcity, street, zip, country (ISO).
HTTP
POST https://sk001.offeris.com/v23/open-api/company?key=YOUR_API_KEY
Content-Type: application/json

{
  "name": "Acme s.r.o.", "ico": "12345678",
  "dic": "1234567890", "icdph": "SK1234567890",
  "billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
}

Response: the saved CompanyOA object with id, name, ico, dic, icdph, billing, shipping.

POST /v23/open-api/contact Create or update a contact

Creates a new contact or updates an existing one matched by email. Returns the saved contact object.

FieldTypeRequiredDescription
emailstringrequiredEmail address. Used to match existing contacts.
firstnamestringoptionalFirst name.
middlenamestringoptionalMiddle name.
surnamestringoptionalLast name.
titleBefore / titleAfterstringoptionalAcademic titles.
mobilestringoptionalMobile number (also saved as phone).
billingobjectoptionalcity, street, zip, country (ISO).
shippingobjectoptionalSame structure.
HTTP
POST https://sk001.offeris.com/v23/open-api/contact?key=YOUR_API_KEY
Content-Type: application/json

{
  "firstname": "Ján", "surname": "Novák",
  "email": "jan.novak@acme.sk", "mobile": "0900123456",
  "billing": { "city": "Bratislava", "street": "Hlavná 1", "zip": "81101", "country": "SK" }
}

Response: the saved ContactOA object with id, name fields, email, mobile, billing, shipping.

GET /OOA?action=GET_COMPANY Lookup company by ICO, ID, or email

Returns a company record. Provide at least one of ico, id, or email.

ParameterTypeRequiredDescription
actionstringrequiredGET_COMPANY
icostringoptionalRegistration number.
idintegeroptionalInternal company ID.
emailstringoptionalCompany email.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=GET_COMPANY&ico=12345678&key=YOUR_API_KEY
GET /OOA?action=COMPANY_LIST List companies (paginated)
ParameterTypeRequiredDescription
actionstringrequiredCOMPANY_LIST
namestringoptionalFilter by name (partial match).
pageintegeroptionalPage number (1-indexed).
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=COMPANY_LIST&name=Acme&page=1&key=YOUR_API_KEY
GET /OOA?action=GET_CONTACT Get contact by email
ParameterTypeRequiredDescription
actionstringrequiredGET_CONTACT
emailstringrequiredContact email.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=GET_CONTACT&email=jan.novak@firma.sk&key=YOUR_API_KEY
Response
{
  "id": 101, "name": "Ján Novák", "email": "jan.novak@firma.sk",
  "delivery_address": { "city": "Bratislava", "zip": "81101", "street": "Hlavná 1", "country_id": 1, "country_iso_code": "SK" },
  "invoice_address": { "city": "Bratislava", "zip": "81101", "street": "Fakturačná 2", "country_id": 1, "country_iso_code": "SK" }
}
GET /OOA?action=CONTACT_LIST List contacts (100/page, 0-indexed)

Page numbering is 0-indexed. Requesting page=0 also returns records and pages totals. Use these to plan subsequent requests.

ParameterTypeRequiredDescription
actionstringrequiredCONTACT_LIST
pageintegeroptionalPage index, 0-based. Default: 0.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=CONTACT_LIST&page=0&key=YOUR_API_KEY
Response (page=0)
{ "records": 235, "pages": 3, "items": [ { "id": 101, "name": "Ján Novák", ... } ] }

Products & catalogue

Read-only. Requires PRODUCT or CATALOGUE read permission (legacy permission model).

GET /OOA?action=PRODUCT Get product detail
ParameterTypeRequiredDescription
actionstringrequiredPRODUCT
idintegerrequiredProduct ID.
langstringrequiredLanguage ISO code (e.g. sk).
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=PRODUCT&id=123&lang=sk&key=YOUR_API_KEY
GET /OOA?action=PRODUCT_LIST List products (500/page, 1-indexed)
ParameterTypeRequiredDescription
actionstringrequiredPRODUCT_LIST
langstringrequiredLanguage ISO code.
pageintegeroptionalPage number (1-indexed). Default: 1.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=PRODUCT_LIST&lang=sk&page=1&key=YOUR_API_KEY
Response fields
{ "data": [...], "page": 1, "pages": 5, "product_show": 500, "product_count": 2340 }
GET /OOA?action=CATALOGUE_LIST List catalogue categories

Returns a flat list of categories. All descendants are always included. Omit id or pass 0 for root level.

ParameterTypeRequiredDescription
actionstringrequiredCATALOGUE_LIST
langstringrequiredLanguage ISO code.
idintegeroptionalParent category ID. Default: root (0).
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=CATALOGUE_LIST&lang=sk&id=0&key=YOUR_API_KEY
Response
{ "data": [{ "id": "5", "name": "Electronics", "parent_id": "0" }, ...] }
GET /OOA?action=CATALOGUE Get catalogue detail with products
ParameterTypeRequiredDescription
actionstringrequiredCATALOGUE
idintegerrequiredCatalogue category ID.
langstringrequiredLanguage ISO code.
detailedProductsbooleanoptionaltrue = full product details; default false.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=CATALOGUE&id=5&lang=sk&detailedProducts=true&key=YOUR_API_KEY

Reference data

Use these endpoints to look up valid IDs and names for languages, currencies, transport methods, and payment forms. All values are tenant-specific. A valid API key is sufficient — no specific permission required.

GET/OOA?action=GET_LANGUAGESLanguages
HTTP
GET https://sk001.offeris.com/OOA?action=GET_LANGUAGES&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "name": "Slovenčina", "iso_code": "sk" }] }
GET/OOA?action=GET_CURRENCIESCurrencies
HTTP
GET https://sk001.offeris.com/OOA?action=GET_CURRENCIES&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "iso_code": "€", "name": "Euro" }] }
GET/OOA?action=GET_COUNTRIESCountries
HTTP
GET https://sk001.offeris.com/OOA?action=GET_COUNTRIES&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "iso_code": "SK", "name": "Slovakia" }] }
GET/OOA?action=GET_TRANSPORTSShipping methods

Use returned name values in transport.name when creating quotes/orders.

ParameterTypeRequiredDescription
actionstringrequiredGET_TRANSPORTS
idLanguageintegeroptionalLanguage ID. Defaults to tenant default.
keystringrequiredYour API key.
HTTP
GET https://sk001.offeris.com/OOA?action=GET_TRANSPORTS&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "name": "Predvolený", "price_absolute": "5.00", "vat": "20", "free_from_price": "none" }] }
GET/OOA?action=GET_PAYMENT_FORMSPayment methods

Use returned name values in paymentOA.name or payment.name.

HTTP
GET https://sk001.offeris.com/OOA?action=GET_PAYMENT_FORMS&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "name": "Dobierka" }, { "id": "2", "name": "Prevodom" }] }
GET/OOA?action=GET_PRICE_LEVELSPrice levels
HTTP
GET https://sk001.offeris.com/OOA?action=GET_PRICE_LEVELS&key=YOUR_API_KEY
Response
{ "data": [{ "id": 1, "name": "Retail" }, { "id": 2, "name": "Wholesale" }] }
GET/OOA?action=GET_ORDERIN_STATEQuote / order states

Returns available states for quotes and received orders. Requires ORDERIN / Read (legacy permission).

HTTP
GET https://sk001.offeris.com/OOA?action=GET_ORDERIN_STATE&key=YOUR_API_KEY
Response
{ "data": [{ "id": "1", "name": "Nevybavená" }, { "id": "2", "name": "Vybavená" }] }