Select an item from the list at right side.

Errors

DescriptionHTTP Status
InternalServerErrorJsonException When server can not understand what is happening. See "details" field for more info. It contains field "message" with text description. 500
OutdatedVersionJsonException Informs user that api doesn't work anymore. The app should be updated to newest version asap! No additional details provided. 410
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. 501
NotFoundJsonException When requested resource wasn't found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
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. 404
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)
500
ControlUnitUnavailableJsonException When server is unable to reach the control unit device (for instance it's ejected from the server). No additional details provided. 500
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. 500
InvalidETagFormatJsonException Occurs when provided ETag format is not a quoted string with version inside. 400
ServiceUnavailableJsonException Dropped by the server if server is off (for instance server is restarting or in a service mode). 500
NonUniqueJsonException When passed data violates some unique constraint. Details can have more then one violated field, it means that constraint is composite. 400
UnauthorizedJsonException Dropped by server when user tries access resource without any authentications. 401
MessageNotReadableJsonException When sent JSON is failed to parse. Message is not human-readable and intended solely to give all required information to developer. 400
HttpHeaderMissingJsonException If request param doesn't contain required http header. 400
TypeMismatchJsonException When some entity fails during type conversion. For example, passed String as query param is not convertible to Date. 400
RequestMethodNotSupportedJsonException Occurs on wrong API usage. For instance, when method GET is not supported by specified URL. 405
UnprocessableEntityJsonException This exception occurs when every entity field passes validation but there is a logical (semantical) violation.
All possible error codes are listed below.
TREASURER_IS_JOINED_TO_USER_ALREADY - Occurs on attempt to join treasurer which is joined already. Need to disjoin treasurer from user at first.
USER_HAS_TREASURER_WITH_SAME_SELLER_ID_ALREADY - Occurs on attempt to join treasurer, but user has treasurer with same seller id already.
TREASURER_IS_NOT_JOINED_TO_USER - Occurs on disjoin treasurer. Indicates that treasurer is not joined to any user and disjoin doesn't make any sense.
COMPANY_NAME_MUST_BE_SET_IF_NO_SELLER - Occurs if both passed seller wasn't found and company name wasn't set.
CU_LOCATION_MUST_BE_SET - Occurs on attempt to set control unit without geolocation info specified.
PRODUCTION_NUMBER_IS_OUT_OF_DATE - Indicates that passed production number is out of date with device since another instance of application was installed already. Reinstall of application is suggested.
CU_IS_MISSING_FOR_ACTIVATION - Indicates that control unit should be set if application is working with control unit
DEVICE_LOCATION_MUST_BE_SET - Indicates if control unit's location set into DEVICE but geolocation is not provided.
AUTO_ACTIVATE_IS_NOT_POSSIBLE_ON_NEW_CU - Occurs during ordering an activation. Indicates the attempt to enable auto-activation upon not yet registered control unit.
PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH - Occurs during ordering an activation. Indicates that passed production number doesn't belong to device. Reinstall of application is suggested.
APPLICATION_PACKAGES_MISMATCH - Occurs during ordering an activation. Indicates that passed application package in the request body and another one identified by production number are not the same.
APP_DESC_HAS_REFERENCED_DATA - Occurs on attempt to remove application description which is referenced in another entities.
SOFTWARE_VENDOR_HAS_REFERENCED_DATA - Occurs on attempt to remove software vendor which is referenced in another entities.
SOFTWARE_VENDOR_IS_MISSING - Occurs on attempt to create/edit user with ROLE_SOFTWARE_VENDOR_ADMIN.
PROHIBITED_ORDER_STATUS_CHANGE - Occurs on attempt to change status of order which breaks conceived logic.
CU_IS_USED_IN_ACTIVATIONS - Occurs on attempt to delete the control unit which belongs to at least one activation.
DAY_IS_CLOSED - Occurs when current day is closed.
DAY_IS_NOT_CLOSED - Occurs when current day isn't closed.
RECEIPT_IS_PRINTED_ALREADY - Occurs when current receipt is printed already.
RECEIPT_IS_NOT_PRINTED - Occurs when current receipt is not printed yet.
REPORT_IS_PRINTED_ALREADY - Occurs when report is printed already.
REPORT_IS_NOT_PRINTED - Occurs when report is not printed yet.
ACTIVATION_IS_CLOSED_ALREADY - Occurs when activation is closed already.
ACTIVATION_IS_ACTIVE_ALREADY - Occurs when activation is active already.
ACTIVATION_IS_WORKING_ALREADY - Occurs when activation is working already.
422
InconsistentDataJsonException When data sent to the server is in inconsistent state. See "details" field for more info. It contains field "message" with text description.
All possible error codes are listed below.
SV_MISMATCH_IN_APP_DESC_AND_CU - Occurs when references to software vendor in application description and control unit don't match.
VALID_FROM_AND_VALID_TO_INCONSISTENCY - Occurs when some inconsistency was detected during 'ValidFrom' or 'ValidTo' validation.
ACTIVATION_CODE_WRONG_LENGTH - Occurs during activation process when activation code is tested.
ACTIVATION_CODE_ALREADY_EXISTS - Occurs during activation process when passed activation has its signature already.
ACTIVATION_STATUS_IS_NOT_MODIFIABLE_BY_PUT - Occurs in case of attempting to modify activation status by 'PUT' http method.
QUERY_PARAM_CANT_BE_NEGATIVE - Occurs if passed query parameter is negative, but positive of zero value is expected.
SELLER_HAS_NOT_REGISTRATION - Occurs when passed by query param cash register name doesn't belong to the passed seller.
SELLER_SHOULD_BE_PROVIDED_FOR_CR - Occurs when cash register name passed as query param without specified seller.
SERVER_IS_OVERLOADED - Occurs when retrieving data bulk is too large. It signals to specify maxResults param to not greater that some limit.
IDENTIFIER_LENGTH_VIOLATION - Occurs when passed identifier (for instance, seller identifier) doesn't fit into length requirements.
SERVER_CANT_BE_REMOVED - Occurs in case of attempting to remove current working server.
URL_AND_BODY_IDENTIFIERS_MISMATCH - Occurs when identifier in URL and body is not the same. Commonly, it is used to forbid changing identifier by PUT.
LOCAL_AND_SERVER_VERSIONS_INCONSISTENCY - Occurs when passed version is more then server's one.
WORKING_WITH_CU_IS_NOT_SUPPORTED_BY_APP - Occurs when application without ability to work with control units attempts to send a kd.
PRODUCTION_NUMBER_AND_CONNECTION_MISMATCH - Occurs during connection to activation process when connection production number is not equal with installation.
PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH - Occurs during ordering an activation. Indicates that passed production number doesn't belong to device.
409
ValueNotValidJsonException Thrown when some value of field fails validation. One field can have one or more violations.
All possible error codes are listed below.
SHOULD_NOT_BE_NULL - Occurs if non-null constraint violated.
SHOULD_MATCH_PATTERN - Occurs if regex violated. See params in details by keys 'actualValue' and 'pattern'.
SIZE_SHOULD_BE_EQUAL_EXACTLY - Says that size of the field in characters should be equal to limiting number. See params in details 'actualValue', 'sizeMin' and 'sizeMax'.
SIZE_SHOULD_BE_LESS_THEN - Says that size of the field in characters should be less then limiting number. See params in details by keys 'actualValue', 'sizeMin' and 'sizeMax'.
SIZE_SHOULD_BE_MORE_THEN - Says that size of the field in characters should be more or equal then limiting number. See params in details by keys 'actualValue', 'sizeMin' and 'sizeMax'.
SIZE_SHOULD_BE_IN_RANGE - Says that size of the field in characters should be in some range. See params in details by keys actualValue' and 'pattern'.
VALUE_SHOULD_BE_GREATER_THEN - Says that numerical value should be greater or equal then some limiting value. See params in details by keys 'actualValue' and 'valueMin'.
VALUE_SHOULD_BE_LESS_THEN - Says that numerical value should be less or equal then some limiting value. See params in details by keys 'actualValue' and 'valueMax'.
VALUE_SHOULD_NOT_BE_NEGATIVE - Says that value should be positive. See params in details by keys 'actualValue' and 'valueMin'.
SHOULD_MATCH_CORPORATE_ID_VALIDATION_SWEDISH - Says that seller's corporate id failed to pass swedish validation.
SHOULD_MATCH_CORPORATE_ID_VALIDATION_LUHN - Says that seller's corporate id failed to pass Luhn-algorithm validation.
400
ForbiddenJsonException When service returns 403 HTTP status name.
For instance if one seller is trying to access 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.

All possible error codes are listed below.
INSUFFICIENT_ACCESS_RIGHTS - It is most used code, which covers cases when credentials is not sufficient to perform request or, for example, on attempt to get non-public data.
ACTIVATION_CLOSED_ALREADY - If activation in credentials is closed already. I.e. it is in the CLOSED state.
ACTIVATION_STILL_ISSUED - If activation in credentials is not activated. I.e. it is in the ISSUED state.
SELLER_NOT_FOUND - If there is credentials and seller with given country and corporate id is not registered. If caught, you should register yourself on the server.
WRONG_ACTIVATION_PERIOD - If either activation's period haven't started yet or has expired already.
WRONG_USERNAME_OR_PASSWORD - If either username or password failed to pass authorization. User should get "Please contact sales@srv4pos.com if this error appears longer than 24h".
403

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.
printType One of the following values: 'Normal', 'Copy', 'Proforma' The type of receipt print
controlUnitLocationType One 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 to check the existance of that name on the server
roleType One of the following values: 'ROLE_HYPER_ADMIN', 'ROLE_SOFTWARE_VENDOR_ADMIN', 'SELLER_ADMIN', 'ACTIVATION' User role
activationStatusType One of the following values: 'ISSUED', 'ACTIVE', 'WORKING', 'CLOSED'
imageVersionType One of the following values: 'current', 'version'
sellerFieldsType One of the following values: 'COUNTRY', 'NAME'
ticketCategoryType One of the following values: 'CONTROL_UNIT_BROKEN', 'ACTIVATION_ISSUED', 'CONTROL_UNIT_ADDRESS_CHANGED'
ticketStatusType One of the following values: 'OPEN', 'CLOSED'
salesUnitType One of the following values: 'Piece', 'Price', 'Kilogram', 'Hektogram', 'Meters', 'Centimeters', 'Hours', 'Minutes'
changeBalanceActionType One of the following values: 'DEPOSIT', 'WITHDRAWAL'
deviceFormFactorType One of the following values: 'PHONE', 'TABLET_SMALL', 'TABLET_BIG'
saleStateType One of the following values: 'Open', 'Paid', 'Cancelled', 'Complete'
deliveryType One of the following values: 'Display', 'Print', 'SMS', 'Email', 'Discard', 'Journal'
paymentType One of the following values: 'Cash', 'Card', 'WyWallet', 'PayEx', 'SEQR', 'AirPay', 'ClosePayment'
paymentStateType One of the following values: 'SENDING', 'SENDING_FAILED', 'PENDING', 'APPROVED', 'REJECTED', 'PAUSED', 'CANCELLED', 'CHARGE_FAILED', 'CHARGE_UNKNOWN'
keyActionType One 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'
activationFeatureType One of the following values: 'VOUCHERS', 'SEQR', 'WYWALLET', 'PAYEX', 'CLOSEPAYMENT', 'AIRPAY', 'SUPPORT', 'SYNCRONIZATION', 'MULTIUSERS', 'IZETTLE', 'CONTROL_UNIT'
autoActivationConditionType One of the following values: 'NEVER', 'ALWAYS', 'NO_FEATURES' This condition defines use or not use the auto activation.
currencyType One of the following values: 'AED', 'AFN', 'ALL', 'AMD', 'ANG', 'AOA', 'ARS', 'AUD', 'AWG', 'AZN', 'BAM', 'BBD', 'BDT', 'BGN', 'BHD', 'BIF', 'BMD', 'BND', 'BOB', 'BRL', 'BSD', 'BTN', 'BWP', 'BYR', 'BZD', 'CAD', 'CDF', 'CHF', 'CLP', 'CNY', 'COP', 'CRC', 'CUC', 'CUP', 'CVE', 'CZK', 'DJF', 'DKK', 'DOP', 'DZD', 'EGP', 'ERN', 'ETB', 'EUR', 'FJD', 'FKP', 'GBP', 'GEL', 'GGP', 'GHS', 'GIP', 'GMD', 'GNF', 'GTQ', 'GYD', 'HKD', 'HNL', 'HRK', 'HTG', 'HUF', 'IDR', 'ILS', 'IMP', 'INR', 'IQD', 'IRR', 'ISK', 'JEP', 'JMD', 'JOD', 'JPY', 'KES', 'KGS', 'KHR', 'KMF', 'KPW', 'KRW', 'KWD', 'KYD', 'KZT', 'LAK', 'LBP', 'LKR', 'LRD', 'LSL', 'LTL', 'LVL', 'LYD', 'MAD', 'MDL', 'MGA', 'MKD', 'MMK', 'MNT', 'MOP', 'MRO', 'MUR', 'MVR', 'MWK', 'MXN', 'MYR', 'MZN', 'NAD', 'NGN', 'NIO', 'NOK', 'NPR', 'NZD', 'OMR', 'PAB', 'PEN', 'PGK', 'PHP', 'PKR', 'PLN', 'PRB', 'PYG', 'QAR', 'RON', 'RSD', 'RUB', 'RWF', 'SAR', 'SBD', 'SCR', 'SDG', 'SEK', 'SGD', 'SHP', 'SLL', 'SOS', 'SRD', 'SSP', 'STD', 'SVC', 'SYP', 'SZL', 'THB', 'TJS', 'TMT', 'TND', 'TOP', 'TRY', 'TTD', 'TWD', 'TZS', 'UAH', 'UGX', 'USD', 'UYU', 'UZS', 'VEF', 'VND', 'VUV', 'WST', 'XAF', 'XCD', 'XOF', 'XPF', 'YER', 'ZAR', 'ZMK', 'ZWL'
corporateIdValidationMethodType One of the following values: 'NONE', 'VALIDATE_SWEDISH'
userRoleType One of the following values: 'ROLE_HYPER_ADMIN', 'ROLE_SOFTWARE_VENDOR', 'ROLE_REGULAR_USER'
mailEncryptionType One of the following values: 'TLS', 'SSL_TLS', 'NONE'
InconsistentDataErrorType One of the following values: 'SV_MISMATCH_IN_APP_DESC_AND_CU', 'VALID_FROM_AND_VALID_TO_INCONSISTENCY', 'ACTIVATION_CODE_WRONG_LENGTH', 'ACTIVATION_CODE_ALREADY_EXISTS', 'ACTIVATION_STATUS_IS_NOT_MODIFIABLE_BY_PUT', 'QUERY_PARAM_CANT_BE_NEGATIVE', 'SELLER_HAS_NOT_REGISTRATION', 'SELLER_SHOULD_BE_PROVIDED_FOR_CR', 'SERVER_IS_OVERLOADED', 'IDENTIFIER_LENGTH_VIOLATION', 'SERVER_CANT_BE_REMOVED', 'URL_AND_BODY_IDENTIFIERS_MISMATCH', 'LOCAL_AND_SERVER_VERSIONS_INCONSISTENCY', 'WORKING_WITH_CU_IS_NOT_SUPPORTED_BY_APP', 'PRODUCTION_NUMBER_AND_CONNECTION_MISMATCH', 'PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH' Enum describes error codes corresponding to InconsistentDataJsonException.
UnprocessableEntityErrorType One of the following values: 'TREASURER_IS_JOINED_TO_USER_ALREADY', 'USER_HAS_TREASURER_WITH_SAME_SELLER_ID_ALREADY', 'TREASURER_IS_NOT_JOINED_TO_USER', 'COMPANY_NAME_MUST_BE_SET_IF_NO_SELLER', 'CU_LOCATION_MUST_BE_SET', 'PRODUCTION_NUMBER_IS_OUT_OF_DATE', 'CU_IS_MISSING_FOR_ACTIVATION', 'DEVICE_LOCATION_MUST_BE_SET', 'AUTO_ACTIVATE_IS_NOT_POSSIBLE_ON_NEW_CU', 'PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH', 'APPLICATION_PACKAGES_MISMATCH', 'APP_DESC_HAS_REFERENCED_DATA', 'SOFTWARE_VENDOR_HAS_REFERENCED_DATA', 'SOFTWARE_VENDOR_IS_MISSING', 'PROHIBITED_ORDER_STATUS_CHANGE', 'CU_IS_USED_IN_ACTIVATIONS', 'DAY_IS_CLOSED', 'DAY_IS_NOT_CLOSED', 'RECEIPT_IS_PRINTED_ALREADY', 'RECEIPT_IS_NOT_PRINTED', 'REPORT_IS_PRINTED_ALREADY', 'REPORT_IS_NOT_PRINTED', 'ACTIVATION_IS_CLOSED_ALREADY', 'ACTIVATION_IS_ACTIVE_ALREADY', 'ACTIVATION_IS_WORKING_ALREADY' Enum describes error codes corresponding to UnprocessableEntityJsonException.
ValueNotValidErrorType One of the following values: 'SHOULD_NOT_BE_NULL', 'SHOULD_MATCH_PATTERN', 'SIZE_SHOULD_BE_EQUAL_EXACTLY', 'SIZE_SHOULD_BE_LESS_THEN', 'SIZE_SHOULD_BE_MORE_THEN', 'SIZE_SHOULD_BE_IN_RANGE', 'VALUE_SHOULD_BE_GREATER_THEN', 'VALUE_SHOULD_BE_LESS_THEN', 'VALUE_SHOULD_NOT_BE_NEGATIVE', 'SHOULD_MATCH_CORPORATE_ID_VALIDATION_SWEDISH', 'SHOULD_MATCH_CORPORATE_ID_VALIDATION_LUHN' Enum describes error codes corresponding to ValueNotValidJsonException.
ForbiddenErrorType One of the following values: 'INSUFFICIENT_ACCESS_RIGHTS', 'ACTIVATION_CLOSED_ALREADY', 'ACTIVATION_STILL_ISSUED', 'SELLER_NOT_FOUND', 'WRONG_ACTIVATION_PERIOD', 'WRONG_USERNAME_OR_PASSWORD' Enum describes error codes corresponding to ForbiddenJsonException.
PictureReportErrorType One of the following values: 'SELLER_MISSING_IN_DB', 'ENTITY_MISSING_IN_DB', 'PIC_MISSING_IN_DB', 'PIC_VERSION_MISSING_IN_DB', 'SELLER_MISSING_IN_FS', 'ENTITY_MISSING_IN_FS', 'PIC_MISSING_IN_FS', 'PIC_VERSION_MISSING_IN_FS', 'LAST_VERSIONS_MISMATCH', 'DELETED_STATUS_MISMATCH' Represents error codes for pictures inconsistency for both filesystem to database and vice verse.
orderPaymentStatus One of the following values: 'NEW', 'PAID', 'REJECTED'
dateGroupingUnit One of the following values: 'HOUR', 'DAY', 'WEEK', 'MONTH', 'QUARTER', 'YEAR'
preceptStatusType One of the following values: 'NEW', 'PRINTED', 'READY'

GET /v16/auth/handshake

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

Request

Response

GET /v16/auth/handshake HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
ForbiddenJsonException See there: SELLER_NOT_FOUND . 403

GET /v16/auth/user

Gets user info and connected sellers to user in credentials.

Request

Response

GET /v16/auth/user HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Describes user and sellers connected to this user. */ 'userInfo': {/* 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.
}, // A complex object.
'connectedSellers': [ {/* Same set of field as in SellerLog allowed to be public. */ 'corporateId': '9876543210', // corporateIdType. May NOT be null.
'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se' // countryType. May NOT be null.
} ] // List of objects.
}
DescriptionHTTP Status
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS, WRONG_USERNAME_OR_PASSWORD . 403

POST /v16/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 /v16/noauth/activations/generate-production-number HTTP/1.1 Content-Type: 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': {}, // 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.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If applicationPackage in request body wasn't found. 404

POST /v16/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 /v16/noauth/activations/order-activation HTTP/1.1 Content-Type: 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.
'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. List of values. 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 /* Unique 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.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If device withdeviceId, installation with applicationPackage or control unit with controlUnitSerialNumber weren't found. 404
NonUniqueJsonException If cash register name is not unique within a seller. 400
InconsistentDataJsonException See there: ACTIVATION_CODE_ALREADY_EXISTS, PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH, VALID_FROM_AND_VALID_TO_INCONSISTENCY . 409
UnprocessableEntityJsonException See there: APPLICATION_PACKAGES_MISMATCH, AUTO_ACTIVATE_IS_NOT_POSSIBLE_ON_NEW_CU, COMPANY_NAME_MUST_BE_SET_IF_NO_SELLER, CU_LOCATION_MUST_BE_SET, CU_IS_MISSING_FOR_ACTIVATION, DEVICE_LOCATION_MUST_BE_SET, PRODUCTION_NUMBER_IS_OUT_OF_DATE, ACTIVATION_IS_CLOSED_ALREADY, ACTIVATION_IS_ACTIVE_ALREADY, ACTIVATION_IS_WORKING_ALREADY . 422
ValueNotValidJsonException See there: SHOULD_MATCH_CORPORATE_ID_VALIDATION_SWEDISH, SHOULD_MATCH_CORPORATE_ID_VALIDATION_LUHN . 400

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

Checks that cash register name is unique for particular seller.

Request

Response

POST /v16/noauth/activations/cash-register-name/existance HTTP/1.1 Content-Type: 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.
}
DescriptionHTTP Status
NonUniqueJsonException When passed data violates some unique constraint. Details can have more then one violated field, it means that constraint is composite. 400

POST /v16/activations/activation-code

This method requires credentials and returns Activation Code for provided credentials.

Request

Response

POST /v16/activations/activation-code HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{ 'activationInfoVersion': 2, // Version of data structure, returned by. 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 . String. May NOT be null.
'signature': 'TODO show signature here', // Digital signature of activationDescriptorInfo. String. May NOT be null.
'publicKeyFileName': 'file.pc' // The file name for the public key, which should be used for signature.
}
DescriptionHTTP Status
ForbiddenJsonException See there: ACTIVATION_STILL_ISSUED, WRONG_USERNAME_OR_PASSWORD . 403

POST /v16/activations/connection

This method activate activation by code.

Request

Response

POST /v16/activations/connection HTTP/1.1 Content-Type: application/json Host: t.srv4pos.com { '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.
'activationCode': '', // String. Maximum 10 characters. May NOT be null.
'productionNumber': '' // ProductionNumber - serial number uniquely identifies instance of the Installation. It represents production number of cash register according to Swedish regulations. It has format "MK556{number}" where MK is mobilkassan, 556 is the beginning of the Produkt Poolen corporate ID, {number} - unique number within entire world. String. Maximum 25 characters. May NOT be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{ 'activationCodeInfo': { 'activationInfoVersion': 2, // Version of data structure, returned by. 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 . String. May NOT be null.
'signature': 'TODO show signature here', // Digital signature of activationDescriptorInfo. String. May NOT be null.
'publicKeyFileName': 'file.pc' // The file name for the public key, which should be used for signature.
}, // A complex object. May NOT be null.
'activationSecurityToken': '', // String. Maximum 33 characters. May NOT be null.
'activationId': // Integer. May NOT be null.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException Activation not found by code. 404
InconsistentDataJsonException See there: ACTIVATION_CODE_WRONG_LENGTH, PRODUCTION_NUMBER_AND_CONNECTION_MISMATCH, PRODUCTION_NUMBER_AND_DEVICE_ID_MISMATCH . 409
UnprocessableEntityJsonException See there: APPLICATION_PACKAGES_MISMATCH . 422

GET /v16/activations-overview/{id}

Returns an entity.
id database generated unique id

Request

Response

GET /v16/activations-overview/0 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Overview detailed 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': '', // 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.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'applicationName': 'test name', // String.
'controlUnitRequired': true, // Boolean.
'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.
'registrationId': , // Integer.
'installationDate': 14472336592, // Date: amount of milliseconds since UNIX epoch. May be null.
'productionNumber': 'TEST100000000000000000081', // String.
'softwareVendor': , // Integer.
'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.
'buildInfoes': [ {/* Information about android device taken from android.os.Build. */ 'name': '', // String. Maximum 25 characters. May NOT be null.
'value': '', // String. Maximum 1024 characters. May NOT be null.
'installation': '' // String. May NOT be null.
} ], // List of objects.
'sellerOverviewInfo': { 'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'countActiveCashRegisters': , // Integer.
'turnover': // Integer.
}, // A complex object. May NOT be null.
'sellersAtSameInstallation': [ { 'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'countActiveCashRegisters': , // Integer.
'turnover': // Integer.
} ] // List of objects. May NOT be null.
}
DescriptionHTTP Status
NotFoundJsonException When requested resource wasn't found. 404

POST /v16/pospluses/kd

Sends data to control unit.

Request

Response

POST /v16/pospluses/kd HTTP/1.1 Content-Type: application/json
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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', // printType. 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.
}
DescriptionHTTP Status
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)
500
InconsistentDataJsonException See there: WORKING_WITH_CU_IS_NOT_SUPPORTED_BY_APP . 409
ControlUnitUnavailableJsonException When server is unable to reach the control unit device (for instance it's ejected from the server). No additional details provided. 500
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. 500

GET /v16/sellers/{sellerId}

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

Request

Response

GET /v16/sellers/se9876543210 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'corporateId': '9876543210', // 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.
'address': 'Address 1', // String. Maximum 500 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text', // String. Maximum 65535 characters. May be null.
'currency': 'SEK' // currencyType. May be null.
}

GET /v16/{sellerId}/version

Returns latest version of this seller.
sellerId Identifier of seller

Request

Response

GET /v16/se9876543210/version HTTP/1.1 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 /v16/sellers/{sellerId}

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

Request

Response

PUT /v16/sellers/se9876543210 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'corporateId': '9876543210', // 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.
'address': 'Address 1', // String. Maximum 500 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text', // String. Maximum 65535 characters. May be null.
'currency': 'SEK' // currencyType. May be null.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

DELETE /v16/sellers/{sellerId}

Remove seller and all information that concerns seller. Works only first 5 minutes since seller creation.
sellerId Identifier of seller

Request

Response

DELETE /v16/sellers/se9876543210 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

GET /v16/sellers

Returns list of entities.
orderByQuery string. Optional'COUNTRY', 'NAME', 'DESCRIPTION', 'CITY', 'WORK_HOURS', 'PHONE' field to order by
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 /v16/sellers HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* returns list of public sellers. */
[ { 'corporateId': '9876543210', // 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.
'address': 'Address 1', // String. Maximum 500 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text', // String. Maximum 65535 characters. May be null.
'currency': 'SEK' // currencyType. May be null.
} ]

GET /v16/{sellerId}/stats

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

Request

Response

GET /v16/se9876543210/stats HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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 /v16/{sellerId}/modifications

Gets an information about all seller entities.
sellerId Identifier of seller
fromQuery string. Optionalboolean Min boundary version (included)
toQuery string. Optionalinteger Max boundary version (included)

Request

Response

GET /v16/se9876543210/modifications HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK

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

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

Request

Response

GET /v16/se9876543210/seller-images-diff/0/9999 HTTP/1.1 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 /v16/{sellerId}/images

Returns body of the picture.
sellerId Identifier of seller

Request

Response

GET /v16/se9876543210/images HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images. */
[ {/* Represents path of picture. */ 'path': 'se9876543210/images/current/MAIN.PNG' // String. May NOT be null.
} ]

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

Returns body of the picture.
sellerId Identifier of seller
pictureFilename Just a normal windows filename

Request

Response

GET /v16/se9876543210/images/current/MAIN.PNG HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK

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

Returns body of the picture for particular version number.
sellerId Identifier of seller
pictureVersion Version of picture
pictureFilename Just a normal windows filename

Request

Response

GET /v16/se9876543210/images/10/MAIN.PNG HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK

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

Send picture to the server.
sellerId Identifier of seller
pictureFilename Just a normal windows filename

Request

Response

PUT /v16/se9876543210/images/current/MAIN.PNG HTTP/1.1 Content-Type: image/png
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
ReferenceNotFoundJsonException If seller wasn't found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

Deletes specified picture.
sellerId Identifier of seller
pictureFilename Just a normal windows filename

Request

Response

DELETE /v16/se9876543210/images/current/MAIN.PNG HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

POST /v16/{sellerId}/taxes

Creates tax on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/taxes HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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 Content-Type: application/json;charset=UTF-8
{/* Generated unique identifier. */ 'identifier': '0-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

PUT /v16/{sellerId}/taxes/{identifier}

Put tax to the server.
sellerId Identifier of seller
identifier identifies entity

Request

Response

PUT /v16/se9876543210/taxes/TAX1 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/taxes/{identifier}

Returns an entity. Don't need an authorization.
sellerId Identifier of seller
identifier identifies entity

Request

Response

GET /v16/se9876543210/taxes/TAX1 HTTP/1.1 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': 'TAX1', // This field uniquely 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': '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.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException If entity is not found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403

DELETE /v16/{sellerId}/taxes/{identifier}

Delete tax from the server.
sellerId Identifier of seller
identifier identifies entity

Request

Response

DELETE /v16/se9876543210/taxes/TAX1 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

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

Request

Response

GET /v16/se9876543210/taxes-diff/0/9999 HTTP/1.1 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': 'TAX1', // This field uniquely 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': '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 /v16/{sellerId}/taxes

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'NAME', 'VAT' field to order by
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 /v16/se9876543210/taxes HTTP/1.1 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': 'TAX1', // This field uniquely 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': '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 /v16/{sellerId}/categories

Create category on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/categories HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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.
'color': 0 // Regular field. Integer. 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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

PUT /v16/{sellerId}/categories/{identifier}

Put category to the server.
sellerId Identifier of seller
identifier Category identifier

Request

Response

PUT /v16/se9876543210/categories/0-2U10 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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.
'color': 0 // Regular field. Integer. 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': '0-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/categories/{identifier}

Returns an entity.
sellerId Identifier of seller
identifier Category identifier

Request

Response

GET /v16/se9876543210/categories/0-2U10 HTTP/1.1 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.
'color': 0 // Regular field. Integer. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException If entity is not found. 404

DELETE /v16/{sellerId}/categories/{identifier}

Delete category from the server.
sellerId Identifier of seller
identifier Category identifier

Request

Response

DELETE /v16/se9876543210/categories/0-2U10 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

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

Request

Response

GET /v16/se9876543210/categories-diff/2211/9999 HTTP/1.1 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.
'color': 0 // Regular field. Integer. May NOT be null.
}

GET /v16/{sellerId}/categories

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'NAME', 'VAT' field to order by
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 /v16/se9876543210/categories HTTP/1.1 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.
'color': 0 // Regular field. Integer. May NOT be null.
}

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

Returns list of seller pictures changes between two versions.
sellerId Identifier of seller
versionFrom Min boundary version (included) for diff
versionTo Max boundary version (included) for diff

Request

Response

GET /v16/se9876543210/category-images-diff/0/99999 HTTP/1.1 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 /v16/{sellerId}/categories/{categoryIdentifier}/images

Returns picture paths.
sellerId Identifier of seller
categoryIdentifier Category identifier

Request

Response

GET /v16/se9876543210/categories/0-2U10/images HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images. */
[ {/* Represents path of picture. */ 'path': 'se9876543210/categories/0-2U10/images/current/MAIN.PNG' // String. May NOT be null.
} ]

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

Returns body of the picture.
sellerId Identifier of seller
categoryIdentifier Category identifier
pictureFilename Just a normal windows filename

Request

Response

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

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

Returns body of the picture for particular version number.
sellerId Identifier of seller
categoryIdentifier Category identifier
pictureVersion Version of picture
pictureFilename Just a normal windows filename

Request

Response

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

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

Send picture to the server.
sellerId Identifier of seller
categoryIdentifier Category identifier
pictureFilename Just a normal windows filename

Request

Response

PUT /v16/se9876543210/categories/0-2U10/images/current/MAIN.PNG HTTP/1.1 Content-Type: application/json Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
ReferenceNotFoundJsonException If seller wasn't found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

Deletes specified picture.
sellerId Identifier of seller
categoryIdentifier Category identifier
pictureFilename Just a normal windows filename

Request

Response

DELETE /v16/se9876543210/categories/0-2U10/images/current/MAIN.PNG HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT

GET /v16/{sellerId}/categories/stats

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

Request

Response

GET /v16/se9876543210/categories/stats HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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 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.
} ] // List of objects. May NOT be null.
}
DescriptionHTTP Status
TypeMismatchJsonException If passed date period has incorrect format. 400
ReferenceNotFoundJsonException If passed cash register name don't belong to seller. 404

POST /v16/{sellerId}/products

Create product on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/products HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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': 'TAX1', // Regular field. identifierType. 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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If tax is not found. 404
ValueNotValidJsonException See there: SIZE_SHOULD_BE_IN_RANGE, SHOULD_MATCH_PATTERN . 400

PUT /v16/{sellerId}/products/{identifier}

Put product to the server.
sellerId Identifier of seller
identifier Product identifier

Request

Response

PUT /v16/se9876543210/products/0-2U12 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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': 'TAX1', // Regular field. identifierType. 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
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If tax wasn't found. 404

GET /v16/{sellerId}/products/{identifier}

Returns an entity.
sellerId Identifier of seller
identifier Product identifier

Request

Response

GET /v16/se9876543210/products/0-2U12 HTTP/1.1 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': 'TAX1', // Regular field. identifierType. 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.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException If entity is not found. 404

GET /v16/{sellerId}/products-diff/{versionFrom}/{versionTo}

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

Request

Response

GET /v16/se9876543210/products-diff/2211/9999 HTTP/1.1 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': 'TAX1', // Regular field. identifierType. 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.
}

GET /v16/{sellerId}/products

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'NAME', 'BARCODE', 'NETTO', 'TAX_NAME', 'SALES_UNIT', 'COUNTED_IN_PRICE', 'PRICE', 'DESCRIPTION' field to order by
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 /v16/se9876543210/products HTTP/1.1 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': 'TAX1', // Regular field. identifierType. 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 /v16/{sellerId}/products/{identifier}

Delete entity from the server.
sellerId Identifier of seller
identifier Product identifier

Request

Response

DELETE /v16/se9876543210/products/0-2U12 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

Send picture to the server.
sellerId Identifier of seller
productIdentifier Product identifier
pictureFilename Just a normal windows filename

Request

Response

PUT /v16/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1 Content-Type: image/png
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

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

Returns picture paths.
sellerId Identifier of seller
productIdentifier Product identifier

Request

Response

GET /v16/se9876543210/products/0-2U12/images HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* List of paths for images. */
[ {/* Represents path of picture. */ 'path': 'se9876543210/products/0-2U12/images/current/MAIN.PNG' // String. May NOT be null.
} ]

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

Returns body of the picture.
sellerId Identifier of seller
productIdentifier Product identifier
pictureFilename Just a normal windows filename

Request

Response

GET /v16/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

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

Returns body of the picture for particular version number.
sellerId Identifier of seller
productIdentifier Product identifier
pictureVersion Version of picture
pictureFilename Just a normal windows filename

Request

Response

GET /v16/se9876543210/products/0-2U12/images/20/MAIN.PNG HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
NotFoundJsonException If image is not found. 404
ReferenceNotFoundJsonException If product wasn't found. 404

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

Deletes specified picture.
sellerId Identifier of seller
productIdentifier Product identifier
pictureFilename Just a normal windows filename

Request

Response

DELETE /v16/se9876543210/products/0-2U12/images/current/MAIN.PNG HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

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

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

Request

Response

GET /v16/se9876543210/product-images-diff/0/9999 HTTP/1.1 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 /v16/{sellerId}/products/stats

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

Request

Response

GET /v16/se9876543210/products/stats HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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 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.
} ] // List of objects. May NOT be null.
}
DescriptionHTTP Status
TypeMismatchJsonException If passed date period has incorrect format. 400
ReferenceNotFoundJsonException If passed cash register name don't belong to seller. 404

POST /v16/{sellerId}/commodities

Create commodity on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/commodities HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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.
'color': 0 // Regular field. Integer. May NOT 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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

PUT /v16/{sellerId}/commodities/{identifier}

Put commodity to the server.
sellerId Identifier of seller
identifier Commodity identifier

Request

Response

PUT /v16/se9876543210/commodities/0-2U18 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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.
'color': 0 // Regular field. Integer. May NOT be null.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

GET /v16/{sellerId}/commodities/{identifier}

Returns an entity.
sellerId Identifier of seller
identifier Commodity identifier

Request

Response

GET /v16/se9876543210/commodities/0-2U18 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
NotFoundJsonException If entity is not found. 404

GET /v16/{sellerId}/commodities

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'PRODUCT_NAME', 'PRODUCT_BARCODE', 'PRODUCT_NETTO', 'CATEGORY_NAME', 'PRODUCT_SALES_UNIT', 'PRODUCT_COUNTED_IN_PRICE' field to order by
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 /v16/se9876543210/commodities HTTP/1.1 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.
'color': 0 // Regular field. Integer. May NOT be null.
} ]

GET /v16/{sellerId}/commodities-advanced

Returns list of .
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'PRODUCT_NAME', 'PRODUCT_BARCODE', 'PRODUCT_NETTO', 'CATEGORY_NAME', 'PRODUCT_SALES_UNIT', 'PRODUCT_COUNTED_IN_PRICE' field to order by
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 /v16/se9876543210/commodities-advanced HTTP/1.1 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.
'productAdvancedInfo': { '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': 'TAX1', // Regular field. identifierType. 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.
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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.
}, // A complex object. May NOT be null.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object. May NOT be null.
}, // 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.
'color': 0 // Regular field. Integer. May NOT be null.
}, // A complex object. May NOT be null.
'custom': '', // String. Maximum 65535 characters.
'color': 0, // Regular field. Integer. 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': 'TAX1', // Regular field. identifierType. 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.
} ]

DELETE /v16/{sellerId}/commodities/{identifier}

Delete entity from the server.
sellerId Identifier of seller
identifier Commodity identifier

Request

Response

DELETE /v16/se9876543210/commodities/0-2U18 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

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

Request

Response

GET /v16/se9876543210/commodities-diff/0/9999 HTTP/1.1 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.
'color': 0 // Regular field. Integer. May NOT be null.
}

POST /v16/{sellerId}/keyboards

Create keyboard on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/keyboards HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

PUT /v16/{sellerId}/keyboards/{identifier}

Put keyboard to the server.
sellerId Identifier of seller
identifier Keyboard identifier

Request

Response

PUT /v16/se9876543210/keyboards/0-2U20 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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': '0-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/keyboards/{identifier}

Returns an entity.
sellerId Identifier of seller
identifier Keyboard identifier

Request

Response

GET /v16/se9876543210/keyboards/0-2U20 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException If entity is not found. 404

GET /v16/{sellerId}/keyboards

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'NAME', 'WIDTH', 'HEIGHT', 'DEVICE_FORM_FACTOR' field to order by
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 /v16/se9876543210/keyboards HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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 /v16/{sellerId}/keyboards/{identifier}

Delete keyboardy from the server.
sellerId Identifier of seller
identifier Keyboard identifier

Request

Response

DELETE /v16/se9876543210/keyboards/0-2U20 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

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

Request

Response

GET /v16/se9876543210/keyboards-diff/0/9999 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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 /v16/{sellerId}/keyboard-entries

Create keyboardEntry on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/keyboard-entries HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

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

Put keyboardEntry to the server.
sellerId Identifier of seller
identifier KeyboardEntry identifier

Request

Response

PUT /v16/se9876543210/keyboard-entries/0-2U28 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ReferenceNotFoundJsonException If product wasn't found. 404

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

Returns an entity.
sellerId Identifier of seller
identifier KeyboardEntry identifier

Request

Response

GET /v16/se9876543210/keyboard-entries/0-2U28 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException If entity is not found. 404

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

Delete entity from the server.
sellerId Identifier of seller
identifier KeyboardEntry identifier

Request

Response

DELETE /v16/se9876543210/keyboard-entries/0-2U28 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

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

Request

Response

GET /v16/se9876543210/keyboard-entries-diff/0/9999 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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 /v16/{sellerId}/keyboard-entries

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'PRODUCT_NAME', 'PRODUCT_BARCODE', 'PRODUCT_NETTO', 'PRODUCT_SALES_UNIT', 'PRODUCT_COUNTED_IN_PRICE', 'KEYBOARD_NAME', 'SUB_KEYBOARD_NAME', 'POSITION_X', 'POSITION_Y', 'WIDTH', 'HEIGHT', 'KEY_ACTION', 'LABEL' field to order by
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 /v16//keyboard-entries HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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.
}

POST /v16/{sellerId}/orders

Sends an order.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/orders HTTP/1.1 Content-Type: application/json Host: t.srv4pos.com {/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. 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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If product with passed productIdentifier or booking with passed identifier were not found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/orders

Returns a list with orders.
sellerId Identifier of seller
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
orderByQuery string. Optional'IDENTIFIER', 'STATUS', 'CREATED' field to order by
orderDescQuery string. Optionalboolean field to direction of ordering
likeQuery string. Optionalstring search string filter or null
statusQuery string. Optionalstring filter by payment status or null

Request

Response

GET /v16/se9876543210/orders HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
} ]

GET /v16/{sellerId}/orders/{orderId}

Gets info about order.
sellerId Identifier of seller
orderId identifies entity

Request

Response

GET /v16/se9876543210/orders/0-1 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/orders-advanced

Returns a list with orders. Provides additional info like products and taxes.
sellerId Identifier of seller
firstResultQuery string. Optionalinteger when pagination starts or null
maxResultsQuery string. Optionalinteger amount of items per page or null
orderByQuery string. Optional'IDENTIFIER', 'STATUS', 'CREATED' field to order by
orderDescQuery string. Optionalboolean field to direction of ordering
likeQuery string. Optionalstring search string filter or null
statusQuery string. Optionalstring filter by payment status or null

Request

Response

GET /v16/se9876543210/orders-advanced HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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. */ 'orderInfo': {/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
}, // A complex object. 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': 'TAX1', // Regular field. identifierType. 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.
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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.
}, // A complex object. May NOT be null.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object. May NOT be null.
}, // A complex object. May NOT be null.
'productCustomization': '', // Any customer's wishes about product customization. String. Maximum 512 characters. May be null.
'delta': // 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.
'bookingInfo': { 'identifier': '', // identifierType. May be null.
'bookingDate': , // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': , // Integer. May NOT be null.
'description': '', // 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.
'deleted': '' // true if entity was deleted. May NOT be null.
} // A complex object. May be null.
} ]

GET /v16/{sellerId}/orders-advanced/{orderId}

Gets advanced info about order.
sellerId Identifier of seller
orderId identifies entity

Request

Response

GET /v16/se9876543210/orders-advanced/0-1 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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. */ 'orderInfo': {/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
}, // A complex object. 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': 'TAX1', // Regular field. identifierType. 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.
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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.
}, // A complex object. May NOT be null.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object. May NOT be null.
}, // A complex object. May NOT be null.
'productCustomization': '', // Any customer's wishes about product customization. String. Maximum 512 characters. May be null.
'delta': // 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.
'bookingInfo': { 'identifier': '', // identifierType. May be null.
'bookingDate': , // Date: amount of milliseconds since UNIX epoch. May NOT be null.
'persons': , // Integer. May NOT be null.
'description': '', // 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.
'deleted': '' // true if entity was deleted. May NOT be null.
} // A complex object. May be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{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.
sellerId Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff
statusQuery string. Optionalstring filter by payment status or null

Request

Response

GET /v16/se9876543210/orders-diff/0/9999 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
}

PUT /v16/{sellerId}/orders/{orderId}

Change an order. Provides changes of order payment status.
sellerId Identifier of seller
orderId identifies entity

Request

Response

PUT /v16/se9876543210/orders/0-1 HTTP/1.1 Content-Type: application/json
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com {/* Represents customer's order - list of order items. */ 'identifier': '0-1', // identifierType. May be null.
'orderItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // orderPaymentStatus. May NOT be null.
'deleted': 'false', // true if entity was deleted. May NOT be null.
'booking': 'BOK1', // identifierType. May be null.
'delivery': {/* Represents information about delivery. */ '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.
'address': '', // Delivery address. String. Maximum 255 characters.
'date': 1414800000001, // Date and time of delivery. Date: amount of milliseconds since UNIX epoch.
'comment': '' // Additional information about delivery. String. Maximum 255 characters.
}, // A complex object. May be null.
'created': 1414800000001 // Date: amount of milliseconds since UNIX epoch. May be null.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
ReferenceNotFoundJsonException If product with passed productIdentifier or booking with passed identifier were not found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403
UnprocessableEntityJsonException See there: PROHIBITED_ORDER_STATUS_CHANGE . 422
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

DELETE /v16/{sellerId}/orders/{orderId}

Delete order from the server.
sellerId Identifier of seller
orderId identifies entity

Request

Response

DELETE /v16/se9876543210/orders/0-1 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

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

Returns balance of cash register.
sellerId Identifier of seller
cashRegisterName

Request

Response

GET /v16/se9876543210/registrations/CashTK/balance HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0" // Value should be taken from /{sellerId}.
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.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If cashRegisterName wasn't found. 404
UnprocessableEntityJsonException See there: DAY_IS_CLOSED, DAY_IS_NOT_CLOSED, REPORT_IS_NOT_PRINTED . 422

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

Set cash register balance.
sellerId Identifier of seller
cashRegisterName

Request

Response

POST /v16/se9876543210/registrations/CashTK/balance HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0-0" // Value consists of two parts separated by dash: first part is the seller version from /{sellerId} and second part is the cash register version from /{sellerId}/{cashRegisterName}.
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
DescriptionHTTP Status
UnprocessableEntityJsonException See there: DAY_IS_CLOSED, DAY_IS_NOT_CLOSED, REPORT_IS_NOT_PRINTED . 422

GET /v16/{sellerId}/registrations

Returns list of registrations.
sellerId 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 /v16/se9876543210/registrations HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
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 /v16/{sellerId}/registrations-advanced

Returns list of registrations advanced.
sellerId 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 /v16/se9876543210/registrations-advanced HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* 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': '9876543210', // 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.
'address': 'Address 1', // String. Maximum 500 characters. May be null.
'phone': '89814532074', // String. Maximum 255 characters. May be null.
'custom': 'some text', // String. Maximum 65535 characters. May be null.
'currency': 'SEK' // currencyType. 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.
'gcmRegistrationId': '' // String. Minimum 1 characters.
}, // 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': 'super.package', // String.
'productionNumberPrefix': 'PRENP', // String.
'controlUnitRequired': true, // Boolean.
'name': 'Super application', // String.
'softwareVendor': 2, // Integer.
'autoActivationCondition': 'NEVER', // autoActivationConditionType.
'corporateIdValidationMethod': 'NONE' // corporateIdValidationMethodType.
}, // A complex object.
'buildInfoes': [ {/* Information about android device taken from android.os.Build. */ 'name': '', // String. Maximum 25 characters. May NOT be null.
'value': '', // String. Maximum 1024 characters. May NOT be null.
'installation': '' // String. May NOT be null.
} ], // List of objects.
'registrationOverviewInfoes': [ {/* Represents server-side entity available for admin. */ 'registrationId': , // Integer.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'sellerOverviewInfo': { 'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'countActiveCashRegisters': , // Integer.
'turnover': // Integer.
} // A complex object. May NOT be null.
} ] // List of objects.
} // A complex object. May NOT be null.
} ]

GET /v16/{sellerId}/registrations/stats

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

Request

Response

GET /v16/se9876543210/registrations/stats HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
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.
} ]
DescriptionHTTP Status
TypeMismatchJsonException If passed date period has incorrect format. 400

GET /v16/restaurants-overview/{sellerId}

Get information about Restaurant from the server.
sellerId Identifier of seller

Request

Response

GET /v16/restaurants-overview/se9876543210 HTTP/1.1 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.
'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': 'TAX1', // Regular field. identifierType. 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.
}, // A complex object. May NOT be null.
'tax': { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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.
}, // A complex object. May NOT be null.
'images': ['PRODUCT1.PNG', 'PRODUCT2.PNG'] // A complex object. May NOT 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.
'taxes': [ { 'deleted': 'false', // true if entity was deleted. May NOT be null.
'identifier': 'TAX1', // This field uniquely 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': '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.
} ] // List of objects.
}
DescriptionHTTP Status
NotFoundJsonException If entity wasn't found. 404

GET /v16/restaurants/{sellerId}

Get information about Restaurant from the server.
sellerId Identifier of seller

Request

Response

GET /v16/restaurants/se9876543210 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Restaurant info. */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'averageBill': 150 // Integer.
}
DescriptionHTTP Status
NotFoundJsonException If entity wasn't found. 404

DELETE /v16/restaurants/{sellerId}

Delete information about Restaurant from the server.
sellerId Identifier of seller

Request

Response

DELETE /v16/restaurants/se9876543210 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If entity wasn't found. 404

PUT /v16/restaurants/{sellerId}

Send information about Restaurant to the server to store it.
sellerId Identifier of seller

Request

Response

PUT /v16/restaurants/se9876543210 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com {/* Restaurant info. */ 'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'averageBill': 150 // Integer.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If entity wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403

GET /v16/restaurants

Returns list of entities.
orderByQuery string. Optional'COUNTRY', 'NAME', 'AVERAGE_BILL', 'DESCRIPTION', 'CITY', 'WORK_HOURS', 'PHONE' field to order by
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 /v16/restaurants HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Restaurant list 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.
'description': '', // String.
'city': 'Stockholm', // String. Minimum 1 characters. Maximum 255 characters.
'address': 'Street 194/144', // String. Minimum 1 characters. Maximum 500 characters.
'averageBill': 150, // Integer.
'logo': '', // String.
'custom': '' // String. Maximum 65535 characters.
} ]

GET /v16/{sellerId}/treasurers/{identifier}

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

Request

Response

GET /v16/se9876543210/treasurers/0-2U0Z HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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.
'user': '' // User joined to treasurer. Readonly. String. May be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
NotFoundJsonException When requested resource wasn't found. 404

PUT /v16/{sellerId}/treasurers/{identifier}

Put treasurer to the server.
sellerId Identifier of seller
identifier Treasurer identifier

Request

Response

PUT /v16/se9876543210/treasurers/0-2U0Z HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'deleted': false, // Boolean.
'identifier': '0-2U0Z', // identifierType.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters.
'ssn': '123423567', // String. Minimum 1 characters. Maximum 16 characters.
'custom': '' // String. Maximum 65535 characters.
}
HTTP/1.1 201 CREATED or HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

POST /v16/{sellerId}/treasurers

Create treasurer on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/treasurers HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'deleted': false, // Boolean.
'identifier': '0-2U0Z', // identifierType.
'name': 'test', // String. Minimum 1 characters. Maximum 32 characters.
'ssn': '123423567', // String. Minimum 1 characters. Maximum 16 characters.
'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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

DELETE /v16/{sellerId}/treasurers/{identifier}

Delete entity from the server.
sellerId Identifier of seller
identifier Treasurer identifier

Request

Response

DELETE /v16/se9876543210/treasurers/0-2U0Z HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException When requested resource wasn't found. 404

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

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

Request

Response

GET /v16/se9876543210/treasurers-diff/0/9999 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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.
'user': '' // User joined to treasurer. Readonly. String. May be null.
}

GET /v16/{sellerId}/treasurers

Returns list of entities.
sellerId Identifier of seller
orderByQuery string. Optional'IDENTIFIER', 'NAME', 'SSN' field to order by
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 /v16/se9876543210/treasurers HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
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.
'user': '' // User joined to treasurer. Readonly. String. May be null.
}

GET /v16/{sellerId}/bookings/{identifier}

Gets booking.
sellerId Identifier of seller
identifierinteger Identifier of booking

Request

Response

GET /v16/se9876543210/bookings/BOK1 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'identifier': 'BOK1', // identifierType. May be null.
'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.
'deleted': 'false' // true if entity was deleted. May NOT be null.
}
DescriptionHTTP Status
NotFoundJsonException If booking or seller wasn't found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403

PUT /v16/{sellerId}/bookings/{identifier}

Modifies booking.
sellerId Identifier of seller
identifierinteger Identifier of booking

Request

Response

PUT /v16/se9876543210/bookings/BOK1 HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com { 'identifier': 'BOK1', // identifierType. May be null.
'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.
'deleted': 'false' // true if entity was deleted. May NOT be null.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If booking or seller wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

POST /v16/{sellerId}/bookings

Create booking on the server.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/bookings HTTP/1.1 Content-Type: application/json Host: t.srv4pos.com { 'identifier': null, // identifierType. May be null.
'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.
'deleted': 'false' // true if entity was deleted. 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-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
NotFoundJsonException If seller wasn't found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

DELETE /v16/{sellerId}/bookings/{identifier}

Delete booking from the server.
sellerId Identifier of seller
identifierinteger Identifier of booking

Request

Response

DELETE /v16/se9876543210/bookings/BOK1 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If booking or seller wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409

GET /v16/{sellerId}/bookings

Get information about booking from the server.
sellerId 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
orderByQuery string. Optional'IDENTIFIER', 'BOOKING_DATE' field to order by
orderDescQuery string. Optionalboolean field to direction of ordering

Request

Response

GET /v16/se9876543210/bookings HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'identifier': 'BOK1', // identifierType. May be null.
'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.
'deleted': 'false' // true if entity was deleted. May NOT be null.
}

GET /v16/{sellerId}/bookings-diff/{versionFrom}/{versionTo}

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

Request

Response

GET /v16/se9876543210/bookings-diff/0/9999 HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{ 'identifier': 'BOK1', // identifierType. May be null.
'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.
'deleted': 'false' // true if entity was deleted. May NOT be null.
}

POST /v16/{sellerId}/sales

Create sale on the server.
sellerId

Request

Response

POST /v16/se9876543210/sales HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0-0" // Value consists of two parts separated by dash: first part is the seller version from /{sellerId} and second part is the cash register version from /{sellerId}/{cashRegisterName}.
Host: t.srv4pos.com { 'sellerIdentifier': 'se9876543210', // Seller identifier. identifierType. May NOT be null.
'saleState': 'Open', // Sale identifier. saleStateType. May NOT be null.
'refund': true, // True if it is a refund sale. Boolean. May NOT be null.
'refundFor': 10, // Identifier of refunded sale. Integer. May be null.
'absoluteDiscount': 0, // Sale absolute discount. Must be 0 if relativeDiscount is not 0. Integer. May NOT be null.
'relativeDiscount': 50, // Sale relative discount. Must be 0 if absoluteDiscount is not 0. Integer. May NOT be null.
'vanillaBrutto': 100, // Sum of product brutto. Integer. May NOT be null.
'discount': 100, // Sale discount. discount = relativeDiscount != 0 ? vanillaBrutto / (1 + relativeDiscount) : absoluteDiscount Integer. May NOT be null.
'brutto': 50, // Total sale brutto. Integer. May NOT be null.
'vat': 25, // Total sale VAT. Integer. May NOT be null.
'controlUnitId': '123456', // Control unit Id. String. May be null.
'treasurer': '0-ABCD', // Treasurer name identifierType. May be null.
'close': 1414800000001, // Close receipt date Date: amount of milliseconds since UNIX epoch. May be null.
'saleProducts': [ { 'productIdentifier': 'PRODUCT1', // Product identifier. String. May NOT be null.
'deltaUnit': false, // Boolean. May NOT be null.
'delta': 10, // The amount of products. Integer. May NOT be null.
'absoluteDiscount': 0, // Absolute discount. Must be 0 if relativeDiscount is not 0 Integer. May NOT be null.
'relativeDiscount': 50, // Relative discount. Must be 0 if absoluteDiscount is not 0 Integer. May NOT be null.
'vat': 25, // Value-added tax. vat = brutto - brutto * 100000 / (10000 + vatRate) / 10 Integer.
'netto': 100, // Product price without tax. netto = round(brutto * 100000 / (10000 + vatRate)) Integer.
'brutto': 125, // Sale product price with tax. brutto = vanillaBrutto - discount Integer.
'vanillaBrutto': 125, // Sum of brutto of all products. vanillaBrutto = deltaUnit == 1 ? round(brutto * delta / 100) : delta Integer.
'discount': 50, // Sale product discount. discount = relativeDiscount != 0 ? vanillaBrutto / (1 + relativeDiscount) : absoluteDiscount Integer.
'created': 1414800000001 // Created date. 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, // Created date. Integer.
'printed': false // Printed date Boolean.
} ], // List of objects.
'payments': [ { 'paymentType': 'Cash', // paymentType.
'amount': 100, // Integer.
'paymentState': 'SENDING' // paymentStateType.
} ], // List of objects.
'vatRateSums': [ { 'vatRate': 50, // Integer.
'vanillaVat': 5000, // Total vat of all products. Integer.
'vanillaNetto': 5000, // Total netto of all products. Integer.
'vanillaBrutto': 10000, // Total brutto of all products. Integer.
'vat': 500, // Total vat of all products with sale discount. vat = brutto - netto Integer.
'netto': 500, // total netto of all products with sale discount. netto = round(brutto * 100000 / (10000 + vatRate) / 10) Integer.
'brutto': 1000 // total brutto of all products with sale discount. brutto = relativeDiscount == 0 ? round(Brutto - absoluteDiscount * vanillaBrutto * 10 / vanillaBrutto / 10) : round(vanillaBrutto * (10000 - relativeDiscount) / 10000) Integer.
} ] // List of objects.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Generated unique identifier. */ 'identifier': '0-ID' // identifierType. May NOT be null.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException entity "ControlUnit": if control unit is required for the application and the activation has the feature CONTROL_UNIT, but control unit with id controlUnitId is not found. 404
VersionConflictJsonException Occurs when we upload data to the server but server contains more fresh data than we send. No additional details provided. You should set actual "If-Match" header. 409
UnprocessableEntityJsonException See there: DAY_IS_CLOSED, DAY_IS_NOT_CLOSED, REPORT_IS_NOT_PRINTED . 422

GET /v16/{sellerId}/sales

Get sale list.
sellerId
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 /v16/se9876543210/sales HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210/CashTK:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ { 'id': 0, // Integer. May NOT be null.
'close': 1414200000, // Integer. May NOT be null.
'brutto': 100, // Integer. May NOT be null.
'receiptNumber': 100, // Integer. May NOT be null.
'cashRegisterName': 'CashTK' // String. May NOT be null.
} ]

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

Return current receipt.
sellerId
identifier identifies sale

Request

Response

GET /v16/se9876543210/sales/40/receipt HTTP/1.1
Accept: text/html
Authorization: RestApiTester@se9876543210/CashTK:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK

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

Confirm current receipt print.
sellerId
identifier identifies sale

Request

Response

POST /v16/se9876543210/sales/40/receipt HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0-0" // Value consists of two parts separated by dash: first part is the seller version from /{sellerId} and second part is the cash register version from /{sellerId}/{cashRegisterName}.
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
UnprocessableEntityJsonException See there: DAY_IS_NOT_CLOSED, RECEIPT_IS_PRINTED_ALREADY . 422

GET /v16/{sellerId}/sales/{saleId}/copy

Returns receipt copy.
sellerId
saleId identifies sale

Request

Response

GET /v16/se9876543210/sales/40/copy HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
Accept: text/html
Host: t.srv4pos.com
HTTP/1.1 200 OK
DescriptionHTTP Status
NotFoundJsonException If sale haven't any print. 404

GET /v16/{sellerId}/days

Returns list of days.
sellerId
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 /v16/se9876543210/days HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
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 /v16/{sellerId}/days/{dayId}/report

Returns day report.
sellerId
dayId identifies day

Request

Response

GET /v16/se9876543210/days/1/report HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
Accept: text/html
Host: t.srv4pos.com
HTTP/1.1 200 OK

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

Confirm receipt print.
sellerId
dayId identifies day

Request

Response

POST /v16/se9876543210/days/1/report HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0-0" // Value consists of two parts separated by dash: first part is the seller version from /{sellerId} and second part is the cash register version from /{sellerId}/{cashRegisterName}.
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException When requested resource wasn't found. 404
UnprocessableEntityJsonException See there: DAY_IS_NOT_CLOSED, REPORT_IS_PRINTED_ALREADY . 422

POST /v16/{sellerId}/days/current

Closes current day.
sellerId

Request

Response

POST /v16/se9876543210/days/current HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
If-Match: "0-0" // Value consists of two parts separated by dash: first part is the seller version from /{sellerId} and second part is the cash register version from /{sellerId}/{cashRegisterName}.
Host: t.srv4pos.com
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
UnprocessableEntityJsonException See there: DAY_IS_CLOSED, RECEIPT_IS_NOT_PRINTED . 422

GET /v16/{sellerId}/registrations/{cashRegisterName}/version

Gets actual cash register version.
sellerId
cashRegisterName

Request

Response

GET /v16/se9876543210/registrations/CashTK/version HTTP/1.1
Authorization: RestApiTester@se9876543210/CashTK:9999
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.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If cash register wasn't found. 404

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

Returns e-journal.
sellerId
cashRegisterName

Request

Response

GET /v16/se9876543210/e-journals/Cash22 HTTP/1.1
Accept: text/csv
Authorization: RestApiTester@se9876543210/CashTK:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK

GET /v16/{sellerId}/sales/stats

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

Request

Response

GET /v16/se9876543210/sales/stats HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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.
'dateGroupingUnit': 'HOUR', // How sales brutto stats is grouped. dateGroupingUnit. May NOT be null.
'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 /v16/{sellerId}/sales-diff/{versionFrom}/{versionTo}

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

Request

Response

GET /v16/se9876543210/sales-diff/0/9999 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of items to be added. */
{ 'sellerIdentifier': 'se9876543210', // Seller identifier. identifierType. May NOT be null.
'saleState': 'Open', // Sale identifier. saleStateType. May NOT be null.
'refund': true, // True if it is a refund sale. Boolean. May NOT be null.
'refundFor': 10, // Identifier of refunded sale. Integer. May be null.
'absoluteDiscount': 0, // Sale absolute discount. Must be 0 if relativeDiscount is not 0. Integer. May NOT be null.
'relativeDiscount': 50, // Sale relative discount. Must be 0 if absoluteDiscount is not 0. Integer. May NOT be null.
'vanillaBrutto': 100, // Sum of product brutto. Integer. May NOT be null.
'discount': 100, // Sale discount. discount = relativeDiscount != 0 ? vanillaBrutto / (1 + relativeDiscount) : absoluteDiscount Integer. May NOT be null.
'brutto': 50, // Total sale brutto. Integer. May NOT be null.
'vat': 25, // Total sale VAT. Integer. May NOT be null.
'controlUnitId': '123456', // Control unit Id. String. May be null.
'treasurer': '0-ABCD', // Treasurer name identifierType. May be null.
'close': 1414800000001, // Close receipt date Date: amount of milliseconds since UNIX epoch. May be null.
'saleProducts': [ { 'productIdentifier': 'PRODUCT1', // Product identifier. String. May NOT be null.
'deltaUnit': false, // Boolean. May NOT be null.
'delta': 10, // The amount of products. Integer. May NOT be null.
'absoluteDiscount': 0, // Absolute discount. Must be 0 if relativeDiscount is not 0 Integer. May NOT be null.
'relativeDiscount': 50, // Relative discount. Must be 0 if absoluteDiscount is not 0 Integer. May NOT be null.
'vat': 25, // Value-added tax. vat = brutto - brutto * 100000 / (10000 + vatRate) / 10 Integer.
'netto': 100, // Product price without tax. netto = round(brutto * 100000 / (10000 + vatRate)) Integer.
'brutto': 125, // Sale product price with tax. brutto = vanillaBrutto - discount Integer.
'vanillaBrutto': 125, // Sum of brutto of all products. vanillaBrutto = deltaUnit == 1 ? round(brutto * delta / 100) : delta Integer.
'discount': 50, // Sale product discount. discount = relativeDiscount != 0 ? vanillaBrutto / (1 + relativeDiscount) : absoluteDiscount Integer.
'created': 1414800000001 // Created date. 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, // Created date. Integer.
'printed': false // Printed date Boolean.
} ], // List of objects.
'payments': [ { 'paymentType': 'Cash', // paymentType.
'amount': 100, // Integer.
'paymentState': 'SENDING' // paymentStateType.
} ], // List of objects.
'vatRateSums': [ { 'vatRate': 50, // Integer.
'vanillaVat': 5000, // Total vat of all products. Integer.
'vanillaNetto': 5000, // Total netto of all products. Integer.
'vanillaBrutto': 10000, // Total brutto of all products. Integer.
'vat': 500, // Total vat of all products with sale discount. vat = brutto - netto Integer.
'netto': 500, // total netto of all products with sale discount. netto = round(brutto * 100000 / (10000 + vatRate) / 10) Integer.
'brutto': 1000 // total brutto of all products with sale discount. brutto = relativeDiscount == 0 ? round(Brutto - absoluteDiscount * vanillaBrutto * 10 / vanillaBrutto / 10) : round(vanillaBrutto * (10000 - relativeDiscount) / 10000) Integer.
} ] // List of objects.
}

GET /v16/{sellerId}/days-diff/{versionFrom}/{versionTo}

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

Request

Response

GET /v16/se9876543210/days-diff/0/9999 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8 /* return list of items to be added. */
{ 'dayNumber': 1, // Integer. May NOT be null.
'opened': true, // Boolean. May NOT be null.
'reportPrinted': true, // Boolean. May NOT be null.
'open': true, // Integer. May NOT be null.
'close': 1414800000001, // Integer. May be null.
'cash': 100, // Integer. May NOT be null.
'cashAtClose': 100, // Integer. May NOT be null.
'grandTotal': 100, // Integer. May NOT be null.
'grandTotalRefund': value, // Integer. May NOT be null.
'modified': // Date: amount of milliseconds since UNIX epoch. May NOT be null.
}

GET /v16/devices-overview/{id}

Returns an device.
id

Request

Response

GET /v16/devices-overview/0 HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* This entity provides info about android (and not only) device. */ '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.
'latestInstallationInfo': {/* 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.
'gcmRegistrationId': '' // String. Minimum 1 characters.
}, // 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': 'super.package', // String.
'productionNumberPrefix': 'PRENP', // String.
'controlUnitRequired': true, // Boolean.
'name': 'Super application', // String.
'softwareVendor': 2, // Integer.
'autoActivationCondition': 'NEVER', // autoActivationConditionType.
'corporateIdValidationMethod': 'NONE' // corporateIdValidationMethodType.
}, // A complex object.
'buildInfoes': [ {/* Information about android device taken from android.os.Build. */ 'name': '', // String. Maximum 25 characters. May NOT be null.
'value': '', // String. Maximum 1024 characters. May NOT be null.
'installation': '' // String. May NOT be null.
} ], // List of objects.
'registrationOverviewInfoes': [ {/* Represents server-side entity available for admin. */ 'registrationId': , // Integer.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'sellerOverviewInfo': { 'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'countActiveCashRegisters': , // Integer.
'turnover': // Integer.
} // A complex object. May NOT be null.
} ] // List of objects.
} // A complex object.
}
DescriptionHTTP Status
NotFoundJsonException If device wasn't found. 404

GET /v16/devices

Returns list of devices.
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
softwareVendorQuery string. Optionalinteger filters by software vendor id

Request

Response

GET /v16/devices HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* 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.
} ]
DescriptionHTTP Status
ReferenceNotFoundJsonException If some of passed query parameters wasn't found on server. 404

GET /v16/devices-overview

Returns list of devices Overview.
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
sellerQuery string. Optionalinteger filters by seller id
softwareVendorQuery string. Optionalinteger filters by software vendor id

Request

Response

GET /v16/devices-overview HTTP/1.1 Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* This entity provides info about android (and not only) device. */ '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.
'latestInstallationInfo': {/* 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.
'gcmRegistrationId': '' // String. Minimum 1 characters.
}, // 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': 'super.package', // String.
'productionNumberPrefix': 'PRENP', // String.
'controlUnitRequired': true, // Boolean.
'name': 'Super application', // String.
'softwareVendor': 2, // Integer.
'autoActivationCondition': 'NEVER', // autoActivationConditionType.
'corporateIdValidationMethod': 'NONE' // corporateIdValidationMethodType.
}, // A complex object.
'buildInfoes': [ {/* Information about android device taken from android.os.Build. */ 'name': '', // String. Maximum 25 characters. May NOT be null.
'value': '', // String. Maximum 1024 characters. May NOT be null.
'installation': '' // String. May NOT be null.
} ], // List of objects.
'registrationOverviewInfoes': [ {/* Represents server-side entity available for admin. */ 'registrationId': , // Integer.
'cashRegisterName': 'cash name', // String. Maximum 16 characters. May NOT be null.
'sellerOverviewInfo': { 'name': 'CompanyName', // String. Maximum 96 characters. May NOT be null.
'country': 'se', // countryType. May NOT be null.
'corporateId': '9876543210', // corporateIdType. May NOT be null.
'countActiveCashRegisters': , // Integer.
'turnover': // Integer.
} // A complex object. May NOT be null.
} ] // List of objects.
} // A complex object.
} ]
DescriptionHTTP Status
ReferenceNotFoundJsonException If some of passed query parameters wasn't found on server. 404

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

Returns list of build infoes by production number.
productionNumberstring

Request

Response

GET /v16/installations/TEST100000000000000000081/build-infoes HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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.
} ]
DescriptionHTTP Status
NotFoundJsonException If installation wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403

GET /v16/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
softwareVendorQuery string. Optionalinteger filters by software vendor id

Request

Response

GET /v16/kd-facets HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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', // printType. 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.
} ]
DescriptionHTTP Status
ReferenceNotFoundJsonException If some of passed query parameters wasn't found on server. 404
InconsistentDataJsonException See there: SELLER_SHOULD_BE_PROVIDED_FOR_CR, SELLER_HAS_NOT_REGISTRATION . 409

GET /v16/users/{username}

Returns an user.
username

Request

Response

GET /v16/users/username HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
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.
}
DescriptionHTTP Status
NotFoundJsonException If user wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403

PUT /v16/users/{username}

Modifies an user.
username

Request

Response

PUT /v16/users/username HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
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.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If user wasn't found. 404
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403
UnprocessableEntityJsonException See there: SOFTWARE_VENDOR_IS_MISSING . 422

POST /v16/users/{username}

Creates an user.
username

Request

Response

POST /v16/users/ HTTP/1.1 Content-Type: application/json
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com {/* Registration information for user. */ 'deleted': 'false', // True if entity was deleted.
'username': 'username', // Regular field. String. Minimum 1 characters. Maximum 50 characters. May NOT be null.
'password': '9999', // Regular field. String. Minimum 4 characters. Maximum 16 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.
}
HTTP/1.1 201 CREATED
DescriptionHTTP Status
ForbiddenJsonException See there: INSUFFICIENT_ACCESS_RIGHTS . 403
UnprocessableEntityJsonException See there: SOFTWARE_VENDOR_IS_MISSING . 422

GET /v16/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 /v16/users HTTP/1.1
Authorization: RestApiTester@se9876543210:9999
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Contains username only. Used in GET collections methods. */ 'username': 'username' // Regular field. String. Minimum 1 characters. Maximum 50 characters. May NOT be null.
} ]

POST /v16/{sellerId}/precepts

Sends precept.
sellerId Identifier of seller

Request

Response

POST /v16/se9876543210/precepts HTTP/1.1 Content-Type: application/json
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com {/* Represents instruction for kitchen. */ 'treasurerName': 'Treasurer 1', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'preceptItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // preceptStatusType. May NOT be null.
'message': '' // String. Maximum 512 characters. May be null.
}
HTTP/1.1 201 CREATED Content-Type: application/json;charset=UTF-8
{/* Generated id */ 'id': 0 // Integer.
}
DescriptionHTTP Status
ReferenceNotFoundJsonException If product with passed productIdentifier wasn't found. 404

GET /v16/{sellerId}/precepts/{preceptId}

Gets info about precept.
sellerId Identifier of seller
preceptIdinteger Unique id of precept

Request

Response

GET /v16/se9876543210/precepts/1 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents instruction for kitchen. */ 'treasurerName': 'Treasurer 1', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'preceptItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // preceptStatusType. May NOT be null.
'message': '' // String. Maximum 512 characters. May be null.
}
DescriptionHTTP Status
NotFoundJsonException If precept with specified id wasn't found. 404

GET /v16/{sellerId}/precepts

Returns a list with precepts.
sellerId 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 /v16/se9876543210/precepts HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
[ {/* Represents instruction for kitchen. */ 'treasurerName': 'Treasurer 1', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'preceptItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // preceptStatusType. May NOT be null.
'message': '' // String. Maximum 512 characters. May be null.
} ]

GET /v16/{sellerId}/precepts-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 precepts.
sellerId Identifier of seller
versionFrominteger Min boundary version (included) for diff
versionTointeger Max boundary version (included) for diff

Request

Response

GET /v16/se9876543210/precepts-diff/0/9999 HTTP/1.1
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com
HTTP/1.1 200 OK Content-Type: application/json;charset=UTF-8
{/* Represents instruction for kitchen. */ 'treasurerName': 'Treasurer 1', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'preceptItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // preceptStatusType. May NOT be null.
'message': '' // String. Maximum 512 characters. May be null.
}

PUT /v16/{sellerId}/precepts/{preceptId}

Changes precept.
sellerId Identifier of seller
preceptIdinteger Unique id of precept

Request

Response

PUT /v16/se9876543210/precepts/1 HTTP/1.1 Content-Type: application/json
Authorization: se9876543210/MK22510000000000000000001:AbcDeFgqWertY1Mxxjl74rpocd2445hfV
Host: t.srv4pos.com {/* Represents instruction for kitchen. */ 'treasurerName': 'Treasurer 1', // String. Minimum 1 characters. Maximum 32 characters. May NOT be null.
'preceptItems': [ {/* Represents how many products of particular type was ordered. */ 'productIdentifier': 'PRODUCT1', // 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.
'status': 'NEW', // preceptStatusType. May NOT be null.
'message': '' // String. Maximum 512 characters. May be null.
}
HTTP/1.1 204 NO CONTENT
DescriptionHTTP Status
NotFoundJsonException If precept wasn't found. 404
ReferenceNotFoundJsonException If product with passed productIdentifier wasn't found. 404