API v2

Table of Contents

Getting Started

Master Data

Articles & Products

Webshop

Orders & Purchases

Invoicing - Debet

Invoicing - Credit

Payments & Trolleys

Forecasting

Models Reference


Changelog

Version Description Date Author
2.0.2 Changed ListPreOrderGroupItemEtag routes: Count/ and / 2026-01-09 DDH
2.0.1 Added Count endpoints to all endpoints (except ShopFavorites) for total record counts 2026-01-08 DDH
2.0.0 Initial V2 API release with Etag-based synchronization 2026-01-08 DDH

Getting Started

Introduction

The V2 API uses Etag-based synchronization for efficient incremental data retrieval. Each record contains an Etag value - simply pass the Etag from the last record to get the next batch of new or modified records.

Key improvements in V2:

  • Etag-based pagination for reliable incremental synchronization
  • All endpoints support incremental sync

Authorization works the same as V1 - you need to be authorized for each database you connect to. If not authorized, you'll receive HTTP status 401 (Unauthorized).

The sections below describe:

  • General information about JSON formats, status codes, and Etags
  • All available GET endpoints organized by category
  • Detailed model specifications

General

JSON

Information about specific types and how it's formatted in JSON.

DateTime format

Symbol Description Example
yyyy year 2026
MM month 01
dd day 31
HH hour 13
mm minute 01
ss seconds 22
tttttt timezone +02:00
Z UTC timezone Z

Date

  • Format: yyyy-MM-dd
  • Example: 2026-12-30

DateTime

  • Format: yyyy-MM-dd\THH:mm:ssttttttt
  • Example: 2026-12-30T13:40:20+02:00
  • Remarks: Use timezone of debtor

LanguageValue

Object containing all available languages (ISO-639-1).

{
  "nl": "Nederlandse benaming",
  "de": "Deutsch-Bezeichnung",
  "fr": "titre francais"
}

Null value

Don't send parameters without value.

Wrong:

{
  "RequiredParameter": "text",
  "OptionalParameter": null
}

Right:

{
  "RequiredParameter": "text"
}

Encoding

UTF-8


ETags (Entity Tags)

The V2 API uses ETags for efficient incremental synchronization. Each record contains an Etag value that increments with every change.

How Etag Synchronization Works

  1. Initial Sync: Call endpoint without Etag parameter to get first batch
  2. Get Last Etag: Take the Etag from the last record in the response
  3. Next Sync: Pass this Etag as parameter to get the next batch of records
  4. Repeat: Continue until you receive an empty array

Example Flow

# First request - no Etag
GET /api/v2/ArticleEtag
# Returns 2000 records, last record has Etag: "a1b2c3d4-..."

# Second request - use last Etag
GET /api/v2/ArticleEtag/a1b2c3d4-...
# Returns next 2000 records, last record has Etag: "e5f6g7h8-..."

# Third request
GET /api/v2/ArticleEtag/e5f6g7h8-...
# Returns [] - sync complete

By storing and reusing the last Etag, you only receive new or modified records on subsequent syncs.

Important: Handling Updates

Records can appear multiple times across different sync requests when they are modified.

When you receive a record with an ID that already exists in your local database, overwrite the existing record with the new data. This is an update, not a duplicate.

Example scenario:

  1. Initial sync returns Article with Id "articles/123" and Name "Red Roses"
  2. Article is modified in EasyFlor (name changed to "Red Roses Premium")
  3. Next incremental sync returns the same Id "articles/123" with updated Name "Red Roses Premium"
  4. Action: Overwrite your local record with Id "articles/123"

Key principle: The Id field is the unique identifier. If you receive a record with an Id you already have, it's an update - replace the old record completely with the new data.


Status codes

Code Description
200 OK - Request successful
400 BadRequest - Object containing error
401 Unauthorized - Authentication required or failed
404 NotFound - Resource not found
500 ServerError - Error processing message

Error response format:

{
  "error": "<error>",
  "message": "<human readable error>"
}

Tips

  • Order of properties in JSON is not guaranteed - parse based on property name, not position
  • Any property that is not required can be NULL
  • Always use the Etag from the last record in the response for your next request
  • An empty array response means sync is complete
  • All endpoints have a /Count endpoint to check the total number of records

Count Endpoints

Every V2 endpoint has a corresponding Count endpoint to retrieve the total number of records without fetching the data:

Format: GET /api/v2/{EndpointName}/Count

Examples:

  • GET /api/v2/PurchaseEtag/Count - Returns total number of purchases
  • GET /api/v2/DebtorEtag/Count - Returns total number of debtors
  • GET /api/v2/ListPreOrderGroupItemEtag/Count/{id} - Returns total items in specific group

Returns: Integer representing total count

Note: ShopFavoritesEtag does not have a Count endpoint due to its complex aggregation logic.


Synchronization Frequency Recommendations

Different endpoints have different recommended sync frequencies based on how often the data changes:

These endpoints provide frequently changing transactional data:

  • PreOrder
  • Purchase
  • DistributedPurchase
  • DistributedPurchaseOrderable
  • Invoice
  • DebetInvoicePurchaseItem
  • DebetInvoiceCustomItem
  • DebetInvoicePackagingItem
  • DebetInvoiceTrolleyItem
  • CreditInvoicePurchaseItem
  • CreditInvoiceCustomItem
  • CreditInvoiceDepositItem
  • Payment
  • DistributedTrolley
  • Supplier
  • Debtor
  • ListPreOrderGroupItem
  • ListArticleSort

Recommendation: Sync every 5 minutes during business hours.

These endpoints provide relatively static master data:

  • Administration
  • Country
  • Currency
  • Location
  • MarkupCategory
  • Remark
  • ListGroup
  • Employee
  • Article
  • ArticleSort
  • ArticleGroup
  • ShopDebtorSession
  • ShopFavorites
  • PrognosePrice
  • PrognoseQuantity

Recommendation: Sync once per day. To distribute server load, randomize the sync time for each endpoint throughout the day instead of syncing all endpoints at the same fixed time.


Authorization / logging in

Command: api/authorization

When successfully authorized, you will receive a cookie containing a session. Append this cookie to any other call you make. Session is bound to the user and will expire when another call is made using the same username with a valid login.

When receiving HTTP status code 401, please reauthorize.

Post parameters

Property name Description Data type Required
Username Username of a user within the database you want to connect to string yes
Password Password of a user within the database you want to connect to string yes
Database The database you want to connect to string yes

Post example

POST https://api.easyflor.eu/api/authorization
{
  "Username": "api",
  "Password": "wouldntyouliketoknow",
  "Database": "EasyFlor-Demo"
}

Returns: 200 OK / 401 Unauthorized


JWT Bearer Token based authorization

Command: api/authorizationtoken

When successfully authorized, you will receive a model containing a Token. Add this token as a header to any other calls you make. The token is bound to the user and will expire after the expiration date.

When receiving HTTP status code 401, please reauthorize.

Post parameters

Property name Description Data type Required
Username Username of a user within the database you want to connect to string yes
Password Password of a user within the database you want to connect to string yes
Database The database you want to connect to string yes

Post example

POST https://api.easyflor.eu/api/authorizationtoken
{
  "Username": "api",
  "Password": "wouldntyouliketoknow",
  "Database": "EasyFlor-Demo"
}

Returns: 200 OK / 401 Unauthorized

Property name Description Data type
Token Token used for authentication with each request string
Expiration The expiration date when the token will no longer be valid DateTime

Authorized request example

curl --location --request GET 'https://api.easyflor.eu/api/v2/ArticleEtag' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer ##TOKEN##'

Unauthorization / logging out

Note: Unauthorization is only used for Cookie based authorization. When using JWT Bearer Token based authorization, the token will expire on its own.

Command: api/unauthorization

Cookie based logging out. When sent, the cookie that started the session is invalidated and any further commands will receive a 401 unauthorized exception.

Post parameters: None

Post example:

POST https://api.easyflor.eu/api/unauthorization

Returns: Nothing


Master Data

Debtors

Endpoints:

  • GET /api/v2/DebtorEtag/{etag?} - Get debtors
  • GET /api/v2/DebtorEtag/Count - Get total count

A company or person to which goods are delivered and invoices sent.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

# Initial sync
GET https://api.easyflor.eu/api/v2/DebtorEtag

# Incremental sync
GET https://api.easyflor.eu/api/v2/DebtorEtag/a1b2c3d4-e5f6-7890-abcd-ef1234567890

Returns

Array of DebtorEtagResult objects (max 2000 per request)


Suppliers

Endpoints:

  • GET /api/v2/SupplierEtag/{etag?} - Get suppliers
  • GET /api/v2/SupplierEtag/Count - Get total count

A company or person which delivers goods to the company whose database you're connecting to.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

# Initial sync
GET https://api.easyflor.eu/api/v2/SupplierEtag

# Incremental sync
GET https://api.easyflor.eu/api/v2/SupplierEtag/a1b2c3d4-e5f6-7890-abcd-ef1234567890

Returns

Array of SupplierEtagResult objects (max 2000 per request)


Employee

Endpoints:

  • GET /api/v2/EmployeeEtag/{etag?} - Get employees
  • GET /api/v2/EmployeeEtag/Count - Get total count

An employee who works at the company whose database you're connecting to.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/EmployeeEtag

Returns

Array of EmployeeEtagResult objects (max 1000 per request)


Countries

Endpoints:

  • GET /api/v2/CountryEtag/{etag?} - Get countries
  • GET /api/v2/CountryEtag/Count - Get total count

A country stored in our database. Is tied to debtors, invoices, suppliers, etc.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/CountryEtag

Returns

Array of CountryEtagResult objects (max 1000 per request)


Currencies

Endpoints:

  • GET /api/v2/CurrencyEtag/{etag?} - Get currencies
  • GET /api/v2/CurrencyEtag/Count - Get total count

Currencies used in the system.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/CurrencyEtag

Returns

Array of CurrencyEtagResult objects (max 1000 per request)


Administrations

Endpoints:

  • GET /api/v2/AdministrationEtag/{etag?} - Get administrations
  • GET /api/v2/AdministrationEtag/Count - Get total count

Administrations stored in our database. Is tied to debtors, locations, etc.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/AdministrationEtag

Returns

Array of AdministrationEtagResult objects (max 1000 per request)


Locations

Endpoints:

  • GET /api/v2/LocationEtag/{etag?} - Get locations
  • GET /api/v2/LocationEtag/Count - Get total count

Locations stored in our database. Is tied to debtors, purchases, etc.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/LocationEtag

Returns

Array of LocationEtagResult objects (max 1000 per request)


Articles & Products

Article

Endpoints:

  • GET /api/v2/ArticleEtag/{etag?} - Get articles
  • GET /api/v2/ArticleEtag/Count - Get total count

An article, such as red roses.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ArticleEtag

Returns

Array of ArticleEtagResult objects (max 2000 per request)


ArticleSort

Endpoints:

  • GET /api/v2/ArticleSortEtag/{etag?} - Get article sorts
  • GET /api/v2/ArticleSortEtag/Count - Get total count

A variation in the article. For example red roses with a 50cm and 60cm article sort.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ArticleSortEtag

Returns

Array of ArticleSortEtagResult objects (max 2000 per request)


ArticleGroup

Endpoints:

  • GET /api/v2/ArticleGroupEtag/{etag?} - Get article groups
  • GET /api/v2/ArticleGroupEtag/Count - Get total count

A category for articles. Categories can be nested. For example, category Roses falls under category Flowers.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ArticleGroupEtag

Returns

Array of ArticleGroupEtagResult objects (max 2000 per request)


Markup Categories

Endpoints:

  • GET /api/v2/MarkupCategoryEtag/{etag?} - Get markup categories
  • GET /api/v2/MarkupCategoryEtag/Count - Get total count

Markup categories used for price calculations.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/MarkupCategoryEtag

Returns

Array of MarkupCategoryEtagResult objects (max 1000 per request)


Remarks

Endpoints:

  • GET /api/v2/RemarkEtag/{etag?} - Get remarks
  • GET /api/v2/RemarkEtag/Count - Get total count

Article remarks stored in the database.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/RemarkEtag

Returns

Array of RemarkEtagResult objects (max 1000 per request)


Webshop

ListGroup

Endpoints:

  • GET /api/v2/ListGroupEtag/{etag?} - Get list groups
  • GET /api/v2/ListGroupEtag/Count - Get total count

A list group is a collection of lists shown under one header in the shop.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ListGroupEtag

Returns

Array of ListGroupEtagResult objects (max 1000 per request)


ListArticleSort

Endpoints:

  • GET /api/v2/ListArticleSortEtag/{etag?} - Get list article sorts
  • GET /api/v2/ListArticleSortEtag/Count - Get total count

An article sort offered on a webshop list.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ListArticleSortEtag

Returns

Array of ListArticleSortEtagResult objects (max 1000 per request)


ListPreOrderGroupItem

Endpoints:

  • GET /api/v2/ListPreOrderGroupItemEtag/{id} - Get items (initial sync)
  • GET /api/v2/ListPreOrderGroupItemEtag/{etag}/{id} - Get items (incremental sync)
  • GET /api/v2/ListPreOrderGroupItemEtag/Count/{id} - Get total count

Items in a specific list pre-order group.

Sync frequency: Real-time data, sync every 5 minutes

Note: The ID parameter is a catch-all route because RavenDB IDs contain slashes (e.g., ListPreOrderGroups/123).

Parameters

Parameter Description Required
id ListPreOrderGroup ID (e.g., ListPreOrderGroups/123) yes
etag Etag from previous request for incremental sync no

Example

# Initial sync
GET https://api.easyflor.eu/api/v2/ListPreOrderGroupItemEtag/ListPreOrderGroups/123

# Incremental sync
GET https://api.easyflor.eu/api/v2/ListPreOrderGroupItemEtag/a1b2c3d4-e5f6-7890-abcd-ef1234567890/ListPreOrderGroups/123

# Count
GET https://api.easyflor.eu/api/v2/ListPreOrderGroupItemEtag/Count/ListPreOrderGroups/123

Returns

Array of ListPreOrderGroupItemEtagResult objects (max 2000 per request)


Favorites

Endpoint: GET /api/v2/ShopFavoritesEtag/{etag?}

Favorite articles per debtor for the webshop.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ShopFavoritesEtag

Returns

Array of ShopFavoritesEtagResult objects (max 1000 per request)


DebtorSessions

Endpoints:

  • GET /api/v2/ShopDebtorSessionEtag/{etag?} - Get debtor sessions
  • GET /api/v2/ShopDebtorSessionEtag/Count - Get total count

Debtor session records containing last known activities.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/ShopDebtorSessionEtag

Returns

Array of ShopDebtorSessionEtagResult objects (max 1000 per request)


Orders & Purchases

PreOrder

Endpoints:

  • GET /api/v2/PreOrderEtag/{etag?} - Get pre-orders
  • GET /api/v2/PreOrderEtag/Count - Get total count

The request (demand) for a certain article sort from a debtor.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/PreOrderEtag

Returns

Array of PreOrderEtagResult objects (max 2000 per request)


Purchase

Endpoints:

  • GET /api/v2/PurchaseEtag/{etag?} - Get purchases
  • GET /api/v2/PurchaseEtag/Count - Get total count

A purchase is a buying action from the company whose database you're in, from a supplier.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/PurchaseEtag

Returns

Array of PurchaseEtagResult objects (max 2000 per request)


DistributedPurchase

Endpoints:

  • GET /api/v2/DistributedPurchaseEtag/{etag?} - Get distributed purchases
  • GET /api/v2/DistributedPurchaseEtag/Count - Get total count

A distributed purchase represents goods from a purchase that have been allocated/sold to a specific debtor.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DistributedPurchaseEtag

Returns

Array of DistributedPurchaseEtagResult objects (max 1024 per request)


DistributedPurchaseOrderable

Endpoints:

  • GET /api/v2/DistributedPurchaseOrderableEtag/{etag?} - Get orderable distributed purchases
  • GET /api/v2/DistributedPurchaseOrderableEtag/Count - Get total count

Orderable distributed purchases.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DistributedPurchaseOrderableEtag

Returns

Array of DistributedPurchaseOrderableEtagResult objects (max 2000 per request)


Invoicing - Debet

Invoice

Endpoints:

  • GET /api/v2/InvoiceEtag/{etag?} - Get invoices
  • GET /api/v2/InvoiceEtag/Count - Get total count

An invoice made for a debtor (both credit and debet invoices).

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/InvoiceEtag

Returns

Array of InvoiceEtagResult objects (max 2000 per request)


DebetInvoicePurchaseItem

Endpoints:

  • GET /api/v2/DebetInvoicePurchaseItemEtag/{etag?} - Get debet invoice purchase items
  • GET /api/v2/DebetInvoicePurchaseItemEtag/Count - Get total count

Flowers and plants sold to a debtor and then invoiced.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DebetInvoicePurchaseItemEtag

Returns

Array of DebetInvoicePurchaseItemEtagResult objects (max 2000 per request)


DebetInvoiceCustomItem

Endpoints:

  • GET /api/v2/DebetInvoiceCustomItemEtag/{etag?} - Get debet invoice custom items
  • GET /api/v2/DebetInvoiceCustomItemEtag/Count - Get total count

Custom lines on debet invoices created by user with no link to a purchase.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DebetInvoiceCustomItemEtag

Returns

Array of DebetInvoiceCustomItemEtagResult objects (max 2000 per request)


DebetInvoicePackagingItem

Endpoints:

  • GET /api/v2/DebetInvoicePackagingItemEtag/{etag?} - Get debet invoice packaging items
  • GET /api/v2/DebetInvoicePackagingItemEtag/Count - Get total count

Packaging (NL: fust) that is invoiced.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DebetInvoicePackagingItemEtag

Returns

Array of DebetInvoicePackagingItemEtagResult objects (max 2000 per request)


DebetInvoiceTrolleyItem

Endpoints:

  • GET /api/v2/DebetInvoiceTrolleyItemEtag/{etag?} - Get debet invoice trolley items
  • GET /api/v2/DebetInvoiceTrolleyItemEtag/Count - Get total count

Trolleys (NL: karren) that are invoiced.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DebetInvoiceTrolleyItemEtag

Returns

Array of DebetInvoiceTrolleyItemEtagResult objects (max 2000 per request)


Invoicing - Credit

CreditInvoicePurchaseItem

Endpoints:

  • GET /api/v2/CreditInvoicePurchaseItemEtag/{etag?} - Get credit invoice purchase items
  • GET /api/v2/CreditInvoicePurchaseItemEtag/Count - Get total count

Flowers and plants sold to a debtor, then invoiced and then credited.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/CreditInvoicePurchaseItemEtag

Returns

Array of CreditInvoicePurchaseItemEtagResult objects (max 2000 per request)


CreditInvoiceCustomItem

Endpoints:

  • GET /api/v2/CreditInvoiceCustomItemEtag/{etag?} - Get credit invoice custom items
  • GET /api/v2/CreditInvoiceCustomItemEtag/Count - Get total count

Custom lines on credit invoices created by user with no link to a purchase.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/CreditInvoiceCustomItemEtag

Returns

Array of CreditInvoiceCustomItemEtagResult objects (max 2000 per request)


CreditInvoiceDepositItem

Endpoints:

  • GET /api/v2/CreditInvoiceDepositItemEtag/{etag?} - Get credit invoice deposit items
  • GET /api/v2/CreditInvoiceDepositItemEtag/Count - Get total count

Packaging (NL: fust) and trolleys (NL: karren) that carry a deposit price and have been returned by debtor.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/CreditInvoiceDepositItemEtag

Returns

Array of CreditInvoiceDepositItemEtagResult objects (max 2000 per request)


Payments & Trolleys

Payment

Endpoints:

  • GET /api/v2/PaymentEtag/{etag?} - Get payments
  • GET /api/v2/PaymentEtag/Count - Get total count

Payments registered for invoices (bank transactions, cash payments, cheques).

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/PaymentEtag

Returns

Array of PaymentEtagResult objects (max 2000 per request)


DistributedTrolley

Endpoints:

  • GET /api/v2/DistributedTrolleyEtag/{etag?} - Get distributed trolleys
  • GET /api/v2/DistributedTrolleyEtag/Count - Get total count

Trolley distribution records.

Sync frequency: Real-time data, sync every 5 minutes

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/DistributedTrolleyEtag

Returns

Array of DistributedTrolleyEtagResult objects (max 2000 per request)


Forecasting

PrognosePrice

Endpoints:

  • GET /api/v2/PrognosePriceEtag/{etag?} - Get prognose prices
  • GET /api/v2/PrognosePriceEtag/Count - Get total count

Price forecasts per article, week, and year. Only returns data for current year and next year.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/PrognosePriceEtag

Returns

Array of PrognosePriceEtagResult objects (max 2000 per request)


PrognoseQuantity

Endpoints:

  • GET /api/v2/PrognoseQuantityEtag/{etag?} - Get prognose quantities
  • GET /api/v2/PrognoseQuantityEtag/Count - Get total count

Quantity forecasts per article, week, and year. Includes distribution per day of the week. Only returns data for current year and next year.

Sync frequency: Doesn't change often, sync once per day

Parameters

Parameter Description Required
etag Etag from previous request for incremental sync no

Example

GET https://api.easyflor.eu/api/v2/PrognoseQuantityEtag

Returns

Array of PrognoseQuantityEtagResult objects (max 2000 per request)


Models

All response models are listed below with their properties.


AdministrationEtagResult

Inherits from Export_AdministrationTransformer.Result

Property Description Data type Required
Id Id of the administration string yes
Name Name of the administration string yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

ArticleEtagResult

Property Description Data type Required
Id Id of the article string yes
Name Name of article LanguageValues yes
Code Code of article string yes
Features Features of the article IEnumerable<Feature> yes
Tags Tags given to article IEnumerable<LanguageValues> yes
SecondaryColor RHS secondary color code string no
Color RHS primary color code string no
FreshDays Days the product stays fresh int? no
VBNCode VBN code of article string no
ArticleGroupId Id of the article group string yes
LastModifiedOn Last modification date/time DateTime yes
Etag Etag for next request Guid yes

Feature object:

Property Description Data type
FeatureName Name of feature LanguageValues
FeatureCode Code of feature string
FeatureTypeName Name of feature type LanguageValues
FeatureTypeCode Code of feature type string

ArticleSortEtagResult

Property Description Data type Required
Id Id of the article sort string yes
Name Name of article LanguageValues yes
Features Features of article sort IEnumerable<Feature> yes
Tags Tags given to article IEnumerable<LanguageValues> yes
MaxPrice Maximum price decimal? no
MinPrice Minimum price decimal? no
ArticleId Id of the article string yes
LastModifiedOn Last modification date/time DateTime yes
Etag Etag for next request Guid yes

Feature object: Same as ArticleEtagResult


ArticleGroupEtagResult

Property Description Data type Required
Id Id of article group int yes
ParentId Id of parent article group int? no
Name Name of article group LanguageValues yes
FeatureTypes Feature types to show for group List<string> yes
ArticleGroupParents Ordered list of parents (highest first) List<string> yes
Hide Not shown on shop if true bool yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

CountryEtagResult

Inherits from Export_CountryTransformer.Result

Property Description Data type Required
Id Id of the country string yes
Name Name in different languages LanguageValues yes
CountryCode2 2 letter code (ISO-3166 alpha 2) string no
CountryCode3 3 letter code (ISO-3166 alpha 3) string no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

CreditInvoiceCustomItemEtagResult

Inherits from Export_InvoiceCustomItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
Name Name of custom item string yes
Description Description of custom item string no
InvoiceNumber Invoice number string no
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
Quantity Quantity sold decimal yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
VATRateId Id of VAT rate string no
Country Country code 2 string yes
CountryCode Country code 2 string yes
Price Price per quantity (default currency) decimal yes
TotalPrice Total price (default currency) decimal yes
Employees Employee codes IEnumerable<string> no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

CreditInvoiceDepositItemEtagResult

Inherits from Export_CreditInvoiceDistributedDepositInvoiceItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
PackagingId Id of packaging (null if trolley) string no
TrolleyId Id of trolley (null if packaging) string no
Date Date deposit was credited DateTime yes
Quantity Quantity credited decimal yes
SingleUse Packaging is single-use bool yes
Price Deposit price per quantity (default currency) decimal yes
Country Country code 2 string yes
CountryCode Country code 2 string yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

CreditInvoicePurchaseItemEtagResult

Inherits from Export_CreditInvoiceDistributedInvoiceItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
InvoiceNumber Invoice number string no
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
ArticleId Id of article string yes
ArticleSortId Id of article sort string yes
ArticleGroupId Id of article group string yes
ArticleGroupName Name of article group string yes
PurchaseId Id of original purchase string yes
Date Date sold to debtor DateTime yes
Quantity Quantity sold decimal yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
VATRateId Id of VAT rate string no
OriginalPrice Buying price per quantity decimal no
Country Country code 2 string yes
CountryCode Country code 2 string yes
Price Price per quantity (default currency) decimal yes
TotalPrice Total price (default currency) decimal yes
Employee Name of employee string no
Employees Employee codes IEnumerable<string> no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

CurrencyEtagResult

Inherits from Export_CurrencyTransformer.Result

Property Description Data type Required
Id Id of the currency string yes
Name Name of currency string yes
ISOCode ISO code of currency string yes
TotalDecimals Decimals for totals int yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DebetInvoiceCustomItemEtagResult

Inherits from Export_InvoiceCustomItemTransformer.Result

Same properties as CreditInvoiceCustomItemEtagResult


DebetInvoicePackagingItemEtagResult

Inherits from Export_DebetInvoiceDistributedPackagingItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
InvoiceNumber Invoice number string no
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
PackagingCode Code of packaging string yes
Date Date sold to debtor DateTime yes
Quantity Quantity sold decimal yes
SingleUse Packaging is single-use bool yes
PackagingDepositPrice Deposit price per quantity (default currency) decimal yes
PackagingPrice Price per quantity (default currency) decimal yes
PackagingTotalDepositPrice Total deposit price (default currency) decimal yes
PackagingTotalPrice Total price (default currency) decimal yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DebetInvoicePurchaseItemEtagResult

Inherits from Export_DebetInvoiceDistributedPurchaseItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
Name Name of article string yes
InvoiceNumber Invoice number string no
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
ArticleId Id of article string yes
ArticleSortId Id of article sort string yes
ArticleGroupId Id of article group string yes
ArticleGroupName Name of article group string yes
PurchaseId Id of original purchase string yes
Date Date sold to debtor DateTime yes
Quantity Quantity sold decimal yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
VATRateId Id of VAT rate string no
OriginalPrice Buying price per quantity decimal no
Country Country code 2 string yes
CountryCode Country code 2 string yes
Price Price per quantity (default currency) decimal yes
TotalPrice Total price (default currency) decimal yes
Employee Name of employee string no
Employees Employee codes IEnumerable<string> no
SupplierId Id of supplier string no
ManufacturerSupplierId Id of manufacturer string no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DebetInvoiceTrolleyItemEtagResult

Inherits from Export_DebetInvoiceDistributedTrolleyItemTransformer.Result

Property Description Data type Required
Id Id of the invoice line string yes
InvoiceNumber Invoice number string no
InvoiceDate Date invoice was sent DateTime yes
DebtorCode Code of debtor string yes
PackagingCode Code of packaging/trolley string yes
Date Date sold to debtor DateTime yes
Quantity Quantity sold decimal yes
QuantityAttachments Quantity of attachments int yes
QuantityPlates Quantity of plates int yes
PackagingDepositPrice Deposit price per quantity (default currency) decimal yes
PackagingPrice Price per quantity (default currency) decimal yes
PackagingTotalDepositPrice Total deposit price (default currency) decimal yes
PackagingTotalPrice Total price (default currency) decimal yes
DebtorId Id of debtor string yes
DebtorIdInt Int part of debtor id int yes
InvoiceId Id of invoice string yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DebtorEtagResult

Inherits from Export_DebtorTransformer.Result

Property Description Data type Required
Code Code to reference debtor string yes
ParentDebtorCode Code of parent debtor string no
Administration Administration debtor belongs to string yes
Name Name of debtor string yes
SecondName Second name string no
Category Debtor category string yes
Country Country code 3 string no
Currency ISO code of currency (deprecated) string yes
Language Language name string yes
TransporterCode Transporter code string no
TransporterName Transporter name string no
TransportRegion Transport region string no
Employees Employees that may place orders IEnumerable<string> no
OrderDayNames Order day ids IEnumerable<string> no
ToInvoice Debtors invoiced for IEnumerable<string> no
Locations Location ids IEnumerable<string> no
InvoiceCreditTemplate Credit invoice template string no
InvoiceDebetTemplate Debet invoice template string no
InvoiceCSVTemplate CSV invoice template string no
InvoiceEventsTodo Default invoice events IEnumerable<string> no
Price Default price settings name string no
PriceUseMarkupCategories Use markup categories bool? no
PriceUseOriginalPrice Use original price bool? no
MarkupCategories Markup category ids IEnumerable<string> no
DistributionPackagingVATRate VAT rate code for packaging string no
DistributionTrolleyVATRate VAT rate code for trolleys string no
DistributionSellingLocation Location name for stock string no
Block Blocked from webshop bool yes
Id Int part of debtor id int yes
ParentId Int part of parent debtor id int no
PaysVAT VAT is added to invoice bool yes
CurrencyISOCode ISO code of currency string yes
CreatedOn Creation date/time DateTime yes
InvoiceSettings Invoice-specific settings InvoiceSettings no
DistributionSettings Distribution settings DistributionSettings no
Config Debtor-specific config Config no
OrderDays Order day objects IEnumerable<OrderDay> no
Addresses Address objects IEnumerable<Address> no
Numbers Number objects IEnumerable<Number> no
Contacts Contact objects IEnumerable<Contact> no
MailAddresses Mail address objects IEnumerable<MailAddress> no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DistributedPurchaseEtagResult

Inherits from Export_DistributedPurchaseSyncTransformer.Result

Property Description Data type Required
Id Id of distributed purchase string yes
Name Name of article string yes
Description Description of article string yes
ArticleId Id of article string yes
ArticleSortId Id of article sort string yes
ArticleGroupId Id of article group string yes
PurchaseId Id of original purchase string yes
DebtorId Id of debtor string yes
OriginalPrice Buying price per quantity (default currency) decimal no
Price Price per quantity (default currency) decimal yes
BasePrice Base price (default currency) decimal yes
EmployeeId Id of employee string no
SupplierId Id of supplier string no
ManufacturerSupplierId Id of manufacturer string no
CurrencyId Id of currency string yes
IsCheckedIn Checked in status bool yes
IsCheckedInLabel Label checked in status bool yes
Date Distribution date DateTime yes
Events Event history List yes
EventsRMA RMA events List yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

DistributedPurchaseOrderableEtagResult

Inherits from Export_PurchaseSyncTransformer.Result

Same as PurchaseEtagResult


DistributedTrolleyEtagResult

Inherits from Export_DistributedTrolleySyncTransformer.Result

Property Description Data type Required
Id Id of distributed trolley string yes
TrolleyCode Code of trolley string yes
DebtorId Id of debtor string yes
DebtorCode Code of debtor string yes
Date Transaction date DateTime yes
Quantity Quantity (positive=ingoing, negative=outgoing) int yes
QuantityAttachments Quantity of attachments int yes
QuantityPlates Quantity of plates int yes
Ingoing Direction of transaction bool yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

EmployeeEtagResult

Inherits from Export_EmployeeTransformer.Result

Property Description Data type Required
Id Id of employee string yes
Name Name of employee string yes
Code Code of employee string yes
ArticleGroups Article group ids employee can order List<string> yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

InvoiceEtagResult

Inherits from Export_InvoiceTransformer.Result

Property Description Data type Required
Id Id of invoice string yes
DebtorId Id of debtor string yes
Date Invoice date DateTime yes
Administration Id of administration string yes
BillingDebtorContactAddressId Billing address id string no
ShippingDebtorContactAddessId Shipping address id string no
AdministrationContactAddressId Administration address id string no
DebtorPaysVat Debtor pays VAT bool yes
CountryId Id of country string yes
Totals Total amounts Totals yes
Negative Invoice total is negative bool yes
InvoiceState Payment state string yes
Currency Currency name string yes
CurrencyCode Currency code string yes
CurrencyTotalDecimals Decimal places for totals int yes
CurrencyISOCode ISO code of currency string yes
CurrencyId Id of currency string yes
TransportRegion Transport region name string no
Done Invoice finalized bool yes
Payed Invoice paid bool yes
ToPay Amount not yet paid decimal yes
DaysOpen Days invoice is open int? no
Exported Exported to accountant bool yes
Statistics CBS statistics Statistics yes
Retrospectives Applied markups Retrospectives yes
Language Language code string yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

ListArticleSortEtagResult

Inherits from Export_ListArticleSortTransformer.Result

Property Description Data type Required
Id Id of list article sort string yes
ArticleSortId Id of article sort string yes
ArticleSortTags Combined tags IEnumerable<LanguageValues> yes
Attachments Attachment identifiers List<IFileStorageItemIdentifier> yes
DateFrom Active from date DateTime? no
DateTo Active to date DateTime? no
Features Article features IEnumerable<ArticleFeatureModel> yes
IsCheckedIn Checked in status bool yes
ListId Id of list string yes
ManufacturerId Id of manufacturer string no
MinQuantity Minimum order quantity int? no
Packagings Packaging codes IEnumerable<string> yes
SalesUnits Sales unit info List<SalesUnitsInfo> yes
SupplierId Id of supplier string no
OriginalPrice Original price decimal? no
QuantityAvailable Available quantity int? no
OrderableName Orderable name LanguageValues yes
OrderableDescription Orderable description LanguageValues yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

ListGroupEtagResult

Inherits from Export_ListPreOrderGroupTransformer.Result

Property Description Data type Required
Id Id of list group string yes
Name Name of list group string yes
Lists List objects List<ListObject> yes
Debtors Debtor ids List<int> yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

ListPreOrderGroupItemEtagResult

Inherits from Export_ListArticleSortTransformer.Result

Same properties as ListArticleSortEtagResult


LocationEtagResult

Inherits from Export_LocationTransformer.Result

Property Description Data type Required
Id Id of location string yes
Name Name of location string yes
OwnerAdministrationId Owner administration id string no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

MarkupCategoryEtagResult

Inherits from Export_MarkupCategoryTransformer.Result

Property Description Data type Required
Id Id of markup category string yes
Name Name of category LanguageValues yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

PaymentEtagResult

Inherits from Export_PaymentTransformer.Result

Property Description Data type Required
Id Id of payment string yes
DebtorCode Code of debtor string yes
Debtor Name of debtor string yes
DateTime Payment date/time DateTime yes
EmployeeName Name of employee string no
PaymentMethod Payment method name string yes
Description Payment description string no
Number Reference number string no
CurrencyDecimals Currency decimal places int yes
CurrencyCode Currency code string yes
Amount Amount paid decimal yes
AmountLeft Amount not yet linked to invoices decimal yes
PaidInvoices Invoices payment is linked to IEnumerable<PaidInvoice> yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

PreOrderEtagResult

Inherits from PreOrderExportTransformer.Result

Property Description Data type Required
Id Id of pre-order string yes
Price Price in debtor currency decimal yes
Date Pre-order date DateTime yes
ListArticleSortId Id of list article sort string yes
ArticleSortId Id of article sort string yes
Packagings Packaging codes IEnumerable<string> yes
Quantity Quantity ordered by customer int yes
QuantityOrdered Quantity ordered by backoffice int yes
QuantityDistributed Quantity assigned to customer int yes
SalesUnits Sales unit info IEnumerable<SalesUnitInfo> yes
OrderResponses Order response info IEnumerable<OrderResponse> yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

PrognosePriceEtagResult

Property Description Data type Required
ArticleId Id of article string yes
Year Prognose year int yes
Week Prognose week number int yes
Price Forecasted price decimal yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

Note: Only returns data for current year and next year.


PrognoseQuantityEtagResult

Property Description Data type Required
ArticleId Id of article string yes
Year Prognose year int yes
Week Prognose week number int yes
Quantity Forecasted quantity int yes
PercentagePerDay Distribution per day of week Dictionary<int, int> no
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

PercentagePerDay: Dictionary where key is day of week (0=Sunday, 1=Monday, etc.) and value is percentage (0-100).

Note: Only returns data for current year and next year.


PurchaseEtagResult

Inherits from Export_PurchaseSyncTransformer.Result

Property Description Data type Required
Id Id of purchase string yes
Name Name of article string yes
Description Description of article string yes
Date Purchase date/time DateTime yes
DistributedPurchaseIds Ids of sales records List<string> yes
QuantityBought Amount bought int yes
QuantitySold Amount sold int yes
OriginalPrice Buying price per quantity decimal yes
ArticleGroupId Id of article group string yes
EmployeeId Id of employee string no
ArticleId Id of article string yes
ArticleSortId Id of article sort string yes
SupplierId Id of supplier string yes
CurrencyId Id of currency string yes
LocationSectionId Id of location section string no
LocationId Id of location string yes
IsCheckedIn Checked in status bool yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

RemarkEtagResult

Inherits from Export_ArticleRemarkTransformer.Result

Property Description Data type Required
Id Id of remark string yes
Name Name/title of remark LanguageValues yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

ShopDebtorSessionEtagResult

Property Description Data type Required
DebtorId Id of debtor string yes
LastActivityOn Last activity date/time DateTime yes
Etag Etag for next request Guid yes

ShopFavoritesEtagResult

Property Description Data type Required
DebtorId Id of debtor string yes
ArticleSorts Favorite article sorts IEnumerable<Export_ArticleSortTransformer.Result> yes
Etag Etag for next request Guid yes

SupplierEtagResult

Inherits from Export_SupplierTransformer.Result

Property Description Data type Required
Id Id of supplier string yes
Name Name of supplier string yes
Code Code of supplier string yes
Category Supplier category string yes
Country Country name string no
Language ISO language code string no
MarkupCategories Markup category ids IEnumerable<string> yes
DateTimeLastModified Last modification date/time DateTime yes
Etag Etag for next request Guid yes

Heeft u vragen of heeft u hulp nodig? Neem dan gerust contact met ons op via telefoonnummer +31 (0)71 30 20 310 of stuur een e-mail naar support@easyflor.nl.