Device
Device
Fetch device info for current device given in token
Accesstoken recevied after user login with a deviceToken
Example response
Info for a device
^[A-Za-z0-9-_]+GET /v2/device HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Example response
{
"availablePaymentMethods": [
{
"allowRefund": true,
"allowSale": true,
"allowCashback": true,
"allowAmount": true,
"name": "text",
"parameters": [
{
"name": "text",
"description": "text",
"required": true,
"key": "text",
"keyType": "TEXT",
"regex": "text"
}
],
"paymentCode": "CASH",
"storePaymentMethodUid": "text",
"requirements": {
"requireCustomer": true,
"requireCustomerMobile": true,
"requireCustomerEmail": true,
"requireCustomerContact": true,
"requireExclusiveUse": true
},
"settlementCode": "text",
"visibility": "FEATURED",
"position": 1,
"description": "text"
}
],
"zeroAmountPaymentMethod": {
"allowRefund": true,
"allowSale": true,
"allowCashback": true,
"allowAmount": true,
"name": "text",
"parameters": [
{
"name": "text",
"description": "text",
"required": true,
"key": "text",
"keyType": "TEXT",
"regex": "text"
}
],
"paymentCode": "CASH",
"storePaymentMethodUid": "text",
"requirements": {
"requireCustomer": true,
"requireCustomerMobile": true,
"requireCustomerEmail": true,
"requireCustomerContact": true,
"requireExclusiveUse": true
},
"settlementCode": "text",
"visibility": "FEATURED",
"position": 1,
"description": "text"
},
"availableReasons": {
"discount": [
{
"code": "text",
"description": "text"
}
],
"return": [
{
"code": "text",
"description": "text"
}
]
},
"deviceIdentifier": "text",
"deviceUid": "text",
"storeInfo": {
"address": "text",
"city": "text",
"countryCode": "text",
"createdAt": "2026-01-01T00:00:00.000Z",
"defaultWarehouseUid": "text",
"defaultReturnWarehouseUid": "text",
"defaultDeliveryWarehouseUid": "text",
"email": "text",
"externalId": "text",
"isActive": true,
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"latitude": 1,
"longitude": 1,
"name": "text",
"postalCode": "text",
"phone": "text",
"purchaseNumberSeriesUid": "text",
"internalPurchaseNumberSeriesUid": "text",
"rmaOrderNumberSeriesUid": "text",
"customerLedgerNumberSeriesUid": "text",
"quicksaleCategoryUid": "text",
"receiptMessage": "text",
"emailReceiptMessage": "text",
"exchangenoteMessage": "text",
"exchangenoteValidDays": 1,
"salesPriceUid": "text",
"settings": [
{
"key": "VIPPS_MSN",
"value": "text"
}
],
"storeUid": "text",
"vatNumber": "text",
"voucherNumberSeriesUid": "text",
"serviceNumberSeriesUid": "text",
"hasWorkShop": false,
"organizationUid": "text",
"availableExtensions": [
{
"extensionCode": "FLOWGIFTCARD",
"name": "text"
}
],
"openingHours": {
"monday": "text",
"tuesday": "text",
"wednesday": "text",
"thursday": "text",
"friday": "text",
"saturday": "text",
"sunday": "text",
"note": "text"
},
"bankInfo": {
"accountNumber": "text",
"bankName": "text",
"iban": "text",
"swift": "text"
},
"websiteUrl": "text"
},
"tenantInfo": {
"countryCode": "text",
"createdAt": "2026-01-01T00:00:00.000Z",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"name": "text",
"pricelistUid": "text",
"tenantUid": "text",
"vatNumber": "text",
"settings": {
"allowExternalCashDrawer": false,
"autoLogout": 1,
"autoPrintReceipt": true,
"numericSkuCounter": 1,
"printCardPaymentDetails": false,
"sendInvoicesExternally": true
},
"appSettings": {
"showOutOfStockWarning": true
},
"extensions": [
{
"extensionCode": "FLOWGIFTCARD",
"name": "text",
"active": true
}
],
"assets": {
"logo": {
"url": "text",
"assetUid": "text"
},
"splash": {
"url": "text",
"assetUid": "text"
}
},
"timezone": "text",
"languageCode": "text",
"currency": {
"code": "text",
"name": "text",
"symbol": "text",
"symbolPosition": "text",
"decimalSeparator": "text",
"thousandSeparator": "text",
"cashRounding": 1
}
},
"tillInfo": {
"barcodePrinter": "text",
"cashDrawer": "text",
"createdAt": "2026-01-01T00:00:00.000Z",
"deviceIdentifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastOrderUid": "text",
"lastOrderNumber": "text",
"name": "text",
"paymentTerminal": "NONE",
"receiptPrinter": "text",
"regularPrinter": "text",
"settings": [
{
"key": "STRIPE_TERMINAL_ID",
"value": "text"
}
],
"tillUid": "text",
"tillNumber": 1,
"appSettings": {
"saleStopAtDelivery": true,
"autoLogout": 1,
"touchMode": "UNAVAILABLE"
}
},
"currencyDenominations": [
{
"currencyCode": "text",
"denomination": 1,
"material": "COIN"
}
],
"name": "text",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}Register a new device for authorization.
You should already have a clientId supplied by Flow, and you will retreive a deviceIdentifier and deviceToken in the response.
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
Example response
POST /v2/device HTTP/1.1
Host: api.flowretail.com
Content-Type: application/json
Accept: */*
Content-Length: 60
{
"clientId": "text",
"name": "text",
"systemInformation": "text"
}Example response
{
"deviceCode": "text",
"deviceIdentifier": "text",
"expires_in": 1,
"interval": 1,
"verificationUri": "text"
}Update system information for a device.
The devicetoken is only used for to attach devices and tie it to a tenant
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
No Content
No content
PUT /v2/device HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 28
{
"systemInformation": "text"
}No Content
No content
Device Authorization Flow - Authorize a device and attach it to a specific store
Accesstoken recevied after user login with a deviceToken
^[A-Za-z0-9-_]+^[A-Za-z0-9-_]+^[A-Za-z0-9-_]+OK
No content
Linking failed. Ther error message will have information about what failed.
POST /v2/device/authorize HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 89
{
"deviceCode": "text",
"storeUid": "text",
"tenantUid": "text",
"tillUid": "text",
"name": "text"
}No content
Link a physical device to a device registered in Flow.
Device code from backoffice
This is a predefined app id that Flow will provide
A user code from the tenant
The password for the user
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
Example response
The expiry time represented as a unix timestamp.
A JWT device token
Refresh token to be used to renew the token
Linking failed. Ther error message will have information about what failed.
Not found
POST /v2/device/{deviceCode}/link HTTP/1.1
Host: api.flowretail.com
Content-Type: application/json
Accept: */*
Content-Length: 79
{
"appId": "text",
"userCode": "text",
"password": "text",
"systemInformation": "text"
}{
"expires": 1,
"token": "text",
"refreshToken": "text"
}Device Authorization Flow - Request a new token
Link successfull.
Example response
Not Found
POST /v2/device/token HTTP/1.1
Host: api.flowretail.com
Content-Type: application/json
Accept: */*
Content-Length: 38
{
"appId": "text",
"refreshToken": "text"
}{
"expires": 1,
"token": "text",
"token_type": "text"
}List all users that can login to the current device.
The devicetoken is only used for to attach devices and tie it to a tenant
Defines which field the resource list is sorted by.
| ENUM | Description |
|---|---|
| ASC | Sort in ascending order |
| DESC | Sort in descending order |
The number of items per page in a result set.
Reference to a specific page in a result set.
Example response
Linking failed. Ther error message will have information about what failed.
GET /v2/device/users HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"accountType": "FULL",
"displayName": "text",
"firstname": "text",
"lastAccessed": "2026-01-01T00:00:00.000Z",
"lastname": "text",
"tenantUserUid": "text",
"userCode": "text",
"languageCode": "text"
}
],
"paging": {
"pageNumber": 1,
"pageSize": 1,
"totalCount": 1
}
}Get list of registered devices.
Required permission: TENANT.ADMIN
Token received from the auth service
Reference to a tenant.
^[A-Za-z0-9-_]+Reference to a store uid
^[A-Za-z0-9-_]+Reference to a specific page in a result set.
The number of items per page in a result set.
Defines which field the resource list is sorted by.
| ENUM | Description |
|---|---|
| ASC | Sort in ascending order |
| DESC | Sort in descending order |
Example response
GET /v2/tenants/{tenantUid}/devices HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Example response
{
"items": [
{
"createdAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"deviceUid": "text",
"identifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastModifiedBy": "text",
"lastActivityAt": "2026-01-01T00:00:00.000Z",
"lastTenantUserUid": "text",
"name": "text",
"systemInformation": "text",
"status": "ACTIVE",
"store": {
"name": "text",
"storeUid": "text",
"organizationUid": "text"
},
"deviceLinkCode": "text",
"lastOrderUid": "text",
"till": {
"tillUid": "text",
"name": "text",
"tillNumber": 1
},
"appCode": "CLIENT",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}
],
"paging": {
"pageNumber": 1,
"pageSize": 1,
"totalCount": 1
}
}Create a new device for a tenant
Accesstoken recevied after user login with a deviceToken
Reference to a tenant.
^[A-Za-z0-9-_]+^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
^[A-Za-z0-9-_]*^[A-Za-z0-9-_]*Example response
^[A-Za-z0-9-_]+A unique client identifier. This will be set when the client is linked.
The timestamp indicating the most recent date and time when the device registered any activity.
The tenantUserUid who interacted with this device most recently
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
| Enum | Description |
|---|---|
| READY_TO_LINK | The device is ready to a physical device through the link endpoint |
| ACTIVE | The device is linked and active |
| BLOCKED | The device is linked, but blocked for usage |
The code that should be used to link the device to an app
^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
Bad Request
POST /v2/tenants/{tenantUid}/devices HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 154
{
"deviceUid": "text",
"name": "text",
"appCode": "CLIENT",
"storeUid": "text",
"tillUid": "text",
"settings": [
{
"key": "text",
"value": "text"
}
],
"printerUids": [
"text"
]
}{
"createdAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"deviceUid": "text",
"identifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastModifiedBy": "text",
"lastActivityAt": "2026-01-01T00:00:00.000Z",
"lastTenantUserUid": "text",
"name": "text",
"systemInformation": "text",
"status": "ACTIVE",
"store": {
"name": "text",
"storeUid": "text",
"organizationUid": "text"
},
"deviceLinkCode": "text",
"lastOrderUid": "text",
"till": {
"tillUid": "text",
"name": "text",
"tillNumber": 1
},
"appCode": "CLIENT",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}Search Registered devices
Required permission: TENANT.ADMIN
Token received from the auth service
Reference to a tenant.
^[A-Za-z0-9-_]+Reference to a specific page in a result set.
The number of items per page in a result set.
Defines which field the resource list is sorted by.
| ENUM | Description |
|---|---|
| ASC | Sort in ascending order |
| DESC | Sort in descending order |
^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
Example response
POST /v2/tenants/{tenantUid}/devices/search HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 97
{
"name": "text",
"deviceIdentifier": "text",
"query": "text",
"appCode": "CLIENT",
"statuses": [
"ACTIVE"
]
}Example response
{
"items": [
{
"createdAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"deviceUid": "text",
"identifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastModifiedBy": "text",
"lastActivityAt": "2026-01-01T00:00:00.000Z",
"lastTenantUserUid": "text",
"name": "text",
"systemInformation": "text",
"status": "ACTIVE",
"store": {
"name": "text",
"storeUid": "text",
"organizationUid": "text"
},
"deviceLinkCode": "text",
"lastOrderUid": "text",
"till": {
"tillUid": "text",
"name": "text",
"tillNumber": 1
},
"appCode": "CLIENT",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}
],
"paging": {
"pageNumber": 1,
"pageSize": 1,
"totalCount": 1
}
}Get details for a device.
Required permission: TENANT.ADMIN
Token received from the auth service
Reference to a tenant.
^[A-Za-z0-9-_]+Reference to a device
^[A-Za-z0-9-_]+Example response
^[A-Za-z0-9-_]+A unique client identifier. This will be set when the client is linked.
The timestamp indicating the most recent date and time when the device registered any activity.
The tenantUserUid who interacted with this device most recently
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
| Enum | Description |
|---|---|
| READY_TO_LINK | The device is ready to a physical device through the link endpoint |
| ACTIVE | The device is linked and active |
| BLOCKED | The device is linked, but blocked for usage |
The code that should be used to link the device to an app
^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
GET /v2/tenants/{tenantUid}/devices/{deviceUid} HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Example response
{
"createdAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"deviceUid": "text",
"identifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastModifiedBy": "text",
"lastActivityAt": "2026-01-01T00:00:00.000Z",
"lastTenantUserUid": "text",
"name": "text",
"systemInformation": "text",
"status": "ACTIVE",
"store": {
"name": "text",
"storeUid": "text",
"organizationUid": "text"
},
"deviceLinkCode": "text",
"lastOrderUid": "text",
"till": {
"tillUid": "text",
"name": "text",
"tillNumber": 1
},
"appCode": "CLIENT",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}Update details for a device. Partial updates are allowed.
Required permission: TENANT.ADMIN
Setting the status to "READY_TO_LINK" will unlink it for the current device and create a new deviceLinkCode and a new identifier
Token received from the auth service
Reference to a tenant.
^[A-Za-z0-9-_]+Reference to a device
^[A-Za-z0-9-_]+| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| READY_TO_LINK | The device is ready to a physical device through the link endpoint |
| ACTIVE | The device is linked and active |
| BLOCKED | The device is linked, but blocked for usage |
^[A-Za-z0-9-_]*Example response
^[A-Za-z0-9-_]+A unique client identifier. This will be set when the client is linked.
The timestamp indicating the most recent date and time when the device registered any activity.
The tenantUserUid who interacted with this device most recently
Contains device name, OS, release version of OS, OS build date, like a uname -a response on linux servers
| Enum | Description |
|---|---|
| READY_TO_LINK | The device is ready to a physical device through the link endpoint |
| ACTIVE | The device is linked and active |
| BLOCKED | The device is linked, but blocked for usage |
The code that should be used to link the device to an app
^[A-Za-z0-9-_]*| Enum | Description |
|---|---|
| CLIENT | Flow Retail Client |
| ASSISTANT | Flow Retail Assistant |
| UNKNOWN | No specific app |
PUT /v2/tenants/{tenantUid}/devices/{deviceUid} HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 153
{
"name": "text",
"appCode": "CLIENT",
"storeUid": "text",
"status": "ACTIVE",
"tillUid": "text",
"settings": [
{
"key": "text",
"value": "text"
}
],
"printerUids": [
"text"
]
}Example response
{
"createdAt": "2026-01-01T00:00:00.000Z",
"createdBy": "text",
"deviceUid": "text",
"identifier": "text",
"lastModifiedAt": "2026-01-01T00:00:00.000Z",
"lastModifiedBy": "text",
"lastActivityAt": "2026-01-01T00:00:00.000Z",
"lastTenantUserUid": "text",
"name": "text",
"systemInformation": "text",
"status": "ACTIVE",
"store": {
"name": "text",
"storeUid": "text",
"organizationUid": "text"
},
"deviceLinkCode": "text",
"lastOrderUid": "text",
"till": {
"tillUid": "text",
"name": "text",
"tillNumber": 1
},
"appCode": "CLIENT",
"settings": [
{
"key": "text",
"value": "text",
"type": "STRING",
"allowedValues": [
"text"
],
"validationRegex": "text",
"name": "text",
"required": true
}
],
"printers": [
{
"printerUid": "text",
"name": "text",
"type": "LABEL"
}
]
}Deletes a device.
Required permission: TENANT.ADMIN
Token received from the auth service
Reference to a tenant.
^[A-Za-z0-9-_]+Reference to a device
^[A-Za-z0-9-_]+No Content
No content
DELETE /v2/tenants/{tenantUid}/devices/{deviceUid} HTTP/1.1
Host: api.flowretail.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No Content
No content
Last updated
Was this helpful?

