Управление серийными номерами на ПО происходит через заказы.
Жизненный цикл заказа (статусы):
- 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 } ] }