Управление серийными номерами на ПО происходит через заказы.
Жизненный цикл заказа (статусы):
- Draft (0) — Черновик. Присваивается в момент создания заказа. В этом статусе заказ разрешено редактировать.
- Submitted(1) — Отправлен. Присваивается в момент подтверждения заказа. В этом статусе заказ редактировать запрещено.
- Revoked (2) — Аннулирован.
- Archived (2) — В архиве.
Типы заказов:
- Sale(0) — Новый заказ. В момент подтверждения заказа происходит генерация серийных номеров.
- Update(1) — Заказ на обновление лицензионных условий для серийного номера.
Флаг типа лицензии:
- Программная (по умолчанию; isHardwareLicense = false);
- Аппаратная (isHardwareLicense = true).
Запросы для работы с заказами:
Получение списка заказов
Авторизация требуется. Входных параметров нет.
GET /v1.0/orders
Для запроса доступна сортировка и пагинация. Доступные поля сортировки: number, submitdate. Значения параметров сортировки и пагинации по умолчанию: sortby=number&direction=asc&offset=0&limit=100.
Для запроса доступна фильтрацию по статусу заказа: Draft(0), Submit(1), Revoked(2). По умолчанию в запросе выдаются заказы с любыми статусами. Если необходимо выбрать заказы с определенными статусами - перечислите их через запятую в параметре запроса "status". Например, указав status=0,1 — получите только заказы в статусе Draft(0) и Submit(1).
Возвращает массив orders:
"orders": [
{
"_id": 10049,
"activationlimit": 2,
"date": 1528911062,
"submitdate": 1528915062,
"number": 1,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"description": "1234234234",
"quantity": 2,
"status": 1,
"type": 0,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
},{
"_id": 10048,
"activationlimit": 3,
"customer": {
"_id": 8,
"description": "test",
"email": "cust@mail.ru",
"name": "MyCostomer",
"phone": "123-12-12",
"status": 0,
"crmid": "",
"refid": ""
},
"date": 1528910935,
"submitdate": 1528915062,
"number: 2,
"description": "test",
"quantity": 2,
"status": 0,
"type": 0,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
},{
"_id": 10045,
"activationlimit": 1,
"date": 1528905572,
"submitdate": 1528915062,
"number": 3,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"customerrequired": true,
"description": "TEST_UPDATE2",
"quantity": 1,
"status": 1,
"type": 1,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
}];
Создание нового заказа (тип Sale)
Авторизация требуется. Входные параметры RAW JSON:
{
"customerId" : 8,
"orderActivationBirthDate":1528911062,
"orderActivationDeathDate":15210911062,
"orderCanOverwriteContainer": false,
"orderIsDemo": false,
"customerRequired": true,
"orderQuantity" : 10,
"orderActivationLimit" : 10,
"orderDescription" : "Created by Postmam",
"orderStatus" : 0,
"orderType" : 0,
"isHardwareLicense": false, //по умолчанию равно false
"crmId": "",
"refId": ""
}
'customerId' — идентификатор покупателя БД (может отсутствовать, тогда заказ не будет привязан к покупателю)
'orderQuantity' — количество серийных номеров или аппаратных ключей в заказе (задаётся пользователем).
'orderActivationLimit' — предел активаций для серийного номера в заказе (задаётся пользователем).
'orderDescription' — текстового описание назначения заказа(задаётся пользователем).
'orderStatus' — текущий жизненный статус заказа.
'orderType' — тип заказа (должно быть значение Sale).
'orderCanOverwriteContainer' — флаг, определяющий возможность перезаписать предыдущие лицензионные условия значениями из текущего заказа.
'orderIsDemo' — признак демо-заказа.
'customerrequired' - флаг — могут ли серийные номера активироваться без информации о клиенте.
'orderActivationBirthDate' — дата начала периода доступности заказа для активации лицензии.
'orderActivationDeathDate' — дата окончания периода доступности заказа для активации лицензии.
'isHardwareLicense' - тип лицензии — аппаратная или программная (по умолчанию - программная - false).
POST /v1.0/orders
Возвращает элемент order:
{
"order": {
"_id": 10052,
"number": 1,
"activationlimit": 10,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"customerrequired": true,
"customer": {
"_id": 8,
"description": "test",
"email": "cust@mail.ru",
"name": "MyCostomer",
"phone": "123-12-12",
"status": 0,
"crmid": "",
"refid": ""
},
"date": 0,
"submitdate": 1528915062,
"description": "Created by Postmam",
"quantity": 10,
"status": 0,
"type": 0,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
}
}
Создание нового заказа (тип Update)
Авторизация требуется. Входные параметры RAW JSON:
{
"orderActivationBirthDate":1528911062,
"orderActivationDeathDate":15210911062,
"orderCanOverwriteContainer": false,
"serialNumber" : "4uzFSk-ccyijp-SCDd4A-FMfezU-u7Rk6y", // опциональное поле. необходимо только если создается заказ на обновление серийного номера
"isHardwareLicense": true, // опциональное поле. необходимо только если создается заказ на обновление аппаратного ключа (должно быть выставлено в true)
"dongleId": 343242234, // опциональное поле. необходимо только если создается заказ на обновление аппаратного ключа
"orderDescription" : "Created by Postmam",
"orderType" : 1,
"crmId": "",
"refId": ""
}
'serialNumber' — серийных номер для которого необходимо выполнить обновление лицензионных условий (задаётся пользователем). Опциональное поле. необходимо только если создается заказ на обновление серийного номера.
'isHardwareLicense' — определяет тип лицензии. опциональное поле (по умолчанию false). Должно быть true для заказа на обновление аппаратного ключа.
'dongleId' — id аппаратного ключа. Опциональное поле. Необходимо только, если создается заказ на обновление аппаратного ключа
'orderDescription' — текстового описание назначения заказа(задаётся пользователем).
'orderType' — тип заказа (должно быть значение Update).
POST /v1.0/orders
Возвращает элемент order:
{
"order": {
"_id": 10054,
"activationlimit": 1,
"date": 0,
"submitdate": 1528915062,
"number": 1,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"customerrequired": true,
"description": "Created by Postmam",
"quantity": 1,
"status": 0,
"type": 1,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
}
Изменение заказа (тип Sale)
Авторизация требуется. Входные параметры RAW JSON:
{
"orderActivationBirthDate":1528911062,
"orderActivationDeathDate":15210911062,
"orderCanOverwriteContainer": false,
"customeRrequired": true,
"customerId": 123213
"orderQuantity" : 20,
"orderActivationLimit" : 20,
"orderDescription" : "Created by Postmam",
"orderStatus" : 0,
"orderIsDemo": false,
"isHardwareLicense": false,
"crmId": "",
"refId": ""
}
PUT /v1.0/orders/{id}
Возвращает элемент order:
{
"order": {
"_id": 10051,
"activationlimit": 20,
"date": 0,
"submitdate": 1528915062,
"number": 1,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"customerrequired": true,
"description": "Created by Postmam",
"quantity": 20,
"status": 0,
"type": 0,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
}
}
Изменение заказа (тип Update)
Авторизация требуется. Входные параметры RAW JSON:
{
"orderActivationBirthDate":1528911062,
"orderActivationDeathDate":15210911062,
"orderCanOverwriteContainer": false,
"orderDescription" : "Created by Postmam",
"orderStatus" : 0,
"crmId": "",
"refId": ""
}
PUT /v1.0/orders/{id}
Возвращает элемент order:
{
"order": {
"_id": 10054,
"activationlimit": 1,
"date": 0,
"submitdate": 1528915062,
"number": 1,
"activationbirthdate":1528911062,
"activationdeathdate":15210911062,
"canoverwritecontainer": false,
"isdemo": false,
"customerrequired": true,
"description": "Created by Postman",
"quantity": 1,
"status": 0,
"type": 1,
"ishardwarelicense": false,
"crmid": "",
"refid": ""
}
}
При подтверждении заказа на аппаратные ключи могут получены следующие дополнительные ошибки:
- ключ не поддерживает ограниченные по времени компонент (код ошибки 10172);
- ключ не поддерживает сетевой компонент (код ошибки 10173);
- общее количество сетевых компонентов превышает сетевой ресурс ключа (код ошибки 10174).
При получении ошибок 10172 и 10173 в ответе на запрос помимо описания ошибки также будут следующе поля: ID аппаратного ключа, номер компонента, номер продукта, номер заказа. Например:
{
"conflictedDongleId":999392418,
"conflictedFeatureNumber":16,
"conflictedOrderNumber":94,
"conflictedProductNumber":12350,
"status":{"code":10172,"description":"Dongle does not support time limited features","message":"Bad Request","status":400}
}
При получении ошибки 10174 в ответе на запрос помимо описания ошибки будет только значение ID аппаратного ключа.
Удаление заказа
Авторизация требуется. Входных параметров нет.
DELETE /v1.0/orders/{id}
Получение заказа по идентификатору
Авторизация требуется. Входных параметров нет.
GET /v1.0/orders/{id}
Возвращает элемент order.
Пример ответа (для заказа на аппаратные ключи):
{
"order": {
"_id": 471,
"activationbirthdate": 1571130180,
"activationdeathdate": 0,
"activationlimit": 0,
"archivationdate": 0,
"archived": false,
"canoverwritecontainer": false,
"crmid": "",
"customer": {
"_id": 10,
"archivationdate": 0,
"archived": false,
"companyname": "baskin&robings",
"crmid": "",
"description": "",
"email": "dfgsfg@dfg-df.ru",
"lastname": "cream",
"name": "ice",
"phone": "+349534534534",
"refid": "",
"status": 0
},
"customerrequired": false,
"date": 1571130686,
"description": "",
"dongles": [
{
"dongleid": 991846791,
"lastburn": {
"_id": 113,
"actiondate": 1571403137,
"actionresult": 0,
"activationsconsumed": 0,
"activationscountcurrent": 41
},
"model": 2,
"netresource": 0,
"publiccode": 1368487351,
"typeflags": 442
}
],
"isdemo": true,
"ishardwarelicense": true,
"number": 70,
"products": [
{
"_id": 126,
"accesscode_id": -1,
"archivationdate": 0,
"archived": false,
"binding": {
"CAN_REPLACE_CPU": false,
"CAN_REPLACE_DVD": false,
"CAN_REPLACE_HDD": false,
"CAN_REPLACE_MAC": false,
"CAN_REPLACE_MOTHERBOARD": false,
"CAN_REPLACE_OS": false,
"CPU": true,
"DVD": false,
"HDD": true,
"MAC": true,
"MOTHERBOARD": true,
"OS": false
},
"binding_maxhardwarechangenumber": 0,
"binding_scheme": 0,
"crmid": "",
"description": "test_firmware_product778",
"flags": 0,
"hardwarebindingscheme": 0,
"licensetype": 0,
"modification": 0,
"name": "test_firmware_product778",
"productnumber": 778,
"refid": "",
"status": 1,
"memoryitems": []
}
],
"quantity": 1,
"refid": "",
"status": 1,
"submitdate": 1571130723,
"type": 1
}
}
Добавление продукта к заказу
Авторизация требуется. Входных параметров нет.
POST /v1.0/orders/{id}/products/{pid}
Удаление продукта из заказа
Авторизация требуется. Входных параметров нет.
DELETE /v1.0/orders/{id}/products/{pid}
Добавление фичи к продукту в заказе
Авторизация требуется. Входных параметров нет.
POST /v1.0/orders/{id}/products/{pid}/features{fid}
Возвращает элемент 'licence':
{
"license": {
"consumptionmode": 0,
"flags": 0,
"netlicensescount": 12,
"rentbegindate": 0,
"rentdayscount": 55,
"rentenddate": 0,
"runcounter": 0,
"licensingmodel": 4,
"isremote": true
}
}
Удаление фичи из продукта в заказе
Авторизация требуется. Входных параметров нет.
DELETE /v1.0/orders/{id}/products/{pid}/features{fid}
Получение всех фич для продукта в заказе
Авторизация требуется. Входных параметров нет.
GET /v1.0/orders/{id}/products/{pid}/features
Возвращает массив 'features':
{
"features": [
{
"_id": 14,
"archivationdate": 0,
"archived": false,
"crmid": "",
"defaultLicense": {
"canexclude": false,
"canmodify": false,
"consumptionmode": 0,
"flags": 4,
"isremote": false,
"licensingmodel": 2,
"netlicensescount": 0,
"rentbegindate": 1565273129,
"rentdayscount": 0,
"rentenddate": 1596895529,
"runcounter": 0
},
"description": "f4",
"featurenumber": 4,
"pubkey":"F9 E5 EC 6B 52 54 BC 80 45 7D 49 BB F0 61 F9 F2 EC AA 9F 63 79 32 0A B6 77 44 8A E7 16 AC C1 82 8A 14 73 1E 56 B6 EF 53"
"license": {
"consumptionmode": 0,
"flags": 4,
"isExcluded": 0,
"isremote": false,
"licensingmodel": 2,
"netlicensescount": 0,
"rentbegindate": 1565273129,
"rentdayscount": 0,
"rentenddate": 1596895529,
"runcounter": 0
},
"name": "f4",
"refid": ""
},
{
"_id": 31,
"archivationdate": 0,
"archived": false,
"crmid": "",
"defaultLicense": {
"canexclude": true,
"canmodify": true,
"consumptionmode": 0,
"flags": 4,
"isremote": true,
"licensingmodel": 1,
"netlicensescount": 11,
"rentbegindate": 0,
"rentdayscount": 0,
"rentenddate": 0,
"runcounter": 0
},
"description": "Created by postMan",
"featurenumber": 8,
"pubkey":"F9 E5 EC 6B 52 54 BC 80 45 7D 49 BB F0 61 F9 F2 EC AA 9F 63 79 32 0A B6 77 44 8A E7 16 AC C1 82 8A 14 73 1E 56 B6 EF 53"
"license": {
"consumptionmode": 0,
"flags": 4,
"isExcluded": 1,
"isremote": true,
"licensingmodel": 1,
"netlicensescount": 11,
"rentbegindate": 0,
"rentdayscount": 0,
"rentenddate": 0,
"runcounter": 0
},
"name": ",PostMan",
"refid": ""
}
]
}
Изменение лицензионных условий для фичи продукта в заказе
Авторизация требуется. Входные параметры RAW JSON (набор полей зависит от типа лицензирования):
{
"licensingmodel": 4,
"licenseRentBeginDate" : 0,
"licenseRentEndDate" : 0,
"licenseRentDaysCount" : 55,
"licenseNetLicenseCount" : 12,
"consumptionmode" : 0,
"flags" : 0,
"licenseRuncounter": 0,
"isRemote": true
}
PUT /v1.0/orders/{id}/products/{pid}/features/{fid}
Возвращает элемент 'licence':
{
"license": {
"consumptionmode": 0,
"flags": 0,
"netlicensescount": 12,
"rentbegindate": 0,
"rentdayscount": 55,
"rentenddate": 0,
"runcounter": 0,
"licensingmodel": 4,
"isremote": true
}
}
Изменение ячейки памяти в продукте заказа
Авторизация требуется. Входные параметры RAW JSON:
{
"data": "AdaFFFlgYWJj=="
}
PUT /v1.0/orders/{id}/products/{pid}/memoryitems/{mid}/params/{paramid}
Возвращает элемент param:
{
"param": {
"_id": 3,
"data": "AdaFFFlgYWJj",
"description": "param1",
"editallowed": true,
"name": "param1",
"offset": 20,
"size": 10
}
}
Получение лицензий серийных номеров и аппаратных ключей
Авторизация требуется. Входные параметры RAW JSON:
{
"keySearchValue":"wubSTT", // опциональный параметр
"clientId": 10, // опциональный параметр
"productId": "20490", // опциональный параметр
"orderNumber": "21626" // опциональный параметр
}
POST /v1.0/search/license
Возвращает объект, содержащий массивы serialnumbers и dongles:
{
"dongles": [],
"serialnumbers": [
{
"_id": 20910,
"activationcount": 0,
"activationlimit": 3,
"customer": {
"_id": 10,
"archivationdate": 0,
"archived": false,
"companyname": "baskin&robings",
"crmid": "",
"description": "",
"email": "dfgsfg@dfg-df.ru",
"lastname": "cream",
"name": "ice",
"phone": "+349534534534",
"refid": "",
"status": 0
},
"dongleid": -1359759134,
"licensecontainerversion": 0,
"memoryitems": [
{
"_id": 10187,
"accesstype": 0,
"action": 0,
"aliasid": 500,
"archivationdate": 0,
"archived": false,
"crmid": "",
"description": "",
"draft": false,
"maxaccesserrors": 5,
"name": "item500",
"params": [
{
"_id": 10235,
"data": "AAHiQA==",
"datatype": 1,
"description": "",
"editallowed": true,
"name": "123456",
"offset": 0,
"size": 4
}
],
"readpassword": 0,
"refid": "",
"size": 0,
"totalparams_size": 4,
"writepassword": 0
}
],
"products": [
{
"_id": 20490,
"accesscode_id": 18,
"archivationdate": 0,
"archived": false,
"binding": {
"CAN_REPLACE_CPU": false,
"CAN_REPLACE_DVD": false,
"CAN_REPLACE_HDD": false,
"CAN_REPLACE_MAC": false,
"CAN_REPLACE_MOTHERBOARD": false,
"CAN_REPLACE_OS": false,
"CPU": true,
"DVD": false,
"HDD": true,
"MAC": true,
"MOTHERBOARD": true,
"OS": false
},
"binding_maxhardwarechangenumber": 0,
"binding_scheme": 0,
"crmid": "",
"description": "",
"featuresWithLicenses": [
{
"_id": 136,
"archivationdate": 0,
"archived": false,
"crmid": "",
"defaultLicense": {
"canexclude": true,
"canmodify": true,
"consumptionmode": 0,
"flags": 0,
"isremote": false,
"licensingmodel": 1,
"netlicensescount": 0,
"rentbegindate": 0,
"rentdayscount": 0,
"rentenddate": 0,
"runcounter": 0
},
"description": "f12274",
"featurenumber": 12274,
"license": {
"consumptionmode": 0,
"flags": 0,
"isExcluded": 0,
"isremote": false,
"licensingmodel": 1,
"netlicensescount": 0,
"rentbegindate": 0,
"rentdayscount": 0,
"rentenddate": 0,
"runcounter": 0
},
"name": "f12274",
"pubkey": "61 78 04 38 6F CC 61 9A E3 38 C6 11 12 8A 95 7B B0 A6 1B 41 E4 8D 17 B6 6F AE 1F 03 91 9A 68 88 B7 9A 8E 55 34 57 C4 58",
"refid": ""
}
],
"flags": 0,
"hardwarebindingscheme": 0,
"licensetype": 0,
"memoryitems": [
{
"_id": 10187,
"accesstype": 0,
"action": 0,
"aliasid": 500,
"archivationdate": 0,
"archived": false,
"crmid": "",
"description": "",
"draft": false,
"maxaccesserrors": 5,
"name": "item500",
"params": [
{
"_id": 10235,
"data": "AAHiQA==",
"datatype": 1,
"description": "",
"editallowed": true,
"name": "123456",
"offset": 0,
"size": 4
}
],
"readpassword": 0,
"refid": "",
"size": 0,
"totalparams_size": 4,
"writepassword": 0
}
],
"modification": 0,
"name": "mem_pr",
"productnumber": 45369,
"refid": "",
"status": 1
}
],
"serialstring": "VJ7jgF-wubSTT-yt1TMj-utpB2R-BEuNb8",
"status": 0
}
]
}