Select an item from the list at right side.

Errors

Description
JsonException Parent of all exceptions
InternalServerErrorJsonException When server can not understand what is happening. See "details" field for more info. It contains field "message" with text description.
ValidationJsonException When data are formatted incorrectly or doesn't follow business logic constraints. See the details property for more info. The "details" field has map where key is field name and value is error message.
OutdatedVersionJsonException Informs user that api doesn't work anymore. The app should be updated to newest version asap! No additional details provided.
NotImplementedJsonException Thrown by any method but make sense to catch for. Happens usually for local servers: when android device is up to date, but server is not. No additional details provided.
SellerNotFoundJsonException When seller with given country and corporate id is not found. No additional details provided.
NotFoundJsonException When service returns 404 HTTP status name. No additional details provided.
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.
ReferenceNotFoundJsonException This exception occurs when SomethingInfo dto class contains a field which references to another entity and the algorithm assumes it has to be on the server but it doesn't. See details field: it contains field "entityName" to know the id of entity which is not found and optional field "identifier" of entity which is not found.
InconsistentDataJsonException When data sent to the server is in inconsistent state. See "details" field for more info. It contains field "message" with text description.
WrongUsernameOrPasswordJsonException
ForbiddenJsonException When service returns 403 HTTP status name.
For instance if one seller is trying to acces data of another seller. Or seller is trying to reach data available for admins only. Or trying to reach public data for non-public seller.
When trying to get user info, while the authentication is by seller role.
No additional details provided.
ControlUnitReceiptJsonException Thrown when Control Unit decides something is wrong according to it's internal business logic. Thrown by the control unit itself. The details contains three fields:
  1. command
  2. response
  3. name
The name is one of the following:
  • InternLoggFull24(24)
  • InternaRaknareSaturerade23(23)
  • FaltForekommerEfterSistaCRC22(22)
  • FelaktigtForhallandeForsaljRetur21(21)
  • PowerFailAbort20(20)
  • InterntSkrivfel19(19)
  • InterntSkrivfel18(18)
  • InterntSkrivfel17(17)
  • InterntSkrivfel16(16)
  • InterntSkrivfel15(15)
  • AntalAnvandareHarOverskridits14(14)
  • FelaktigMoms4_13(13)
  • FelaktigMoms3_12(12)
  • FelaktigMoms2_11(11)
  • FelaktigMoms1_10(10)
  • FelaktigtForsaljningsbelopp9(9)
  • FelaktigtReturbelopp8(8)
  • KvittotypSaknas7(7)
  • FelaktigKvittotyp6(6)
  • FelaktigtLopnummer5(5)
  • FelaktigtKassaID4(4)
  • FelaktigtOrganisationsnummer3(3)
  • FelaktigtDatumTid2(2)
  • FelAntalArgument1(1)
  • OK0(0)
  • FelaktigLangd_1(-1)
  • CRCError_2(-2)
  • OkantKommando_3(-3)
ControlUnitUnavailableJsonException When server is unable to reach the control unit device (for instance it's ejected from the server). No additional details provided.
ControlUnitCommunicationJsonException When error has happened during transmission data to the control unit (for instance it was ejected from the server during sending the data). No additional details provided.
ControlUnitIsUsedByActivationsJsonException When trying to delete the control unit which belongs to at least one activation.
ControlUnitIsNotSetJsonException if control unit is not set for the activation specified
NotFoundJsonException when service returns 404 HTTP status code
CashRegisterNameIsNotUniqueJsonException when specified cash register name is not unique. No additional details provided.
ControlUnitIsNotSetJsonException when control unit is not set
SellerAlreadyExistsException when seller already exist in application
ValidationJsonException when basic check if input data fails. See getDetails() for more info
ActivationStillIssuedJsonException when activation is still in issue state
ActivationClosedJsonException When activation is in closed state.
InvalidETagFormatJsonException Occurs when provided ETag format is not a quoted string with version inside.
WrongActivationPeriodJsonException When activation is expired or not takes effect yet.
ServiceUnavailableJsonException Dropped by the server if server is off (for instance server is restarting or in a service mode).
UnauthorizedJsonException Dropped by server when user tries access resource without any authentications.

Types

TypeDescription
identifierTypestring [1..50] ( ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\.\.?)$)[^\x00-\x1f\\?*:\";|/<>]+$ ) Each entity has to be identified. Server generates identifiers for every entity.
corporateIdTypestring [..95] ( ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\.\.?)$)[^\x00-\x1f\\?*:\";|/<>]+$ )
sellerIdTypestring Unique identifier of every Seller. Format is {country}{corporateId}. Where {country} is two digit country name (e.g. "se" - Sweden). Format of {corporateId} is country specific.
printTypeEnumOne of the following values: 'Normal', 'Copy', 'Proforma' The type of receipt print
controlUnitLocationTypeOne of the following values: 'DEVICE', 'REMOTE' Where control unit is connected and how
countryTypestring [2..2] Country where seller with given corporateId is registered
cashRegisterNameTypestring [..16] Described in swedish regulations as "cash register designation". See Terms for more info. There is a method /noauth/activations/cash-register-name/existance to check the existance of that name on the server
roleTypeOne of the following values: 'ROLE_HYPER_ADMIN', 'ROLE_SOFTWARE_VENDOR_ADMIN', 'SELLER_ADMIN', 'ACTIVATION' User role
activationStatusTypeOne of the following values: 'ISSUED', 'ACTIVE', 'WORKING', 'CLOSED'
imageVersionTypeOne of the following values: 'current', 'version'
sellerFieldsTypeOne of the following values: 'COUNTRY', 'NAME'
ticketCategoryTypeOne of the following values: 'CONTROL_UNIT_BROKEN', 'ACTIVATION_ISSUED', 'CONTROL_UNIT_ADDRESS_CHANGED'
ticketStatusTypeOne of the following values: 'OPEN', 'CLOSED'
salesUnitTypeOne of the following values: 'Piece', 'Price', 'Kilogram', 'Hektogram', 'Meters', 'Centimeters', 'Hours', 'Minutes'
changeBalanceActionTypeOne of the following values: 'DEPOSIT', 'WITHDRAWAL'
deviceFormFactorTypeOne of the following values: 'PHONE', 'TABLET_SMALL', 'TABLET_BIG'
saleStateTypeOne of the following values: 'Open', 'Paid', 'Cancelled', 'Complete'
printTypeOne of the following values: 'Normal', 'Copy', 'Proforma'
deliveryTypeOne of the following values: 'Display', 'Print', 'SMS', 'Email', 'Discard', 'Journal'
paymentTypeOne of the following values: 'Cash', 'Card', 'WyWallet', 'PayEx', 'SEQR', 'AirPay', 'ClosePayment'
paymentStateTypeOne of the following values: 'SENDING', 'SENDING_FAILED', 'PENDING', 'APPROVED', 'REJECTED', 'PAUSED', 'CANCELLED', 'CHARGE_FAILED', 'CHARGE_UNKNOWN'
keyActionTypeOne of the following values: 'Product', 'SaleItemsView', 'POSSaleItemsView', 'Camera', 'InitiateReturn', 'InitSaleCash', 'InitSaleCard', 'InitSaleAirpay', 'InitSaleSEQR', 'InitSaleIZettle', 'InitSaleWyWallet', 'InitSalePayex', 'SubKeyboard', 'Numeric1', 'Numeric2', 'Numeric3', 'Numeric4', 'Numeric5', 'Numeric6', 'Numeric7', 'Numeric8', 'Numeric9', 'Numeric0', 'Numeric00', 'CurrencyUnit', 'ProductUnit', 'NumericReset', 'NumericDot', 'NumericBackspace', 'NumericIndicator', 'PercentDiscount', 'CurrencyDiscount', 'SendOrder', 'GetOrders', 'SubtotalIndicator', 'ProductsSearchView', 'GroupsProductsView', 'GroupsProductsTextView', 'TablesProductsView', 'TablesProductsTextView', 'NetworkIndicator', 'PrintProforma'
activationFeatureTypeOne of the following values: 'VOUCHERS', 'SEQR', 'WYWALLET', 'PAYEX', 'CLOSEPAYMENT', 'AIRPAY', 'SUPPORT', 'SYNCRONIZATION', 'MULTIUSERS', 'IZETTLE'
autoActivationConditionTypeOne of the following values: 'NEVER', 'ALWAYS', 'NO_FEATURES' This condition defines use or not use the auto activation.
corporateIdValidationMethodTypeOne of the following values: 'NONE', 'VALIDATE_SWEDISH'

GET /v15/auth/handshake

This method is very useful to check authentication. Call it to make sure you are successfully authenticated.

Request

Response

GET /v15/auth/handshake HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK
Description
SellerNotFoundJsonException When seller with given country and corporate id is not found. No additional details provided.

GET /v15/auth/user

Get user info.

Request

Response

GET /v15/auth/user HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Non-public information of user for super admins. It has password hash. */ 'deleted': 'false', // True if entity was deleted..
'username': 'username', // Regular field.. String. Minimum 1 characters. Maximum 50 characters. May NOT be null.
'email': 'mail@username.com', // User's email.. String. Minimum 6 characters. Maximum 50 characters. Regular expression /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; . May NOT be null.
'role': 'ROLE_SOFTWARE_VENDOR_ADMIN', // roleType. May NOT be null.
'softwareVendor': null, // If role == ROLE_HYPER_ADMIN, then null. If role == ROLE_SOFTWARE_VENDOR_ADMIN, then not null. . Integer. May be null.
'password': '9999' // String. Maximum 200 characters. May NOT be null.
}
Description
WrongUsernameOrPasswordJsonException
SellerIsNotFoundJsonException When seller with given country and corporate id is not found. No additional details provided.

POST /v15/noauth/activations/generate-production-number

If current application does not (yet) have a ProductionNumber, it uses this url to get a new one

Request

Response

POST /v15/noauth/activations/generate-production-number HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Provides info about device */ 'deviceId': '111AAA222BBB3-022', // Unique number of every Device. String. Minimum 1 characters. Maximum 17 characters. May NOT be null.
'buildInfo': {'KEY1':'VALUE1', 'KEY2':'VALUE2'}, // Information about the device. For instance for Android it can be taken from android.os.Build . A complex object. May be null.
'applicationPackage': 'com.pos4mobile', // A unique identifier of the software, but not it's version. For instance for Android it can be getPackageName() . String. Maximum 120 characters. May NOT be null.
'gcmRegistrationId': null // An identifier of the device on Google Cloud Message service. String. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{ 'productionNumber': 'TEST100000000000000000081' // ProductionNumber - serial number uniquely identifies instance of the Installation. It represents production number of cash register according to Swedish regulations. It has format "{softwareId}{number}". It must be unique number through the entire world. According to swedish regulation, the definition is: Each cash register must have a production number. Production number is a globally unique serial number on physical cash registers. Production number has to be unique for each cash register from one vendor and should also indicate vendor as a part of the field . String. Maximum 25 characters. May NOT be null.
}
Description
ReferenceNotFoundJsonException If applicationPackage in request body wasn't found.

POST /v15/noauth/activations/order-activation

If current application does not have Activation, or Activation expires soon, the app uses this method to request (order) a new one

Request

Response

POST /v15/noauth/activations/order-activation HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* An order sent from end customer to srv4pos sales team to request an activation */ 'installationOrderInfo': {/* Provides info about device */ 'deviceId': '111AAA222BBB3-022', // Unique number of every Device. String. Minimum 1 characters. Maximum 17 characters. May NOT be null.
'buildInfo': {}, // Information about the device. For instance for Android it can be taken from android.os.Build . A complex object. May be null.
'applicationPackage': 'com.pos4mobile', // A unique identifier of the software, but not it's version. For instance for Android it can be getPackageName() . String. Maximum 120 characters. May NOT be null.
'gcmRegistrationId': null // An identifier of the device on Google Cloud Message service. String. May be null.
}, // At which device this activation should work. A complex object. May NOT be null.
'productionNumber': 'TEST100000000000000000081', // ProductionNumber - serial number uniquely identifies instance of the Installation. It represents production number of cash register according to Swedish regulations. It has format "{softwareId}{number}". It must be unique number through the entire world. According to swedish regulation, the definition is: Each cash register must have a production number. Production number is a globally unique serial number on physical cash registers. Production number has to be unique for each cash register from one vendor and should also indicate vendor as a part of the field . String. Maximum 25 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'companyName': 'MyExampleCompanyName', // String. May NOT be null.
'contactInfo': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
}, // Information about person who orders an activation. So sales team can contact him with invoice. . A complex object. May NOT be null.
'activationDetailsInfo': {/* Information about activation period (when and which features are activated, per which period). */ 'validFrom': 1414800000000, // When activation starts being active. Date: amount of milliseconds since UNIX epoch. May NOT be null.
'validTo': 1446336000000, // When activation ends being active. Date: amount of milliseconds since UNIX epoch. May NOT be null.
'features': [], // List of features. activationFeatureType. May NOT be null.
'controlUnitLocation': 'DEVICE', // Where control unit is connected and how. controlUnitLocationType. May NOT be null.
'controlUnitSerialNumber': null // Serial number of contorl unit. It is null if "controlUnitLocation" == 'REMOTE' or application doesn't support control units. Otherwise it might be null too . String. May be null.
}, // A complex object. May NOT be null.
'deviceLocation': {/* Just simple address structure. */ 'address': 'address', // String. May NOT be null.
'city': 'Koenig', // String. May NOT be null.
'postalCode': '45664' // String. May NOT be null.
}, // Where device (with control unit) is located. This information is sent to taxation authority. This field is set when customer makes an order and "controlUnitLocation" == 'DEVICE'. If this field is set and sales person makes an activation, he must check it's validity because it's content will be copied to controlUnit geolocation and will be applied for all the sellers connected to this control unit . A complex object. May be null.
'cashRegisterName': 'Cash1', // cashRegisterNameType. May NOT be null.
'comment': '' // Any information which user would like to tell to sales at srv4pos. String. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8 /* unqiue secure random identifier which represents activation ordered */
{ 'activationSecurityToken': 's854kfsdgfwqeigr23iu4ry9efh2o398y1r2y3hr' // Securely randomly generated number, represents the order. It has to be passed to the server to get an activation based on the order made . String. May NOT be null.
}
Description
ReferenceNotFoundJsonException if device withdeviceId, installation with applicationPackage or control unit with controlUnitSerialNumber weren't found
CashRegisterNameIsNotUniqueJsonException if cash register name is not unique within a seller
InconsistentDataJsonException if sent data in inconsistent (e.g. when production number doesn't belong to given device ID)
ValidationJsonException if corporateId is not ok or other required fields are wrong or provided data is incorrect (see message inside for more info)

POST /v15/noauth/activations/cash-register-name/existance

Checks that cash register name is unique for particular seller

Request

Response

POST /v15/noauth/activations/cash-register-name/existance HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Parameters passed to ActivationService#cashRegisterNameExists(CashRegisterNameExistsInfo) */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'cashRegisterName': 'Cash1' // cashRegisterNameType. May NOT be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{ 'exists': false // True if cash register with given name is already registered for particular seller. Boolean. May NOT be null.
}

GET /v15/activations/activation-code

This method requires credentials and returns Activation Code for provided credentials

Request

Response

GET /v15/activations/activation-code HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'activationInfoVersion': 2, // Version of data structure, returned by/activations/activation-code. The device has to support all the previous versions to avoid reactivation. Also this version changes when public/private key for "signature" generation is changed, or algorithm of serializing "activationDescriptorInfo" is changed. Right now it is 2 . Integer. May NOT be null.
'activationDescriptorInfo': 'TODO show json here', // Json serialized data returned by /activations/activation-code . String. May NOT be null.
'signature': 'TODO show signature here' // Digital signature of activationDescriptorInfo . String. May NOT be null.
}

GET /v15/activations/{activationId}

Returns an entity
activationIdidentifierType Activation identifier

Request

Response

GET /v15/activations/ HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Advanced information about activation which covers some fields by expanded structures. */ 'activationInfo': {/* Represents server-side entity available for admin. */ 'id': 4567, // Integer. May NOT be null.
'status': 'ISSUED', // activationStatusType. May NOT be null.
'issued': 14472336592, // This field is set by activation server internal logic every time we do an action with the activation . Date: amount of milliseconds since UNIX epoch. May NOT be null.
'controlUnitLocation': 'REMOTE', // controlUnitLocationType. May NOT be null.
'validFrom': 23, // Integer. May NOT be null.
'validTo': 67, // Integer. May NOT be null.
'sellerName': 'Test', // This field is set when customer makes an order. When order is approved by sales person this field will be written into the Seller. . String. Maximum 96 characters. May NOT be null.
'controlUnitId': 1, // Integer.
'controlUnitGeolocation': {/* Just simple address structure. */ 'address': 'address', // String. May NOT be null.
'city': 'Koenig', // String. May NOT be null.
'postalCode': '45664' // String. May NOT be null.
}, // A complex object.
'contact': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
}, // A complex object. May NOT be null.
'comment': '', // String. Maximum 1024 characters.
'features': [] // List of features. activationFeatureType. May NOT be null.
}, // A complex object. May NOT be null.
'controlUnitInfo': {/* Represents server-side entity available for admin. */ 'id': 77, // Integer. May be null.
'registrationDate': 14472336592, // Date: amount of milliseconds since UNIX epoch. May be null.
'controlUnitLocation': '', // controlUnitLocationType. May NOT be null.
'serial': '56778945332455', // Identifier of control unit.. String. Minimum 1 characters. Maximum 20 characters. May NOT be null.
'geolocation': {/* Just simple address structure. */ 'address': 'address', // String. May NOT be null.
'city': 'Koenig', // String. May NOT be null.
'postalCode': '45664' // String. May NOT be null.
}, // A complex object. May be null.
'softwareVendor': // Identifier of SoftwareVendor who owns this controlUnit. Integer. May be null.
}, // A complex object.
'registrationAdvancedInfo': {/* Represents server-side entity available for admin. */ 'registrationInfo': { 'id': 654, // Integer. May NOT be null.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'country': 'se', // String. Minimum 2 characters. Maximum 2 characters. May NOT be null.
'corporateId': '345342356', // corporateIdType. May NOT be null.
'installationId': 8764444578 // Integer. May NOT be null.
}, // A complex object. May NOT be null.
'sellerInfo': { 'corporateId': '1231231231', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'publicAccess': true, // Boolean. May NOT be null.
'description': 'description', // String. Maximum 1024 characters. May be null.
'city': 'Koenig', // String. Maximum 255 characters. May be null.
'workHours': '24', // String. Maximum 255 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text' // String. Maximum 65535 characters. May be null.
}, // A complex object. May NOT be null.
'installationAdvancedInfo': {/* This entity provides info about android device. */ 'installationInfo': {/* This entity provides info about android device. */ 'id': 654353, // Integer. May be null.
'registrationDate': 45672345, // Date: amount of milliseconds since UNIX epoch.
'deviceId': 465, // Integer. May NOT be null.
'applicationPackage': 'package', // String. Maximum 120 characters. May NOT be null.
'productionNumber': 'TEST100000000000000000081' // String. Maximum 25 characters.
}{/* This entity provides info about android device. */ 'id': , // Integer.
'registrationDate': , // Date: amount of milliseconds since UNIX epoch.
'deviceId': , // Integer.
'applicationPackage': '', // String. Maximum 120 characters.
'productionNumber': '', // String.
'gcmRegistrationId': '' // String. Minimum 1 characters.
}, // A complex object. A complex object.
'deviceInfo': {/* This entity provides info about android device. */ 'id': 5432, // Integer.
'deviceId': '34565673' // Unique number of every android device.. String. Minimum 1 characters. Maximum 17 characters. May NOT be null.
}, // A complex object.
'applicationDescriptionInfo': {/* Information about person. */ 'applicationPackage': ' package', // String.
'productionNumberPrefix': 'pre', // String.
'controlUnitRequired': true, // Boolean.
'name': 'test name', // String.
'softwareVendor': , // Integer.
'autoActivationCondition': 'NEVER', // autoActivationConditionType.
'corporateIdValidationMethod': 'NONE' // corporateIdValidationMethodType.
} // A complex object.
} // A complex object. May NOT be null.
}, // A complex object. May NOT be null.
'issued': 124534242, // Date: amount of milliseconds since UNIX epoch.
'registrationAdvanced': '' //
}

POST /v15/pospluses/kd

Sends data to control unit.

Request

Response

POST /v15/pospluses/kd HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'brutto': 1000, // Integer. May NOT be null.
'vatRateToSum': {'6':1000}, // A javascript object. The key - tax value. The value - the sum. E.g. 20.12 SEK splitted between 12.05 SEK for VAT 6% and 10.07 SEK for VAT 12% will do {'6': 1205, '12': 1007} . A complex object. May NOT be null.
'refund': false, // Boolean. May NOT be null.
'printType': 'Normal', // printTypeEnum. May NOT be null.
'receiptNumber': 1, // Autoincrement receipt number within one POS terminal. Integer. May be null.
'date': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May NOT be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{ 'response': 'K34P72NUH7A3HST7HY7EF6RUWJLLWVOC; MKFXCN7ENWYJS4KRP3JJ3KG64M', // String. May NOT be null.
'controlUnitSerial': 'PTEST000000000001' // String. May NOT be null.
}
Description
ControlUnitReceiptJsonException Thrown when Control Unit decides something is wrong according to it's internal business logic. Thrown by the control unit itself. The details contains three fields:
  1. command
  2. response
  3. name
The name is one of the following:
  • InternLoggFull24(24)
  • InternaRaknareSaturerade23(23)
  • FaltForekommerEfterSistaCRC22(22)
  • FelaktigtForhallandeForsaljRetur21(21)
  • PowerFailAbort20(20)
  • InterntSkrivfel19(19)
  • InterntSkrivfel18(18)
  • InterntSkrivfel17(17)
  • InterntSkrivfel16(16)
  • InterntSkrivfel15(15)
  • AntalAnvandareHarOverskridits14(14)
  • FelaktigMoms4_13(13)
  • FelaktigMoms3_12(12)
  • FelaktigMoms2_11(11)
  • FelaktigMoms1_10(10)
  • FelaktigtForsaljningsbelopp9(9)
  • FelaktigtReturbelopp8(8)
  • KvittotypSaknas7(7)
  • FelaktigKvittotyp6(6)
  • FelaktigtLopnummer5(5)
  • FelaktigtKassaID4(4)
  • FelaktigtOrganisationsnummer3(3)
  • FelaktigtDatumTid2(2)
  • FelAntalArgument1(1)
  • OK0(0)
  • FelaktigLangd_1(-1)
  • CRCError_2(-2)
  • OkantKommando_3(-3)
InconsistentDataJsonException If something strange happens (e.g. when you are trying to send data from the application which is not intended to work with control units). See "details" field and it's field "message" for more details. This error is thrown only when your code is incorrect, should never happen on production, so just rethrow it to your global error handler as an error of developer.
ControlUnitUnavailableJsonException When server is unable to reach the control unit device (for instance it's ejected from the server). No additional details provided.
ControlUnitCommunicationJsonException When error has happened during transmission data to the control unit (for instance it was ejected from the server during sending the data). No additional details provided.

GET /v15/sellers/{sellerId}

Get latest information about seller from the server.
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/sellers/se9876543210 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'corporateId': '1231231231', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'publicAccess': true, // Boolean. May NOT be null.
'description': 'description', // String. Maximum 1024 characters. May be null.
'city': 'Koenig', // String. Maximum 255 characters. May be null.
'workHours': '24', // String. Maximum 255 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text' // String. Maximum 65535 characters. May be null.
}

POST /v15/sellers

Send information about seller to the server to store it.

Request

Response

POST /v15/sellers HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'corporateId': '1231231231', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'publicAccess': true, // Boolean. May NOT be null.
'description': 'description', // String. Maximum 1024 characters. May be null.
'city': 'Koenig', // String. Maximum 255 characters. May be null.
'workHours': '24', // String. Maximum 255 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/version

Returns latest version of this seller
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/se9876543210/version HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'version': 0 // Version number. Integer. Minimum 0. May NOT be null.
}

PUT /v15/sellers/{sellerId}

Send information about seller to the server to store it
sellerIdsellerIdType Identifier of seller

Request

Response

PUT /v15/sellers/se9876543210 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'corporateId': '1231231231', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'publicAccess': true, // Boolean. May NOT be null.
'description': 'description', // String. Maximum 1024 characters. May be null.
'city': 'Koenig', // String. Maximum 255 characters. May be null.
'workHours': '24', // String. Maximum 255 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.

DELETE /v15/sellers/{sellerId}

Remove seller and all information that concerns seller.
sellerIdsellerIdType Identifier of seller

Request

Response

DELETE /v15/sellers/se9876543210 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

GET /v15/sellers

Returns list of entities.
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/sellers HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of items to be added, edited or deleted (actually, only created) */
{ 'corporateId': '1231231231', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'publicAccess': true, // Boolean. May NOT be null.
'description': 'description', // String. Maximum 1024 characters. May be null.
'city': 'Koenig', // String. Maximum 255 characters. May be null.
'workHours': '24', // String. Maximum 255 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text' // String. Maximum 65535 characters. May be null.
}

GET /v15/{sellerId}/stats

Gets an information about availability of local control units, expiration of activation.
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/se9876543210/stats HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Information about availability of local control units and activation expiration.Б. */ 'hasLocalControlUnits': TRUE, // True if at least one used activation has local control unit. Boolean. May be null.
'expiredActivations': , // Amount of "latest installations" (Device.latest) with latest activation date less then TODAY. Integer. May be null.
'expireSoonActivations': , // Amount of "latest installations" (Device.latest) with latest activation date more TODAY and less TODAY + 1 MONTH. Integer. May be null.
'hasTables': false, // Always false. Boolean. May be null.
'hasAdditives': false, // Always false. Boolean. May be null.
'hasAdditiveClasses': false // Always false. Boolean. May be null.
}

GET /v15/{sellerId}/seller-images-diff/{versionFrom}/{versionTo}

Returns list of seller pictures changes between two versions.
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/seller-images-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Information about product's picture */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'filename': 'MAIN.PNG', // Filename of picture. String. Minimum 1 characters. Maximum 50 characters. Regular expression ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\.\.?)$)[^\x00-\x1f\\?*:\";|/<>]+$ . May NOT be null.
'version': 12345, // Version of picture (to be able to get old version). Integer. May NOT be null.
'entityIdentifier': '12345', // This field unique identifies product. identifierType. May NOT be null.
'modified': 78953145421 // Last modified date. Date: amount of milliseconds since UNIX epoch. May NOT be null.
}

GET /v15/{sellerId}/images

Returns body of the picture
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/se9876543210/images HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images */
[ 'paths': 'se9876543210/images/current/MAIN.PNG' //
]

GET /v15/{sellerId}/images/current/{pictureFilename}

Returns body of the picture
sellerIdsellerIdType Identifier of seller
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

GET /v15/{sellerId}/images/{pictureVersion}/{pictureFilename}

Returns body of the picture for particular version number.
sellerIdsellerIdType Identifier of seller
pictureVersionimageVersionType Version of picture
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/images/10/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

PUT /v15/{sellerId}/images/current/{pictureFilename}

Send picture to the server.
sellerIdsellerIdType Identifier of seller
pictureFilenameidentifierType Just a normal windows filename

Request

Response

PUT /v15/se9876543210/images/current/MAIN.PNG HTTP/1.1 Content-Type: image/png Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
ReferenceNotFoundJsonException If seller wasn't found.
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.

DELETE /v15/{sellerId}/images/current/{pictureFilename}

Deletes specified picture.
sellerIdsellerIdType Identifier of seller
pictureFilenameidentifierType Just a normal windows filename

Request

Response

DELETE /v15/se9876543210/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

POST /v15/{sellerId}/taxes

Create tax on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/taxes HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': null, // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 1, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class Generated unique identifier */ 'identifier': '0-2U0Z' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

PUT /v15/{sellerId}/taxes/{identifier}

Put tax to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType identifies entity

Request

Response

PUT /v15/se9876543210/taxes/0-2U0Z HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U0Z', // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 10, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Tax 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/taxes/{identifier}

Returns an entity. Don't need an authorization.
sellerIdsellerIdType Identifier of seller
identifieridentifierType identifies entity

Request

Response

GET /v15/se9876543210/taxes/0-2U0Z HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* Null if not modified since version or entity. If version is null then return value can not be null */
{ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U0Z', // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 10, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Tax 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
}
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found
ForbiddenJsonException If seller is not public

DELETE /v15/{sellerId}/taxes/{identifier}

Delete tax from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType identifies entity

Request

Response

DELETE /v15/se9876543210/taxes/0-2U0Z HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/taxes-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions.
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/taxes-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'se9876543210', // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 10, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Tax 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
}

GET /v15/{sellerId}/taxes

Returns list of entities.
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/taxes HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'se9876543210', // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 10, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Tax 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
}

POST /v15/{sellerId}/categories

Create category on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/categories HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': null, // identifierType. May be null.
'name': 'Test' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8 /* Generated unique identifier */
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U10' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

PUT /v15/{sellerId}/categories/{identifier}

Put category to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Category identifier

Request

Response

PUT /v15/se9876543210/categories/0-2U10 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U10', // identifierType. May be null.
'name': 'Test1' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/categories/{identifier}

Returns an entity
sellerIdsellerIdType Identifier of seller
identifieridentifierType Category identifier

Request

Response

GET /v15/se9876543210/categories/0-2U10 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* Null if not modified since version or entity. If version is null then return value can not be null */
{ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U10', // identifierType. May be null.
'name': 'Test1' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found

DELETE /v15/{sellerId}/categories/{identifier}

Delete category from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Category identifier

Request

Response

DELETE /v15/se9876543210/categories/0-2U10 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/categories-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions.
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/categories-diff/2211/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': 'se9876543210', // identifierType. May be null.
'name': 'Category name' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}

GET /v15/{sellerId}/categories

Returns list of entities.
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/categories HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': 'se9876543210', // identifierType. May be null.
'name': 'Category name' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}

GET /v15/{sellerId}/category-images-diff/{versionFrom}/{versionTo}

Returns list of seller pictures changes between two versions.
sellerIdsellerIdType Identifier of seller
versionFromimageVersionType Min boundary version (included) for diff
versionToimageVersionType Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/category-images-diff/0/99999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Information about product's picture */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'filename': 'test', // Filename of picture. String. Minimum 1 characters. Maximum 50 characters. Regular expression ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\.\.?)$)[^\x00-\x1f\\?*:\";|/<>]+$ . May NOT be null.
'version': 12345, // Version of picture (to be able to get old version). Integer. May NOT be null.
'entityIdentifier': '12345', // This field unique identifies product. identifierType. May NOT be null.
'modified': 78953145421 // Last modified date. Date: amount of milliseconds since UNIX epoch. May NOT be null.
}

GET /v15/{sellerId}/categories/{categoryIdentifier}/images

Returns picture paths
sellerIdsellerIdType Identifier of seller
categoryIdentifieridentifierType Category identifier

Request

Response

GET /v15/se9876543210/categories/0-2U10/images HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images */
[ 'paths': 'se9876543210/categories/0-2U10/images/current/MAIN.PNG' //
]

GET /v15/{sellerId}/categories/{categoryIdentifier}/images/current/{pictureFilename}

Returns body of the picture
sellerIdsellerIdType Identifier of seller
categoryIdentifieridentifierType Category identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/categories/0-2U10/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

GET /v15/{sellerId}/categories/{categoryIdentifier}/images/{pictureVersion}/{pictureFilename}

Returns body of the picture for particular version number.
sellerIdsellerIdType Identifier of seller
categoryIdentifieridentifierType Category identifier
pictureVersionimageVersionType Version of picture
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/categories/0-2U10/images/12345/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

PUT /v15/{sellerId}/categories/{categoryIdentifier}/images/current/{pictureFilename}

Send picture to the server.
sellerIdsellerIdType Identifier of seller
categoryIdentifieridentifierType Category identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

PUT /v15/se9876543210/categories/0-2U10/images/current/MAIN.PNG HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
ReferenceNotFoundJsonException If seller wasn't found.
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.

DELETE /v15/{sellerId}/categories/{categoryIdentifier}/images/current/{pictureFilename}

Deletes specified picture.
sellerIdsellerIdType Identifier of seller
categoryIdentifieridentifierType Category identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

DELETE /v15/se9876543210/categories/0-2U10/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

GET /v15/{sellerId}/categories/stats

Returns stats by categories.
sellerIdsellerIdType Identifier of seller
periodQuery string. Optionalinteger filter by date period
cashRegisterNameQuery string. Optionalstring filter by cash register name

Request

Response

GET /v15/se9876543210/categories/stats HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents categories stats by total brutto, amount of sold products for all categories and list of categories stats in particular. */ 'totalBrutto': 1200, // Total stats by categories brutto.. Integer. Minimum 0.
'totalProductsSold': 100, // Total amount of sold products for all categories... Integer. Minimum 0.
'categoryStats': Stats by category in particular.[ {/* Stats by particular categories brutto sum and amount of sold products. Contains identifier and name of category. */ 'identifier': 'UF-2', // identifierType. May NOT be null.
'name': 'Latte', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'brutto': 200, // Sum by brutto for sold products by current category.. Integer. Minimum 0.
'count': 50 // Amount of sold product units by current category.. Integer. Minimum 0.
} ] // Stats by category in particular.. List of objects. May NOT be null.
}
Description
ValidationJsonException If passed date period has incorrect format.
ReferenceNotFoundJsonException If passed cash register name don't belong to seller

POST /v15/{sellerId}/products

Create product on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/products HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U12' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If tax is not found

PUT /v15/{sellerId}/products/{identifier}

Put product to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Product identifier

Request

Response

PUT /v15/se9876543210/products/0-2U12 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT

GET /v15/{sellerId}/products/{identifier}

Returns an entity
sellerIdsellerIdType Identifier of seller
identifieridentifierType Product identifier

Request

Response

GET /v15/se9876543210/products/0-2U12 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found

GET /v15/{sellerId}/products

Returns list of entities
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/products HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of entities which exists on current seller or null if list of entities is not modified since version */
[ { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ]

DELETE /v15/{sellerId}/products/{identifier}

Delete entity from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Product identifier

Request

Response

DELETE /v15/se9876543210/products/0-2U12 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

PUT /v15/{sellerId}/products/{productIdentifier}/images/current/{pictureFilename}

Send picture to the server
sellerIdsellerIdType Identifier of seller
productIdentifieridentifierType Product identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

PUT /v15/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1 Content-Type: image/png Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found

GET /v15/{sellerId}/products/{productIdentifier}/images

Returns picture paths
sellerIdsellerIdType Identifier of seller
productIdentifieridentifierType Product identifier

Request

Response

GET /v15/se9876543210/products/0-2U12/images HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images */
[ 'paths': 'se9876543210/products/0-2U12/images/current/MAIN.PNG' //
]

GET /v15/{sellerId}/products/{productIdentifier}/images/current/{pictureFilename}

Returns body of the picture
sellerIdsellerIdType Identifier of seller
productIdentifieridentifierType Product identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found

GET /v15/{sellerId}/products/{productIdentifier}/images/{pictureVersion}/{pictureFilename}

Returns body of the picture for particular version number
sellerIdsellerIdType Identifier of seller
productIdentifieridentifierType Product identifier
pictureVersionimageVersionType Version of picture
pictureFilenameidentifierType Just a normal windows filename

Request

Response

GET /v15/se9876543210/products/0-2U12/images/20/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK
Description
NotFoundJsonException If image is not found
ReferenceNotFoundJsonException If product wasn't found

DELETE /v15/{sellerId}/products/{productIdentifier}/images/current/{pictureFilename}

Deletes specified picture
sellerIdsellerIdType Identifier of seller
productIdentifieridentifierType Product identifier
pictureFilenameidentifierType Just a normal windows filename

Request

Response

DELETE /v15/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version doesn't match to seller version
ReferenceNotFoundJsonException If product wasn't found

GET /v15/{sellerId}/product-images-diff/{versionFrom}/{versionTo}

Returns list of product pictures changes between two versions
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/product-images-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Information about product's picture */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'filename': 'MAIN.PNG', // Filename of picture. String. Minimum 1 characters. Maximum 50 characters. Regular expression ^(?!^(PRN|AUX|CLOCK\$|NUL|CON|COM\d|LPT\d|\.\.?)$)[^\x00-\x1f\\?*:\";|/<>]+$ . May NOT be null.
'version': 1, // Version of picture (to be able to get old version). Integer. May NOT be null.
'entityIdentifier': '12345', // This field unique identifies product. identifierType. May NOT be null.
'modified': 78953145421 // Last modified date. Date: amount of milliseconds since UNIX epoch. May NOT be null.
}

GET /v15/{sellerId}/products/stats

Returns stats by products.
sellerIdsellerIdType Identifier of seller
periodQuery string. Optionalinteger filter by date period
cashRegisterNameQuery string. Optionalstring filter by cash register name

Request

Response

GET /v15/se9876543210/products/stats HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents products stats by total brutto, amount of sold products and list of product stats in particular. */ 'totalBrutto': 1200, // Total stats by products brutto.. Integer. Minimum 0.
'totalProductsSold': 100, // Total amount of sold products.. Integer. Minimum 0.
'productStats': Stats by product in particular.[ {/* Stats by particular product by brutto and amount of sold units. Contains identifier, name and sales unit type. */ 'identifier': 'UF-2', // identifierType. May NOT be null.
'name': 'Latte', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'brutto': 200, // Sum by brutto for sold products.. Integer. Minimum 0.
'count': 50, // Amount of sold product units.. Integer. Minimum 0.
'salesUnit': 'Piece' // Sales unit type (i.e. kilogram or piece).. salesUnitType.
} ] // Stats by product in particular.. List of objects. May NOT be null.
}
Description
ValidationJsonException If passed date period has incorrect format.
ReferenceNotFoundJsonException If passed cash register name don't belong to seller

POST /v15/{sellerId}/commodities

Create commodity on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/commodities HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': false, // True if entity was deleted. Only possible if return diff. Boolean. May NOT be null.
'identifier': null, // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': '0-2U12', // Regular field. Product identifier. String. May NOT be null.
'category': '0-2U10', // Regular field. Tax identifier. String. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U18' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found If category wasn't found

PUT /v15/{sellerId}/commodities/{identifier}

Put commodity to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Commodity identifier

Request

Response

PUT /v15/se9876543210/commodities/0-2U18 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': false, // True if entity was deleted. Only possible if return diff. Boolean. May NOT be null.
'identifier': '0-2U18', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': '0-2U12', // Regular field. Product identifier. String. May NOT be null.
'category': '0-2U10', // Regular field. Tax identifier. String. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found If category wasn't found

GET /v15/{sellerId}/commodities/{identifier}

Returns an entity
sellerIdsellerIdType Identifier of seller
identifieridentifierType Commodity identifier

Request

Response

GET /v15/se9876543210/commodities/0-2U18 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found

GET /v15/{sellerId}/commodities

Returns list of entities
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/commodities HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of entities which exists on current seller or null if list of entities is not modified since version */
[ { 'deleted': false, // True if entity was deleted. Only possible if return diff. Boolean. May NOT be null.
'identifier': '0-2U18', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': '0-2U12', // Regular field. Product identifier. String. May NOT be null.
'category': '0-2U16', // Regular field. Tax identifier. String. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ]

GET /v15/{sellerId}/commodities/advanced

Returns list of
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/commodities/advanced HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of entities which exists on current seller or null if list of entities is not modified since version */
[ {/* Info entity with complete Product and Category infoes instead of solely their identifiers. See Commodity for comparison. */ 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U18', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller. . identifierType. May NOT be null.
'product': {/* Data to put */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '', // String. Maximum 65535 characters. May be null.
'price': '0' //
}, // A complex object. May NOT be null.
'categoryInfo': {/* Data to put */ 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': null, // identifierType. May be null.
'name': 'Test' // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
}, // A complex object. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
} ]

DELETE /v15/{sellerId}/commodities/{identifier}

Delete entity from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Commodity identifier

Request

Response

DELETE /v15/se9876543210/commodities/0-2U18 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/commodities-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/commodities-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': false, // True if entity was deleted. Only possible if return diff. Boolean. May NOT be null.
'identifier': '1', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': 'test product', // Regular field. Product identifier. String. May NOT be null.
'category': 'test category', // Regular field. Tax identifier. String. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}

POST /v15/{sellerId}/keyboards

Create keyboard on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/keyboards HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': null, // identifierType. May be null.
'name': 'Test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'width': 0, // Regular field. Integer. May NOT be null.
'height': 0, // Regular field. Integer. May NOT be null.
'deviceFormFactor': 'PHONE', // Regular field. deviceFormFactorType. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8 /* Generated unique identifier */
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U20' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

PUT /v15/{sellerId}/keyboards/{identifier}

Put keyboard to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Keyboard identifier

Request

Response

PUT /v15/se9876543210/keyboards/0-2U20 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U20', // identifierType. May be null.
'name': 'Test1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'width': 0, // Regular field. Integer. May NOT be null.
'height': 0, // Regular field. Integer. May NOT be null.
'deviceFormFactor': 'PHONE', // Regular field. deviceFormFactorType. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/keyboards/{identifier}

Returns an entity
sellerIdsellerIdType Identifier of seller
identifieridentifierType Keyboard identifier

Request

Response

GET /v15/se9876543210/keyboards/0-2U20 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* Null if not modified since version or entity. If version is null then return value can not be null */
{ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U20', // identifierType. May be null.
'name': 'Test1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'width': 0, // Regular field. Integer. May NOT be null.
'height': 0, // Regular field. Integer. May NOT be null.
'deviceFormFactor': 'PHONE', // Regular field. deviceFormFactorType. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found

GET /v15/{sellerId}/keyboards

Returns list of entities
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/keyboards HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* Returns list of entities */
[ { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U20', // identifierType. May be null.
'name': 'Test1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'width': 0, // Regular field. Integer. May NOT be null.
'height': 0, // Regular field. Integer. May NOT be null.
'deviceFormFactor': 'PHONE', // Regular field. deviceFormFactorType. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ]

DELETE /v15/{sellerId}/keyboards/{identifier}

Delete keyboardy from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType Keyboard identifier

Request

Response

DELETE /v15/se9876543210/keyboards/0-2U20 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/keyboards-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/keyboards-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of items to be added, edited or deleted ({@link KeyboardInfo#isDeleted()} = true) */
{ 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': '0-2U20', // identifierType. May be null.
'name': 'Test1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'width': 0, // Regular field. Integer. May NOT be null.
'height': 0, // Regular field. Integer. May NOT be null.
'deviceFormFactor': 'PHONE', // Regular field. deviceFormFactorType. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}

POST /v15/{sellerId}/keyboard-entries

Create keyboardEntry on the server
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/keyboard-entries HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': false, // true if entity was deleted. Boolean. May NOT be null.
'identifier': null, // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': '0-2U12', // Regular field. Product identifier. String. May NOT be null.
'keyboard': '0-2U20', // Regular field. Keyboard identifier. String. May NOT be null.
'subKeyboard': '0-2U20', // Regular field. SubKeyboard identifier. String. May be null.
'positionX': 1, // Regular field. Integer. May NOT be null.
'positionY': 1, // Regular field. Integer. May NOT be null.
'width': 1, // Regular field. Integer. May NOT be null.
'height': 1, // Regular field. Integer. May NOT be null.
'keyAction': 'Product', // Regular field. keyActionType. May NOT be null.
'label': 'KeyboardEntry 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U28' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found If keyboard wasn't found

PUT /v15/{sellerId}/keyboard-entries/{identifier}

Put keyboardEntry to the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType KeyboardEntry identifier

Request

Response

PUT /v15/se9876543210/keyboard-entries/0-2U28 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Data to put */ 'deleted': false, // true if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U28', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': '0-2U12', // Regular field. Product identifier. String. May NOT be null.
'keyboard': '0-2U20', // Regular field. Keyboard identifier. String. May NOT be null.
'subKeyboard': '0-2U20', // Regular field. SubKeyboard identifier. String. May be null.
'positionX': 1, // Regular field. Integer. May NOT be null.
'positionY': 1, // Regular field. Integer. May NOT be null.
'width': 1, // Regular field. Integer. May NOT be null.
'height': 1, // Regular field. Integer. May NOT be null.
'keyAction': 'Product', // Regular field. keyActionType. May NOT be null.
'label': 'KeyboardEntry 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters. May be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch
ReferenceNotFoundJsonException If product wasn't found If keyboard wasn't found

GET /v15/{sellerId}/keyboard-entries/{identifier}

Returns an entity
sellerIdsellerIdType Identifier of seller
identifieridentifierType KeyboardEntry identifier

Request

Response

GET /v15/se9876543210/keyboard-entries/0-2U28 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK
Description
VersionConflictJsonException If version mismatch
NotFoundJsonException If entity is not found

DELETE /v15/{sellerId}/keyboard-entries/{identifier}

Delete entity from the server
sellerIdsellerIdType Identifier of seller
identifieridentifierType KeyboardEntry identifier

Request

Response

DELETE /v15/se9876543210/keyboard-entries/0-2U28 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException If version mismatch

GET /v15/{sellerId}/keyboard-entries-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/keyboard-entries-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of items to be added, edited or deleted ({@link KeyboardEntryInfo#isDeleted()} = true) */
{ 'deleted': false, // true if entity was deleted. Boolean. May NOT be null.
'identifier': '45а5543534', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': 'test', // Regular field. Product identifier. String. May NOT be null.
'keyboard': 'keyboard', // Regular field. Keyboard identifier. String. May NOT be null.
'subKeyboard': 'value', // Regular field. SubKeyboard identifier. String. May be null.
'positionX': 56, // Regular field. Integer. May NOT be null.
'positionY': 89, // Regular field. Integer. May NOT be null.
'width': 123, // Regular field. Integer. May NOT be null.
'height': 675, // Regular field. Integer. May NOT be null.
'keyAction': 'Product', // Regular field. keyActionType. May NOT be null.
'label': 'test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': 'test' // String. Maximum 65535 characters. May be null.
}

GET /v15/{sellerId}/keyboard-entries

Returns list of entities
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15//keyboard-entries HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of entities which exists on current seller or null if list of entities is not modified since version */
{ 'deleted': false, // true if entity was deleted. Boolean. May NOT be null.
'identifier': '45а5543534', // This field uniquely identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May NOT be null.
'product': 'test', // Regular field. Product identifier. String. May NOT be null.
'keyboard': 'keyboard', // Regular field. Keyboard identifier. String. May NOT be null.
'subKeyboard': 'value', // Regular field. SubKeyboard identifier. String. May be null.
'positionX': 56, // Regular field. Integer. May NOT be null.
'positionY': 89, // Regular field. Integer. May NOT be null.
'width': 123, // Regular field. Integer. May NOT be null.
'height': 675, // Regular field. Integer. May NOT be null.
'keyAction': 'Product', // Regular field. keyActionType. May NOT be null.
'label': 'test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': 'test' // String. Maximum 65535 characters. May be null.
}

GET /v15/{sellerId}/orders-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions. Since we don't have delete and edit methods, it returns only newly created orders
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/orders-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents customer's order - list of order items. */ 'treasurerName': 'Test name', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': '0-2U12', // identifierType. May NOT be null.
'productCustomization': 'Customization A', // Any customer's wishes about product customization.. String. Maximum 512 characters. May be null.
'delta': 700 // The number of products (kg, hg, hours, whatever unit) if deltaUnit is true, otherwise the amount of currency. . Integer. May NOT be null.
} ] // List of objects.
}

POST /v15/{sellerId}/orders

Sends an order.
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/orders HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Represents customer's order - list of order items. */ 'treasurerName': 'treasurerName', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': '0-2U12', // identifierType. May NOT be null.
'productCustomization': 'Customization A', // Any customer's wishes about product customization.. String. Maximum 512 characters. May be null.
'delta': 700 // The number of products (kg, hg, hours, whatever unit) if deltaUnit is true, otherwise the amount of currency. . Integer. May NOT be null.
} ] // List of objects.
}
HTTP/1.1 201 CREATED
Description
ReferenceNotFoundJsonException if product with passed productIdentifier wasn't found
ValidationJsonException When data are formatted incorrectly or doesn't follow business logic constraints. See the details property for more info. The "details" field has map where key is field name and value is error message. when basic check if input data fails. See getDetails() for more info

GET /v15/{sellerId}/orders/advanced

Returns a list with orders. Provides additional info like products and taxes.
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/se9876543210/orders/advanced HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Represents customer's order - list of order items. Provides advanced information. */ 'treasurerName': 'Test name', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'orderItems': {/* Represents how many products of particular type was ordered. */ 'productInfo': { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'product': { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '', // String. Maximum 65535 characters. May be null.
'price': '0' //
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': null, // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 1, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
} // A complex object. May NOT be null.
}, // A complex object. May NOT be null.
'productCustomization': 'Pizza', // Any customer's wishes about product customization.. String. Maximum 512 characters. May be null.
'delta': 1 // The number of products (kg, hg, hours, whatever unit) if deltaUnit is true, otherwise the amount of currency. . Integer. May NOT be null.
}, // List of objects. A complex object.
'id': 42 // Integer.
} ]

GET /v15/{sellerId}/orders/{orderId}/advanced

Gets advanced info about order.
sellerIdsellerIdType Identifier of seller
orderIdinteger Unique id of order

Request

Response

GET /v15/se9876543210/orders/42/advanced HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents customer's order - list of order items. Provides advanced information. */ 'treasurerName': 'Test name', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'orderItems': {/* Represents how many products of particular type was ordered. */ 'productInfo': { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'product': { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '', // String. Maximum 65535 characters. May be null.
'price': '0' //
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': null, // This field uniqly identifies entity. There is no decision what is it, only the requirement - it must be unique trough one seller . identifierType. May be null.
'vat': 1, // Regular field. Integer. Minimum 0. Maximum 100. May NOT be null.
'name': 'Test', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'custom': '' // Custom data concerned tax. String. Maximum 65535 characters. May be null.
} // A complex object. May NOT be null.
}, // A complex object. May NOT be null.
'productCustomization': 'Pizza', // Any customer's wishes about product customization.. String. Maximum 512 characters. May be null.
'delta': 1 // The number of products (kg, hg, hours, whatever unit) if deltaUnit is true, otherwise the amount of currency. . Integer. May NOT be null.
}, // List of objects. A complex object.
'id': 42 // Integer.
}
Description
ValidationJsonException When data are formatted incorrectly or doesn't follow business logic constraints. See the details property for more info. The "details" field has map where key is field name and value is error message. when basic check if input data fails. See getDetails() for more info

GET /v15/{sellerId}/registrations/{cashRegisterName}/balance

Returns balance of cash register
sellerIdsellerIdType Identifier of seller
cashRegisterNamecashRegisterNameType

Request

Response

GET /v15/se9876543210/registrations/CashTK/balance HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'amount': 10000 // Amount of money in the cash register. Integer. Minimum 0. May NOT be null.
}
Description
ReferenceNotFoundJsonException if cashRegisterName wasn't found

POST /v15/{sellerId}/registrations/{cashRegisterName}/balance

Set cash register balance
sellerIdsellerIdType Identifier of seller
cashRegisterNamecashRegisterNameType

Request

Response

POST /v15/se9876543210/registrations/CashTK/balance HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'amount': 10000, // Amount of money. Integer. Minimum 0. May NOT be null.
'action': 'DEPOSIT' // Action. changeBalanceActionType. May NOT be null.
}
HTTP/1.1 201 CREATED

GET /v15/{sellerId}/registrations

Returns list of registrations.
sellerIdsellerIdType Identifier of seller
activeOnlyQuery string. Optionalboolean True if need only active registrations, otherwise all registrations
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null

Request

Response

GET /v15/se9876543210/registrations HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'id': 654, // Integer. May NOT be null.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'country': 'se', // String. Minimum 2 characters. Maximum 2 characters. May NOT be null.
'corporateId': '345342356', // corporateIdType. May NOT be null.
'installationId': 8764444578 // Integer. May NOT be null.
}

GET /v15/{sellerId}/registrations/stats

Returns list of registrations.
sellerIdsellerIdType Identifier of seller
periodQuery string. Optionalstring filters by date period

Request

Response

GET /v15/se9876543210/registrations/stats HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Represents stats for cash registers by total brutto. */ 'cashRegisterName': 'Cash22', // cashRegisterNameType. May NOT be null.
'total': 1200 // Total stats by sales brutto.. Integer. Minimum 0.
} ]
Description
ValidationJsonException If passed date period has incorrect format.

GET /v15/restaurants/{sellerId}

Get latest information about seller from the server.
sellerIdsellerIdType Identifier of seller

Request

Response

GET /v15/restaurants/se9876543210 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Same set of field as in Restaurant allowed to be in restaurant info. */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'name': 'Super Restaurant', // String. Minimum 1 characters. Maximum 96 characters. May NOT be null.
'city': 'Stockholm', // String. Minimum 1 characters. Maximum 255 characters.
'address': 'Street 194/144', // String. Minimum 1 characters. Maximum 500 characters.
'phone': '', // String. Minimum 1 characters. Maximum 96 characters.
'workHours': '8', // String.
'description': '', // String.
'averageBill': 150, // Integer.
'menu': [ {/* Extended category info for restaurant which contains list of products and images. */ 'name': '', // String. Maximum 96 characters. May NOT be null.
'products': [ { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ], // List of objects.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object.
} ], // List of objects.
'images': ['MAIN.PNG', 'SECONDARY.PNG'], // A complex object.
'custom': '' // String. Maximum 65535 characters.
}
Description
NotFoundJsonException If entity wasn't found

PUT /v15/restaurants/{sellerId}

Send information about restaurant to the server to store it.
sellerIdsellerIdType Identifier of seller

Request

Response

PUT /v15/restaurants/se9876543210 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Same set of field as in Restaurant allowed to be in restaurant info. */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'name': 'Super Restaurant', // String. Minimum 1 characters. Maximum 96 characters. May NOT be null.
'city': 'Stockholm', // String. Minimum 1 characters. Maximum 255 characters.
'address': 'Street 194/144', // String. Minimum 1 characters. Maximum 500 characters.
'phone': '', // String. Minimum 1 characters. Maximum 96 characters.
'workHours': '8', // String.
'description': '', // String.
'averageBill': 150, // Integer.
'menu': [ {/* Extended category info for restaurant which contains list of products and images. */ 'name': '', // String. Maximum 96 characters. May NOT be null.
'products': [ { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ], // List of objects.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object.
} ], // List of objects.
'images': ['MAIN.PNG', 'SECONDARY.PNG'], // A complex object.
'custom': '' // String. Maximum 65535 characters.
}
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException If entity wasn't found
ForbiddenJsonException If user have no access to entity

GET /v15/restaurants

Returns list of entities.
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "COUNTRY", "NAME", "AVERAGE_BILL, "DESCRIPTION", "CITY", "WORK_HOURS" and "PHONE"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/restaurants HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Same set of field as in Restaurant allowed to be in restaurant info. */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'name': 'Super Restaurant', // String. Minimum 1 characters. Maximum 96 characters. May NOT be null.
'city': 'Stockholm', // String. Minimum 1 characters. Maximum 255 characters.
'address': 'Street 194/144', // String. Minimum 1 characters. Maximum 500 characters.
'phone': '', // String. Minimum 1 characters. Maximum 96 characters.
'workHours': '8', // String.
'description': '', // String.
'averageBill': 150, // Integer.
'menu': [ {/* Extended category info for restaurant which contains list of products and images. */ 'name': '', // String. Maximum 96 characters. May NOT be null.
'products': [ { 'deleted': 'false', // True if entity was deleted. Only possible if return diff. May NOT be null.
'identifier': '0-2U12', // identifierType. May NOT be null.
'name': 'Product 1', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'barcode': '012345678912', // Regular field. String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'netto': 100, // Regular field. Integer. May NOT be null.
'tax': '0-2U0Z', // Regular field. String. May NOT be null.
'salesUnit': 'Piece', // Regular field. salesUnitType. May NOT be null.
'countedInPrice': 'false', // Regular field. May NOT be null.
'description': '', // String. Maximum 1024 characters. May be null.
'custom': '' // String. Maximum 65535 characters. May be null.
} ], // List of objects.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object.
} ], // List of objects.
'images': ['MAIN.PNG', 'SECONDARY.PNG'], // A complex object.
'custom': '' // String. Maximum 65535 characters.
} ]

GET /v15/{sellerId}/treasurers/{identifier}

Get latest information about seller from the server.
sellerIdsellerIdType Identifier of seller
identifieridentifierType Treasurer identifier

Request

Response

GET /v15/se9876543210/treasurers/0-2U0Z HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U0Z', // identifierType. May NOT be null.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'ssn': '123423567', // Social security number of user. String. Maximum 16 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
}
Description
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.
NotFoundJsonException When service returns 404 HTTP status name. No additional details provided. when service returns 404 HTTP status code

PUT /v15/{sellerId}/treasurers/{identifier}

Put treasurer to the server.
sellerIdsellerIdType Identifier of seller
identifieridentifierType Treasurer identifier

Request

Response

PUT /v15/se9876543210/treasurers/0-2U0Z HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U0Z', // identifierType. May NOT be null.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'ssn': '123423567', // Social security number of user. String. Maximum 16 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
Description
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided.

POST /v15/{sellerId}/treasurers

Create treasurer on the server.
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/treasurers HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U0Z', // identifierType. May NOT be null.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'ssn': '123423567', // Social security number of user. String. Maximum 16 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8 /* Generated unique identifier */
{/* Methods called "new" will return the identifier of newly created entity by using this class */ 'identifier': '0-2U20' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch

DELETE /v15/{sellerId}/treasurers/{identifier}

Delete entity from the server.
sellerIdsellerIdType Identifier of seller
identifieridentifierType Treasurer identifier

Request

Response

DELETE /v15/se9876543210/treasurers/0-2U0Z HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException

GET /v15/{sellerId}/treasurers-diff/{versionFrom}/{versionTo}

Returns list of item changes between two versions.
sellerIdsellerIdType Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v15/se9876543210/treasurers-diff/0/9999 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U0Z', // identifierType. May NOT be null.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'ssn': '123423567', // Social security number of user. String. Maximum 16 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
}

GET /v15/{sellerId}/treasurers

Returns list of entities.
sellerIdsellerIdType Identifier of seller
orderByQuery string. OptionalsellerFieldsType field to order by, possible values are "identifier", "name", "vat"
orderDescQuery string. Optionalboolean field to direction of ordering
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/treasurers HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'deleted': false, // True if entity was deleted. Boolean. May NOT be null.
'identifier': '0-2U0Z', // identifierType. May NOT be null.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'ssn': '123423567', // Social security number of user. String. Maximum 16 characters. May NOT be null.
'custom': '' // String. Maximum 65535 characters.
}

GET /v15/{sellerId}/bookings/{id}

Gets booking.
sellerIdsellerIdType Identifier of seller
idinteger Identifier of booking

Request

Response

GET /v15/se9876543210/bookings/1 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'id': 1, // Integer.
'bookingDate': 1410421778118, // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': 4, // Integer. May NOT be null.
'description': 'no solt in all dishes', // String. Maximum 1024 characters.
'contactInfo': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
} // A complex object. May NOT be null.
}
Description
NotFoundJsonException If booking or seller wasn't found.
ForbiddenJsonException If user have no access to this booking.

PUT /v15/{sellerId}/bookings/{id}

Modifies booking.
sellerIdsellerIdType Identifier of seller
idinteger Identifier of booking

Request

Response

PUT /v15/se9876543210/bookings/1 HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'id': 1, // Integer.
'bookingDate': 1410421778118, // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': 4, // Integer. May NOT be null.
'description': 'no solt in all dishes', // String. Maximum 1024 characters.
'contactInfo': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
} // A complex object. May NOT be null.
}
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException If booking or seller wasn't found.
ForbiddenJsonException If user have no access to this booking.
VersionConflictJsonException If version mismatch.

POST /v15/{sellerId}/bookings

Create treasurer on the server.
sellerIdsellerIdType Identifier of seller

Request

Response

POST /v15/se9876543210/bookings HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'id': null, // Integer.
'bookingDate': 1410421778118, // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': 4, // Integer. May NOT be null.
'description': 'no solt in all dishes', // String. Maximum 1024 characters.
'contactInfo': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
} // A complex object. May NOT be null.
}
HTTP/1.1 201 CREATED
Description
NotFoundJsonException If seller wasn't found.

DELETE /v15/{sellerId}/bookings/{id}

Get information about booking from the server.
sellerIdsellerIdType Identifier of seller
idinteger Identifier of booking

Request

Response

DELETE /v15/se9876543210/bookings/1 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException If booking or seller wasn't found.
ForbiddenJsonException If user have no access to this booking.
VersionConflictJsonException If version mismatch.

GET /v15/{sellerId}/bookings

Get information about booking from the server.
sellerIdsellerIdType Identifier of seller
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/bookings HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'id': 1, // Integer.
'bookingDate': 1410421778118, // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': 4, // Integer. May NOT be null.
'description': 'no solt in all dishes', // String. Maximum 1024 characters.
'contactInfo': {/* Information about person. */ 'name': 'Stefan', // Name of person who makes activation. String. May NOT be null.
'phone': '56745325', // Phone number of person who requests activation. String. May NOT be null.
'email': 'test@test.se' // Email of person who requests activation. String. May NOT be null.
} // A complex object. May NOT be null.
}

POST /v15/{sellerId}/sales

Create sale on the server.
sellerIdsellerIdType

Request

Response

POST /v15/se9876543210/sales HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com { 'sellerIdentifier': 'se9876543210', // . String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'saleState': 'Open', // . saleStateType. May NOT be null.
'refund': true, // . Boolean. May NOT be null.
'refundFor': 10, // . Integer. May be null.
'absoluteDiscount': 0, // . Integer. May NOT be null.
'relativeDiscount': 50, // . Integer. May NOT be null.
'vanillaBrutto': 100, // . Integer. May NOT be null.
'discount': 100, // . Integer. May NOT be null.
'brutto': 50, // . Integer. May NOT be null.
'vat': 25, // . Integer. May NOT be null.
'controlUnitId': '123456', // . String. May be null.
'treasurer': '0-ABCD', // . String. May be null.
'close': 1414800000001, // . Date: amount of milliseconds since UNIX epoch. May be null.
'saleProducts': [ { 'productIdentifier': 'PRODUCT1', // . String. May NOT be null.
'deltaUnit': false, // . Boolean. May NOT be null.
'delta': 10, // . Integer. May NOT be null.
'absoluteDiscount': 0, // . Integer. May NOT be null.
'relativeDiscount': 50, // . Integer. May NOT be null.
'vat': 25, // . Integer.
'netto': 100, // . Integer.
'brutto': 125, // . Integer.
'vanillaBrutto': 125, // . Integer.
'discount': 50, // . Integer.
'created': 1414800000001 // . Date: amount of milliseconds since UNIX epoch.
} ], // List of objects.
'prints': [ { 'receiptNumber': 1234, // . Integer.
'printType': 'Normal', // . printType.
'deliveryType': 'Print', // . deliveryType.
'controlNumber': '123456789', // . String.
'created': 1414800000001, // . Integer.
'printed': false // . Boolean.
} ], // List of objects.
'payments': [ { 'paymentType': 'Cash', // . paymentType.
'amount': 100, // . Integer.
'paymentState': 'SENDING' // . paymentStateType.
} ], // List of objects.
'vatRateSums': [ { 'vatRate': 50, // . Integer.
'vanillaVat': 5000, // . Integer.
'vanillaNetto': 5000, // . Integer.
'vanillaBrutto': 10000, // . Integer.
'vat': 500, // . Integer.
'netto': 500, // . Integer.
'brutto': 1000 // . Integer.
} ] // List of objects.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Methods called "new" will return the identifier of newly created entity by using this class Generated unique identifier */ 'identifier': '0-2U0Z' // identifierType. May NOT be null.
}
Description
VersionConflictJsonException If version mismatch
ReceiptNotPrintedJsonException If there is a receipt of user registration that is no not printed (only for thinkassan).
DayClosedJsonException If the day is already closed (only for thinkassan).

GET /v15/{sellerId}/sales

Get sale list.
sellerIdsellerIdType
cashRegisterNameQuery string. Optionalstring Cash register name
periodQuery string. Optionalstring search period
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/sales HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

GET /v15/{sellerId}/sales/{identifier}/receipt

Return current receipt
sellerIdsellerIdType
identifieridentifierType identifies sale

Request

Response

GET /v15/se9876543210/sales/40/receipt HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

POST /v15/{sellerId}/sales/{identifier}/receipt

Confirm current receipt print
sellerIdsellerIdType
identifieridentifierType identifies sale

Request

Response

POST /v15/se9876543210/sales/40/receipt HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 201 CREATED
Description
ReceiptAlreadyPrintedJsonException If the receipt is already printed.

POST /v15/{sellerId}/sales/{saleId}/copy

Confirm receipt copy print
sellerIdsellerIdType
saleIdidentifierType identifies sale

Request

Response

POST /v15/se9876543210/sales/40/copy HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 201 CREATED
Description
ReceiptAlreadyPrintedJsonException If the receipt is already printed.

GET /v15/{sellerId}/days

Returns list of days
sellerIdsellerIdType
cashRegisterNameQuery string. Optionalstring Cash register name
periodQuery string. Optionalstring search period
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/se9876543210/days HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'id': 0, // . Integer. May NOT be null.
'date': 1414200000 // . Integer. May NOT be null.
}

GET /v15/{sellerId}/days/{dayId}/report

Returns day report
sellerIdsellerIdType
dayIdidentifierType identifies day

Request

Response

GET /v15/se9876543210/days/1/report HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

POST /v15/{sellerId}/days/{dayId}/report

Confirm receipt print
sellerIdsellerIdType
dayIdidentifierType identifies day

Request

Response

POST /v15/se9876543210/days/1/report HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 201 CREATED
Description
DayNotClosedJsonException If the day is not closed yet.

POST /v15/{sellerId}/days/current

Closes current day
sellerIdsellerIdType

Request

Response

POST /v15/se9876543210/days/current HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 201 CREATED
Description
ReceiptNotPrintedJsonException If there is a receipt of user registration that is no not printed.
DayClosedJsonException If the day is already closed.

GET /v15/{sellerId}/e-journals/{cashRegisterName}

Returns e-journal
sellerIdsellerIdType
cashRegisterNamecashRegisterNameType

Request

Response

GET /v15/se9876543210/e-journals/Cash22 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK

GET /v15/{sellerId}/sales/stats

Returns sales stats filtered by seller, cash register name and period.
sellerIdsellerIdType
cashRegisterNameQuery string. Optionalstring filters stats by cash register name
periodQuery string. Optionalstring filters by date period

Request

Response

GET /v15/se9876543210/sales/stats HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'total': 1200, // Total stats by sales brutto.. Integer. Minimum 0.
'amountOfSales': 100, // Total amount of sales.. Integer. Minimum 0.
'amountOfProducts': 150, // Total amount of sold products.. Integer. Minimum 0.
'bruttoStats': {'2014-12-01T00:00:00.000+0000':424500} // Date-to-brutto stats grouped by some period (i.e. 'day' or 'hour'). Date has format: 'yyyy-MM-dd'T'HH:mm:ss.SSSZ'.. A complex object. May NOT be null.
}

GET /v15/installations/{productionNumber}/build-infoes

Returns list of build infoes by production number.
productionNumberstring

Request

Response

GET /v15/installations/TEST100000000000000000081/build-infoes HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Information about android device taken from android.os.Build. */ 'name': 'KEY', // String. Maximum 25 characters. May NOT be null.
'value': 'VALUE', // String. Maximum 1024 characters. May NOT be null.
'installation': 'TEST100000000000000000081' // String. May NOT be null.
} ]
Description
NotFoundJsonException If installation wasn't found.
ForbiddenJsonException If user hasn't access to this installation.

GET /v15/kd-facets

Returns list of kd facets. One of the filters must be used. Also, since cash register name is unique only through the particular seller it is forbidden to pass just a cash register name without seller.
controlUnitQuery string. Optionalstring Filters kd facets by control unit.
sellerQuery string. Optionalstring Filters kd facets by seller.
cashRegisterNameQuery string. Optionalstring Filters kd facets by cash register name (i.e. registration).
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null

Request

Response

GET /v15/kd-facets HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Represents a log entity with information about/pospluses/kd. May contain exception information. */ 'activation': 42, // Integer.
'brutto': 5000, // Integer.
'kdDate': 1414800000001, // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'vatRateToSum': {'6':1000}, // A javascript object. The key - tax value. The value - the sum. E.g. 20.12 SEK splitted between 12.05 SEK for VAT 6% and 10.07 SEK for VAT 12% will do {'6': 1205, '12': 1007} . A complex object. May NOT be null.
'receiptNumber': 1, // Autoincrement receipt number within one POS terminal. Integer.
'printType': 'Normal', // printTypeEnum. May NOT be null.
'refund': false, // Boolean.
'errorMessage': 'Command kd 201411061916 1234567897 C1415276184016 0 normal 0,00 998,99 0,06;10,00 0,03;0,08 0,00;0,00 0,00;0,00 failed with response -1 K34P72NUH7A3HST7HY7EF6RUWJLLWVOC;MKFXCN7ENWYJS4KRP3JJ3KG64M 0x1ACB', // String.
'errorStackTrace': 'com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:67)' // String.
} ]
Description
InconsistentDataJsonException If none of parameters was set or cash register name was set without seller.

PUT /v15/users/{username}

Modifies an user.
username

Request

Response

PUT /v15/users/username HTTP/1.1 Content-Type: application/json Accept: application/json Host: t.srv4pos.com {/* Non-public information of user for super admins. It has password hash. */ 'deleted': 'false', // True if entity was deleted..
'username': 'username', // Regular field.. String. Minimum 1 characters. Maximum 50 characters. May NOT be null.
'email': 'mail@username.com', // User's email.. String. Minimum 6 characters. Maximum 50 characters. Regular expression /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; . May NOT be null.
'role': 'ROLE_SOFTWARE_VENDOR_ADMIN', // roleType. May NOT be null.
'softwareVendor': null, // If role == ROLE_HYPER_ADMIN, then null. If role == ROLE_SOFTWARE_VENDOR_ADMIN, then not null. . Integer. May be null.
'password': '9999' // String. Maximum 200 characters. May NOT be null.
}
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException If user wasn't found.

DELETE /v15

Deletes an user.

Request

Response

DELETE /v15 HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
Description
NotFoundJsonException If user wasn't found.
ReferenceNotFoundJsonException if user wasn't connected to treasurer.

GET /v15/users

Returns list of users.
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
likeQuery string. Optionalstring search string filter or null

Request

Response

GET /v15/users HTTP/1.1 Accept: application/json Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Non-public information of user for super admins. It has password hash. */ 'deleted': 'false', // True if entity was deleted..
'username': 'username', // Regular field.. String. Minimum 1 characters. Maximum 50 characters. May NOT be null.
'email': 'mail@username.com', // User's email.. String. Minimum 6 characters. Maximum 50 characters. Regular expression /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/; . May NOT be null.
'role': 'ROLE_SOFTWARE_VENDOR_ADMIN', // roleType. May NOT be null.
'softwareVendor': null, // If role == ROLE_HYPER_ADMIN, then null. If role == ROLE_SOFTWARE_VENDOR_ADMIN, then not null. . Integer. May be null.
'password': '9999' // String. Maximum 200 characters. May NOT be null.
} ]