Version History
This section describes changes made in subsequent releases and the new features in this API:
| Release | Enhancements | API Version |
|---|---|---|
| 2026.1 | Retailers at airports are aiming to create a shopping environment exclusively for airline staff. To identify crew members as customers, we are extending the existing endpoints. The field customerTypeIds in the response now includes an additional value Crew for the following endpoint: - GET /customers The field customerTypeIds in request now includes an additional value Crew for the following endpoints. - POST /customers - POST /customers/{id} - POST /customers/individualPersons/bulkImport | v3 |
| 2026.1 | To facilitate business operations and allow bulk import of customer data from an external system, we have introduced following new endpoint: - POST /customers/individualPersons/bulkImport | v3 |
| 2026.1 | Retailers looking to provide exclusive shopping benefits for their employees and contractors need to develop a comprehensive employee sales program. To facilitate these employee discount programs, it is essential to identify employees as a unique customer type within the point-of-sale (POS) application, enabling them to receive relevant discounts. To support above feature, following existing endpoints are updated with new fields: - GET /customers - POST /customers - PUT /customers/{id} Endpoints are extended with the following optional fields in the response. groupExternalId - Customer group, used for storing external employee group. isEligibleForDiscount - Discount eligibility flag, to store information if given employee is eligible to get discount. All the endpoints mentioned above are extended with the following new optional fields to the request body. identifierTypeId , identifierValue | v3 |
| 2025.2 | To ensure consistency with the backend, we introduced the following endpoints: - GET /attributes/type - retrieves a collection of types of attributes. - GET /attributes - retrieves a collection of attributes. - POST /attributes - enables the POS system to create attributes. - GET /attributes/{id} - retrieves attributes filtered by its ID. - PUT /attributes/{id} - updates attributes by its ID. - DELETE /attributes/{id} - deletes attributes by their ID. | v3 |
| 2025.2 and Patch in API 2024.2 | To determine the minimum redemption value when checking the customer's loyalty card, we have introduced a new response field minimumRedemptionValue to the following endpoint: - GET/customers/card/{cardNumber} The field minimumRedemptionValue indicates the minimum value that can be redeemed from the available loyalty points. | v3 |
| 2025.2 and Patch in API 2024.2 | To implement data access permissions to share customer profiles between locations within the same legal entity; we introduced a new header businessUnitExternalId of type string to the following endpoints: - GET / account/search (v2), GET / accounts/{id}/invoices (v2), POST /accounts/{id}/movements (v2), GET /customers (v3), POST /customers (v3), PUT /customers/{id} (v3). businessUnitExternalId indicates a unique identifier for businessUnit. | v2,v3 |
| 2025.2 | In the case of Internet connection issues, VRP offers an offline mode that can be used on the on-premise Edge servers located in individual stores. To ensure that the sale involving Local Accounts is performed seamlessly when the location is offline, the sales process has been enhanced with the offline limits and saving movements features. Once the connection is restored, all offline movements are synchronized to the cloud. To support this extension, we have introduced the following changes in Customers API: - we added the optional response field movements.isCreatedOffline to the GET /accounts/movementsForStatement, GET /accounts/{id}/movements, GET /statements/{accountId} endpoints. It specifies if the movement was registered in offline mode. - we added the financialAttributes.maximumOfflineCreditAmount optional response field to the: GET /statements/{accountId}, GET /accounts/movementsForInvoice, GET /accounts endpoints. It depicts the maximum amount a customer can purchase on credit when the location is offline. - we added the optional response field balance.isOffline to the: GET /accounts and GET /accounts/search endpoints. It indicates if the accounts.balance.availableCredit includes offline credit, when the service works in on-premise mode. Additionally, we exposed Customers API in the Public API Edge with the following new endpoints: - POST /api/v2/accounts/{id}/movements - enables the POS system to register a movement on the customer account. - GET /api/v2/accounts/search - retrieves accounts details based on the customerId or cardId. | v3 |
| 2025.2 and Patch in API 2024.2 | To enable a service-level health check, we introduced a new endpoint: - GET /healthCheck. It allows the API client to check the status of the dependent backend services. On the 200 response, the client receives the overall status information: healthy, degraded, unhealthy. | v3 |
| 2024.3 | Frequency of invoice creation could vary for different Local Accounts. To increase the scope of available Invoicing periods, account definition was extended with an additional cadence options, for example: daily, weekly, bi-weekly, monthly, etc. To suppport this enhancement, we implemented a new endpoint: - GET /invoiceCadences - returns a collection of invoice cadences containing the invoiceCadences id and name. We also extended the GET /statements/{accountId}, GET /accounts/movementsForInvoice, GET /accounts, GET /accounts/movementsForStatement endpoints with the following new response fields: - financialAttributes.invoicing.invoiceCadenceId - financialAttributes.invoicing.secondIssueDay - financialAttributes.invoicing.issueDayOfWeek - financialAttributes.invoicing.issuePeriodDays Additionaly, the financialAttributes.invoicing.issueDay field was changed from mandatory to optional. | v3 |
| 2024.2 | As of 2024.2 release, Customer API v1 is decomissioned and no longer supported. We always recommend that you update to the latest version to get all improvements and fixes. | v1 |
| 2024.2 | Local Accounts concern the option of managing individual accounts for customers: special pricing, payment terms and credit limits, ensuring flexibility and convenience in their transactions. To support the local customer account handling we enhanced the Customers API with the following extensions: - we exposed the new endpoint: GET /accounts/{id}/movements. It retrieves different types of movement on the local customer account (pay-in, pay-out, refund, etc.). - we changed the following optional response fields in the GET /accounts/movementsForInvoice endpoint: accounts.movements.'.cardId (integer) to accounts.movements.'.cardNumber (string) and accounts.movements.'.businessUnitId (integer) to accounts.movements.'.businessUnitExternalId (string). - we changed the following optional request fields in the POST /accounts/{id}/movements endpoint: movements.cardId (integer) to movements.cardNumber (string) and movements.businessUnitId (integer) to movements.businessUnitExternalId (string). We added also the optional request field movements.locationId (integer) - we extended the GET /accounts/search endpoint with the following response fields: accounts.locations [] (optional), accounts.locations.businessUnitExternalId (required), accounts.locations.excluded (required). We also added the new optional query parameters: cardNumber and cardExternalId - we changed the following optional response fields in the GET /accounts/movementsForStatement endpoint: accounts.movements.cardIsActive (boolean) to accounts.movements.cardStatusId (integer), accounts.movements.cardId (integer) to accounts.movements.cardNumber (string), accounts.movements.businessUnitId (integer) to accounts.movements.businessUnitExternalId (string). - we changed the following optional response fields in the GET /statements/{accountId} endpoint: movements.cardIsActive (boolean) to movements.cardStatusId (integer), movements.cardId (integer) to movements.cardNumber (string), movements.businessUnitId (integer) to movements.businessUnitExternalId (string). - we extended the GET /accounts endpoint with the following response fields: items.locations [] (optional), items.locations.businessUnitExternalId (required), items.locations.excluded (required), items.locations.id (optional). | v3 |
| 2023.3 | To avoid endpoints path conflict, we corrected the GET /customers/{cardNumber} endpoint path name and changed it to: GET /customers/card/{cardNumber}. | 3.0.2 |
| 2023.3 | To enable updating the customer records in the Customer Repository, we expanded the following endpoint: PUT /customers/{id} In integration with DN's Vynamic Engage services, the cashier can populate a known customer's information (organizations and individuals) on the POS while issuing an invoice. The cashier can modify the customer data and use the updated data in customer invoices. The updated details appear on the fiscal document and are stored in the Customer Repository to reuse on future visits. | 3.0.2 |
| 2023.2 | To allow POS system to get customer benefits from third-party loyalty programs we have introduced new endpoint to the Customers API: GET /customers/benefit | 3.0.0 |
| 2023.2 | To enable using currency ISO codes for movements on accounts, we updated the POST /accounts/{id}/movements endpoint and changed its backend version to v2: - we removed request field: movements.currencyId - we added request field: movements.currencyCode We also changed a request field: movements.referenceDocumentGuid from "required" to "optional". | 3.0.0 |
| 2023.2 | To enable using currency and country ISO codes when searching, we updated GET accounts/search endpoint and changed its backend version to v2: - we deleted response fields: accounts.currencyId, accounts.companyAddress.countryId, accounts.invoiceAddress.countryId - we added response fields: accounts.currencyCode, accounts.companyAddress.countryCode, accounts.invoiceAddress.countryCode | 3.0.0 |
| 2023.2 | We exposed new endpoints related to Customer Accounts: - GET /accounts - retrieves customer account details by filtering information collected in Vynamic Engage Promotion Engine. User can obtain customer account details and reduce results based on filters. - GET /accounts/movementsForStatement - retrieves customer accounts which require statements generated on a given date. | 3.0.0 |
| 2023.2 | To add improvements and maintain consistency with private Vynamic Engage API, we expanded a new version (v2) of the GET /accounts/movementsForInvoice endpoint: - we deleted response field: accounts.financialAttributes.currencyId, - we added following response fields: accounts.financialAttributes.currencyCode, accounts.periodStartUtc, accounts.periodEndUtc, accounts.dateOfIssueUtc, accounts.companyAddress, accounts.invoiceAddress, accounts.name, accounts.invoiceAddressSameAsCompany, accounts.accountContacts. | 3.0.0 |
| 2023.2 | To add improvements and maintain consistency with private Vynamic Engage API, we expanded a new version (v2) of the GET /statements/{accountId} endpoint: - we deleted response fields: financialAttributes.currencyId, movements.currencyId, - we added response fields: name, invoiceAddressSameAsCompany, accountContacts [], financialAttributes.currencyCode, dateOfIssueUtc, movements.cardOwner, movements.cardValidFrom, movements.cardValidTo, movements.cardIsActive, movements.currencyCode, companyAddress, invoiceAddress, - we added new string enum to response field: movements.movementType. | 3.0.0 |
| 2023.2 | We updated the GET /accounts/{id}/invoices endpoint and changed its backend version to v2: - we deleted response field: currencyId, - we added response field: currencyCode. | 3.0.0 |