Download OpenAPI specification:Download
This is the documentation for the current release of the OIP API.
Current release: 2024-11-19 (v.4.2.0)
Welcome to the Oculos Integration Platform (OIP) API documentation, a resource for better understanding of our integration platform.
This documentation is designed to be accessible and informative for both technical and sales professionals, ensuring that you can fully explore the capabilities and benefits of our API.
For technical experts, this documentation provides in-depth insights into the API endpoints, data structures, and integration possibilities. You'll find detailed explanations, code examples, and best practices to help you integrate our API into your applications and systems.
For sales persons and other non-technical stakeholders, this documentation offers a overview of the API's features, use cases, and potential business advantages.
As the configuration of OIP allows for a flexible request/reponse, only the standard data structures are displayed in this documentation.
If you have a customized configuration and need examples, please contact our support team or your sales person.
The API has two base URL's, one for production and one for testing.
Production: https://api.oculos.no/v4
Staging: https://api.staging.oculos.no/v4
Our API is designed to be secure and efficient, and it requires an API key to authenticate your requests. In this short documentation, we'll guide you on how to use our API with the x-api-key header to ensure successful integration.
x-api-key : <API KEY>
This lets us configure OIP to only allow access to your API account from those IP's.
OIP returns a standarized detailed error message where it's possible. The structure of the error message looks like this:
{
"code" : "409",
"message" : "Conflict",
"detailedErrorMessage" : {
}
}
The detailedErrorMessage
is fully dynamic and can contain a simple string aswell as a list of errors'.
By accessing or using our API (the "Service"), you agree to comply with these Terms of Use. Please read them carefully, as they govern your usage of our API.
You are granted a non-exclusive, non-transferable, limited license to access and use our API in accordance with these terms. You may only use the API for its intended purpose and in compliance with our guidelines and documentation.
Access to the API requires an API key. Keep your API key secure and do not share it with unauthorized parties. You are responsible for all actions performed using your API key. Ensure that the API key is not visible in any way in your application.
You may not use the API to engage in any illegal, harmful, or abusive activities. You may not decompile, reverse engineer, or attempt to gain unauthorized access to the API or our systems. You may not use the API in a way that could harm or interfere with our services, infrastructure, or other users.
When using our API, you may have access to user data. Ensure you handle such data in compliance with applicable data protection laws and our privacy policy.
By using our API, you acknowledge that you have read, understood, and agreed to these Terms of Use. Failure to comply with these terms may result in the suspension or termination of your API access.
These methods are provided for early access to new features but may have limited support, and their behavior, parameters, or responses can be modified or deprecated without prior notice.
Use these methods with caution in production environments, as changes may impact integration stability. It is recommended to regularly check the documentation for updates when utilizing preview features.
We reserve the right to update these terms, so it is recommended to review them periodically for any changes.
OIP API does not have any rate limits, but some external systems integrated with OIP may have.
Exceeding these limits may result in temporary access restrictions.
We strongly recommend implementing a back-off strategy to handle rate limit exceeded responses. This strategy helps you avoid overloading our/external servers and ensures a smoother user experience.
If you are receving one of the following errors it's an indication of an issue with an external system.
{
"code" : "429",
"message" : "Too Many Requests",
"detailedErrorMessage" : {
}
}
{
"code" : "502",
"message" : "Bad Gateway",
"detailedErrorMessage" : {
"gateway" : "Connection to backend system failed. System: [system_name]",
"gatewayMessage" : "Detailed error message here"
}
}
A webhook is a way for two different software applications to communicate with each other in real-time. It's like a notification system that triggers actions automatically when certain events occur.
Oculos can configure webhooks on request, please contact our support team for more information.
Endpoints for managing abandoned carts
An abandoned cart function helps businesses track when online shoppers add items to their virtual shopping carts but leave the website or app without completing their purchase.
It captures data about these abandoned carts, including the specific products left behind and, when available, the customer's contact information.
Creates or updates a cart.
As with many other endpoints, the payload is configurable and can contain additional data in the extendedProperties
field.
To update a cart, use the same cartId as an existing cart.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "cartId": "934E2183-5004-45B0-8E75-A5178F1DEEF1",
- "contactId": "F68438A9-800B-457D-81D5-952FCEB63D8C",
- "externalId": "100001111",
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}, - "items": [
- {
- "itemId": "1001",
- "quantity": 2,
- "name": "Product 1001",
- "price": 799.9,
- "salePrice": 499.5,
- "currency": "NOK"
}
]
}
Method that allows the client to empty a stored cart
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "cartId": "934E2183-5004-45B0-8E75-A5178F1DEEF1"
}
The customers endpoint allows you to create, update or search for customers through various parameters depending on your configuration.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object.
To get an example of your specific integration, please contact our support team.
This method allows the client to search for a customer by a mobile phone number.
Example: +4712345678
The response sample below shows the default response, but depending on your configuration the API may return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Customer Not Found
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
The request sample(s) below shows the default payload and one minimum required payload.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object. For specific examples reach out to your technical contact.
object | |
object |
Created
Bad Request
Unauthorized
Conflict
{- "data": {
- "mobilePhone": "+4712345678",
- "externalId": "string",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "acceptsDigital",
- "value": true
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "source": {
- "storeId": "S2010",
- "cashRegisterId": "POS-123",
- "cashierId": "ID-321",
- "sourceName": "string",
- "extendedSourceFields": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
}
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
The request sample(s) below shows the default payload and one minimum required payload.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object. For specific examples reach out to your technical contact.
object | |
object |
OK
Bad Request
Unauthorized
Conflict
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "mobilePhone": "+4712345678",
- "externalId": "string",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favouriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}, - "extendedConsents": [
- {
- "id": "acceptsDigital",
- "value": true
}
]
}, - "source": {
- "storeId": "S2010",
- "cashRegisterId": "POS-123",
- "cashierId": "ID-321",
- "sourceName": "string",
- "extendedSourceFields": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
}
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
The request sample(s) below shows the default payload and one minimum required payload.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object. For specific examples reach out to your technical contact.
object | |
object |
OK
Bad Request
Unauthorized
Conflict
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "mobilePhone": "+4712345678",
- "externalId": "string",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favouriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}, - "extendedConsents": [
- {
- "id": "acceptsDigital",
- "value": true
}
]
}, - "source": {
- "storeId": "S2010",
- "cashRegisterId": "POS-123",
- "cashierId": "ID-321",
- "sourceName": "string",
- "extendedSourceFields": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
}
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
This method allows the client to search for a customer by a unique id
Example: 226B14AF-18A6-44CF-834E-BE4BCA5D64B7
The response sample below shows the default response, but depending on your configuration the API may return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Customer Not Found
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
This method allows the client to search for a customer by an external Id
Example: B9012E40-1B08-4DC5-84F9-BB8E2653B2A6
The response sample below shows the default response, but depending on your configuration the API may return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Customer Not Found
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
Returns a list of changed customers since given timestamp. Default (empty parameter) is since last day.
OK
Bad Request
Unauthorized
Conflict
{- "data": {
- "mobilePhone": "+4712345678",
- "externalId": "string",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "acceptsDigital",
- "value": true
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "source": {
- "storeId": "S2010",
- "cashRegisterId": "POS-123",
- "cashierId": "ID-321",
- "sourceName": "string",
- "extendedSourceFields": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
}
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
This method is fully dynamic both in request/response and is available for specific client customizations on the customer endpoint.
OK
Bad Request
Unauthorized
Function Not Found
{- "field1": "This is a string",
- "field2": 123,
- "field3": "Another string"
}
Endpoint that lists all available consents for a client.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object.
To get an example of your specific integration, please contact our support team.
This endpoints automatically enriches a member by thats already stored in the MA-system.
The endpoints fetches the member from the MA-system, enriches it's data, updates and redirects back to a pre-configured URL.
Found - the member is found and enriched, redirecting to pre-configured URL.
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Member not found
Looks up a mobile phone number and tries to discover owner data through 3rd party services.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "firstName": "firstName",
- "lastName": "lastName",
- "address": "Kongens gate 20",
- "zip": "0010",
- "city": "Oslo",
- "gender": "Male",
- "birthDate": "1955-12-16T00:00:00",
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
This method let's you retreive information on a member based on their SSN
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "firstName": "firstName",
- "lastName": "lastName",
- "address": "Kongens gate 20",
- "zip": "0010",
- "city": "Oslo",
- "gender": "Male",
- "birthDate": "1955-12-16T00:00:00",
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
Endpoint for checking OIP health status.
With these endpoint(s) you can make a request to OIP to get a quick system status.
Endpoint that provides methods for importing data, typically in batchers into OIP.
In this endpoint we can receive many formats and types, such as JSON and XML requests.
To get an example of your specific integration, please contact our support team.
Imports data into OIP by the body request, this method accepts various formats such as JSON, XML, CSV etc.
This method may have to be configured by Oculos before usage and the examples below is just an illustration of payload as the endpoint is fully dynamic.
Array of objects |
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "members": [
- {
- "name": "John Doe",
- "age": 30,
- "email": "john.doe@example.com",
- "address": "Street 1",
- "city": "Oslo",
- "zip": 10,
- "metaData": [
- {
- "isVip": true
}
]
}
]
}
Imports data into OIP from a form using the application/x-www-form-urlencoded
content type.
The endpoint may have to be configured by Oculos before usage.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Imports a file into OIP.
Use multipart/form-data with a required field file (the file to upload).
Curl example:
curl -X POST "http://api.oculos.no/v4/import/file" -F "file=@path/to/your/file.txt"
This endpoint may have to be configured by Oculos before usage.
Accepted
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Endpoints for manually managing different types of loyalty objects.
Methods under this endpoint lets you view current campaigns, manually add bonus points, get balance of a customers loyalty card(s) etc.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object.
To get an example of your specific integration, please contact our support team.
Methods that returns all current bonus campaigns.
The id parameters is optional and can be used to return all campaigns for a specific member.
The return object is dynamic and can vary between clients, the example below shows the most common types of fields.
Success
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Member not found
[- {
- "id": "5",
- "campaignName": "Double bonus on 5 for 300 (covering bark 40 liter)",
- "campaignType": "F",
- "rewardType": "double",
- "points": null,
- "validFrom": "2022-05-29T00:00:00",
- "validTo": "2022-06-29T00:00:00",
- "products": [
- {
- "id": "AA-123456789"
}
]
}
]
Method that allows a third-party to manually import activities and update bonus amount for a member.
Available activites that qualifies for bounus points can be found using the /bonus/rules
endpoint.
The request and response can be customer specific and the example below shows only a common type of request body.
Success
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Customer or activity not found
{- "externalId": "+4712345678",
- "activity": "20",
- "activityDate": "2022-07-01",
- "activityValue": 10
}
[- {
- "status": "1",
- "statusText": "OK",
- "points": "38",
- "totaltPoints": "38",
- "activityPoints": "8"
}
]
Method that allows you to manually add points to specific member
Success
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "points": 1000,
- "description": "Extra bonus points due to delayed shipment"
}
{- "externalId": "+4712345678",
- "activity": "20",
- "activityDate": "2022-07-01",
- "activityValue": 10
}
A method that allows the client to transfer clips on a loyalty card between two existing customers.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage.
{- "fromCustomerId": "15BE85AB-CD61-4A23-8C22-0981AD35DBD1S2010",
- "toCustomerId": "2A9ACDD0-9113-4EF4-8EA9-FD343E040EE9",
- "loyaltycardId": "952841C1-4385-40B3-8B30-A65AAC66108E",
- "clipCount": 1,
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
Methods that returns all the rules and activitys that qualifies to bonuses.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage
[- {
- "bonusRuleId": "2",
- "name": "Registrering",
- "bonusRuleType": "REGISTER",
- "value": "30",
- "validFrom": "2022-01-01T00:00:00",
- "validTo": null,
- "created": "2021-01-01T00:00:00"
}
]
Endpoint that returns a list of active loyalty/stamp cards for a customer.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Not Found
[- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
A method that allows the client to manually add clips/stamps to a customers loyalty card which can be useful i scenarions where live updates are not possible.
Depending on your configuration, the API may take or return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Conflict
{- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "memberId": "+4712345678",
- "storeId": "STORE-001",
- "cashierId": 123,
- "itemCount": 1,
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
Endpoint that return all products that qualifies for a count in each loyalty/stamp card.
Depending on your OIP configuration, the API may return additional fields in the extendedProperties object.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
[- {
- "stampCardId": "4",
- "stampCard": "Black coffee",
- "stampCardType": "Coffee",
- "productId": "7049987090935",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
Returns all transactions for a customer that qualifies for a bonus.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "transactions": [
- {
- "id": 7,
- "transactionDate": "2024-04-16",
- "transactionDateTime": "2024-04-16T17:58:04",
- "customerId": "CDCFD0EE-1144-48BD-82FC-985020211E88",
- "externalCustomerId": "3200204",
- "affiliateId": "8931C481-CECF-4ADA-A13F-10B72B617E21",
- "affiliateName": "Testing AS",
- "ruleId": "4A09AACC-6320-49A6-94CB-2ECE1B2E82C1",
- "ruleName": "Basic points",
- "activityId": "067FB253-4335-4334-BE6F-1E3B1188B652",
- "acitvityName": "Basic contract terms",
- "dataId": "1013-87-8",
- "dataLineId": "1013-87-8-1",
- "value": 750,
- "points": 75,
- "pointsCreatedDateTime": "2024-05-16T13:56:34.297",
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
]
}
Endpoint that lets yoy send different types of messages and manually trigger automations that send SMS.
In this endpoint you will also find a complete set of methods to create a 2F verfication solution by SMS.
Sends an SMS with a given sender name.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "phoneNumber": "+4712345678",
- "message": "This is a text message",
- "sender": "Oculos"
}
Creates and sends an SMS with a unique code that can be used in 2 factor logins or customer verification processes.
The sender, length and expiration time is configurable.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Use this endpoint for adding a card token to an existing member.
This method requires an integration with a payment provider.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage
Conflict
{- "memberId": "15BE85AB-CD61-4A23-8C22-0981AD35DBD1S2010",
- "token": "2A9ACDD0-9113-4EF4-8EA9-FD343E040EE9"
}
Retrives a member by card token
This method requires an integration with a payment provider.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage
{- "data": {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "externalId": "string",
- "mobilePhone": "+4712345678",
- "email": "test@test.com",
- "firstName": "string",
- "lastName": "string",
- "address": "Kongens gate 21",
- "zip": 1010,
- "city": "Oslo",
- "country": "NO",
- "birthDate": "2007-01-01T00:00:00",
- "gender": "Female",
- "favoriteStores": [
- "S100"
], - "interests": [
- "Sports"
], - "loyalty": {
- "points": 500,
- "pointsActive": 300,
- "pointsPending": 200,
- "pointsExpired": 100,
- "pointsTotal": 600,
- "loyaltyCards": [
- {
- "id": "4",
- "namn": "Black coffee",
- "total": 6,
- "count": 3,
- "imageUrl": "cdn.oculos.no/coffee_clip3.png",
- "extendedProperties": {
- "additionalProp1": { },
- "additionalProp2": { },
- "additionalProp3": { }
}
}
]
}, - "promotions": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
], - "consents": {
- "acceptsTerms": true,
- "acceptsEmail": true,
- "acceptsSms": true,
- "extendedConsents": [
- {
- "id": "string",
- "value": true,
- "name": "string",
- "description": "string",
- "consentDate": "string"
}
]
}, - "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}, - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
Method that returns a list of all payment cards attached to a member. If there are no cards attached to the member, an empty list will be returned.
This method requires an integration with a payment provider.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage
{- "data": [
- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "cardId": "223b6c7f-0961-4efb-9a99-6e20f00a7897",
- "token": "999999999999999999",
- "cardName": "Visa",
- "cardData": "05/2025",
- "maskedCardNo": "",
- "displayCardName": "DNB Visa",
- "displayCardData": "05/2025"
}
], - "metaData": {
- "CreatedAt": "2023-01-01 15:15:00",
- "UpdatedAt": "2023-01-05 15:15:00"
}
}
Method used to create a payload that can be used to trigger a new card registration process.
This metod requires addional services, please contact your advisor for more information.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "source": "ECOM",
- "provider": "Verifone",
- "data": {
- "firstName": "John",
- "lastName": "Doe",
- "email": "test@test.com",
- "mobilePhone": "+4712345678"
}
}
Endpoint used for calculating a new price on a cart based on current campaigns and/or a members available:
As both the request and response is fully dynamic, the format of the data exchanged has to be agreed upon before activating.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "cartId": "934E2183-5004-45B0-8E75-A5178F1DEEF1"
}
Endpoint used for calculating a new price on a cart based on current campaigns and/or a members available:
As both the request and response is fully dynamic, the format of the data exchanged has to be agreed upon before activating.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "cartId": "934E2183-5004-45B0-8E75-A5178F1DEEF1"
}
This API provides various methods for managing promotions.
Clients can retrieve available promotions id or phone number, redeem promotions, and view redeemed ones.
Returns a list of all available promotions for a member.
Success
Bad Request
Forbidden - this method requires activation and configuration from Oculos
Not Found - no coupons available
[- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
]
Returns a list of all available promotions for a member by using the mobile phone number
Success
Bad Request
Forbidden - this method requires activation and configuration from Oculos
Not Found - no coupons available
[- {
- "id": "2457B03E-9925-45E9-B551-25F10D7BD4F2",
- "type": "Promotion",
- "name": "Welcome coupon",
- "available": true,
- "description": "This is a coupon that gives the customer 10% discount on any product",
- "urlLink": "Link to the promotion",
- "validFrom": "2024-04-03T07:38:32.495Z",
- "validTo": "2024-04-03T07:38:32.495Z",
- "unlimitedRedemption": false,
- "redemptionLimit": 5,
- "redemptionCount": 1,
- "productsIncluded": [
- {
- "id": 123,
- "type": "description"
}
], - "productsExcluded": [
- {
- "id": 123,
- "type": "description"
}
], - "storesIncluded": [
- {
- "id": "S-001"
}
], - "redemptionChannels": [
- {
- "type": "POS",
- "valueType": "PERCENT",
- "value": 10,
- "message": "Only applies to members"
}
], - "redemptionHistory": [
- {
- "storeId": "S-1001",
- "receiptId": "120C4CF0-1923-4737-8096-A6E8A89F9574",
- "redeemDateTime": "2024-04-03T07:38:32.495Z"
}
]
}
]
Method that redeems a promotion for a customer.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Not Found - promotion was not found
{- "id": "71E8AC01-152D-4B2E-956A-3656CD3396AE",
- "storeId": "STORE-001",
- "cashRegisterId": "POS-001",
- "cashierId": "123",
- "customerId": "3477B4C3-5E2E-4007-9C26-41E60FECB016",
- "receiptId": "RECEIPT_001",
- "extendedProperties": {
- "additionalProp1": "string",
- "additionalProp2": "string",
- "additionalProp3": "string"
}
}
Method that returns a list of redeemed promotions for a customer.
Example of usage; ??
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Not Found - coupon was not found
[- {
- "couponId": "0D23E714-E09C-457E-8D4D-CC3DCCCC8698",
- "description": "20% member discount"
}
]
Return promotions based on shopping cart
OK
Bad Request
Unauthorized
Function Not Found
{- "customerId": "15BE85AB-CD61-4A23-8C22-0981AD35DBD1S2010",
- "storeId": "STORE001",
- "receiptId": "08580DEE-C3B8-4808-8A9A-1CE9F8096B52",
- "articles": [
- {
- "articleId": "string",
- "price": 0,
- "quantity": 0
}
]
}
{- "field1": "This is a string",
- "field2": 123,
- "field3": "Another string"
}
This method is fully dynamic both in request/response and is available for specific client customizations on the promotions endpoint.
OK
Bad Request
Unauthorized
Function Not Found
{- "field1": "This is a string",
- "field2": 123,
- "field3": "Another string"
}
This method allows a specific promotion to be used (redeemed) by a specific customer again, if it previously has been disabled using the disableUse
method.
As default, promotions are set to available/enabled for use when assigned to a customer.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage.
Disable the possiblity for a specific promotion to be used (redeemed) by a specific customer.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos before usage.
Endpoint that provides method(s) for returning various types of reports. Reports could be either of standard type or could be individually configured for clients.
Examples of reports:
Some reports that have a high volume response, may return the result in pages. This requires the client to iterate through each page to fetch the entire result.
In reports with paging functionality, a metaData object will contain paging information:
{
"metaData": {
"reportType": "customers",
"totalRecords": 12,
"totalPages": 1,
"activePage": 1
}
}
totalRecords
= Number of records available through all pagestotalPages
= How many pages available containing dataactivePage
= Which page the client is onTo control wich page to fetch data from and how many records that should be return on each page use querystring parameters.
page
= from wich page should the dataset be fetched from (default = 1)rowsPage
= how many results per page that should be returned (default = 25)Please contact us for further information on your possiblites.
Method that returns different types of reports based on input parameters and/or querys. Input parameters and/or querys are fully dynamic and can vary between clients.
For a complete list of parameters and example of response in your implemenation, please contact our support team.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Endpoint for getting all client stores, both physical and online.
Default properties are id and name.
Depending on the clients data, there may be additional data available under the extendedProperties object.
OK
Unauthorized
[- {
- "id": "STORE-001",
- "name": "string",
- "extendedProperties": {
- "externalId": "10001",
- "address": "Kongens gate 21",
- "zip": "0153",
- "city": "Oslo"
}
}
]
Returns all transactions for a member.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Member Not Found
[- {
- "receiptId": "122014",
- "receiptDate": "2023-10-03T19:00:53",
- "storeId": "332",
- "storeName": "Our main store",
- "grossAmount": 979.3,
- "vat": 195.86,
- "netAmount": 783.44,
- "discount": 0,
- "rows": [
- {
- "lineNo": "1",
- "productId": "7049987090935",
- "productName": "Black jacket",
- "productGroupLevel1Name": "Clothes",
- "productGroupLevel2Name": "Jackets",
- "quantity": 1,
- "grossAmount": 979.3,
- "vat": 195.86,
- "netAmount": 783.44,
- "discount": 0,
- "transactionType": "PURCHASE"
}
]
}
]
Endpoint used for inserting transactions into OIP.
It is recommended to send in a list/batch of transactions instead of sending multiple single transactions. The maximum recommended items per batch is around 400 transactions/items.
Example of transaction flagged as a return:
{
"ReceiptRequests": [
{
"Header": {
"StoreId": "001",
"ReceiptId": "9999258836",
"TimeStamp": "2023-10-13T14:50:05",
"ConsumerId": "9ae37ad3-8a55-4bb5-81fd-b08f00b684ed",
"GrossAmount": 1817.8,
"Vat": 363.56
},
"Items": [
{
"ReceiptId": "Id of receipt",
"LineNo": 1,
"Quantity": -1,
"ProductId": "VR1722775",
"ProductName": "MINI CHRISTMAS THREE WITH LED LIGHTS",
"GrossAmount": 1817.8,
"Vat": 363.56,
"NetAmount": 1454.24,
"TransactionType": "RETURN"
}
]
}
]
}
Array of objects |
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
{- "ReceiptRequests": [
- {
- "Header": {
- "StoreId": "001",
- "EcrId": "1",
- "ReceiptId": "9999258836",
- "TimeStamp": "2023-10-13T14:50:05",
- "ConsumerId": "9ae37ad3-8a55-4bb5-81fd-b08f00b684ed",
- "GrossAmount": 1817.8,
- "Vat": 363.56,
- "NetAmount": 1454.24,
- "Discount": 0,
- "Currency": "NOK",
- "PaymentString": "Any type of string",
- "Ext1": "",
- "Ext2": "",
- "Ext3": "",
- "Ext4": "",
- "Ext5": ""
}, - "Items": [
- {
- "ReceiptId": "Id of receipt",
- "LineNo": 1,
- "Quantity": 1,
- "ProductGroupLevel1Id": 45,
- "ProductGroupLevel1Name": "CHRISTMAS",
- "ProductGroupLevel2Id": 4545,
- "ProductGroupLevel2Name": "DECORACTIONS",
- "ProductGroupLevel3Id": 454545,
- "ProductGroupLevel3Name": "MINI THREES",
- "ProductId": "VR1722775",
- "ProductName": "MINI CHRISTMAS THREE WITH LED LIGHTS",
- "SupplierId": "9000",
- "SupplierName": "The christmas company",
- "GrossAmount": 1817.8,
- "Vat": 363.56,
- "NetAmount": 1454.24,
- "Discount": 0,
- "Cost": 0,
- "CampaignId": "EF5C352A-D8D8-431E-A8D6-22928F405F20",
- "TransactionType": "PURCHASE",
- "Ext1": "",
- "Ext2": "",
- "Ext3": "",
- "Ext4": "",
- "Ext5": "",
- "Ext6": "",
- "Ext7": "",
- "Ext8": "",
- "Ext9": "",
- "Ext10": ""
}
]
}
]
}
Endpoints that enables triggering automations through the API.
Automations is a feature that simplifies and speeds up repetitive tasks. It helps marketers send emails, post on social media, and manage customer data more efficiently
Methods available to trigger automations.
The automation that should be triggered also has to be configured in the marketing automation system.
As the payload can vary between triggers, the request is fully dynamic and should be posted as dictionary with key/value.
Success
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Trigger not found
{- "data": "test data"
}
"string"
Methods available to trigger automations by a configurable identificator, for example mobile phone.
The automation that should be triggered also has to be configured in the marketing automation system.
As the payload can vary between triggers, the request is fully dynamic and should be posted as dictionary with key/value.
Success
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Trigger not found
{- "data": "test data"
}
"string"
This method allows POS to trigger the Vipps recruitment process and OIP to collect store recruitment statistics.
OK
Bad Request
Unauthorized
Forbidden - this method requires activation and configuration from Oculos
Conflict
{- "mobilePhone": "91345678",
- "storeId": "STORE-001",
- "sourceName": "POS"
}