You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 2 Current »

The product allows you to combine several features and set initial license conditions for them. Also the product allows to set additional protection parameters for the entire application. Essentially the product determines the format of the future license for the entire application.

The product life cycle (product status):

  • Draft (0) Draft. It is assigned at the moment of product creation. In this status, the product can be edited.
  • OnSale (1) On Sale. It is assigned at the moment of order confirmation. It is impossible to edit product in this status.

For each feature that is added to the product, initial license terms must be assigned in the 'defaultLicense' object:

  • 'canexclude' allow the ability to exclude a feature from an order.
  • 'canmodify'   allow changing feature license terms in the order. 
  • 'rentbegindate'   the software rental start date.
  • 'rentenddate'   the software rental end date.
  • 'rentdayscount'   the number of days the software has been running.
  • 'netlicensesCount' the number of software network licenses.
  • 'runcounter' — the number of software launches.
  • 'consumptionmode' network licenses counting method , "0" - by workstations, "1" - by connections, "2" - by copies of the program
  • 'flags' a set of additional flags (0x04 - prohibits the feature from working in a virtual machine, 0x100 - prohibits more than one copy of the application from working in remote desktop mode) 
  • 'licensingmodel' feature licensing model
  • 'isremote' network feature sign

It is not possible to select both software rental and software operation days. Either the 'rentdayscount' field or the 'rentbegindate' and 'rentenddate' fields must be specified. The license terms for a feature can be changed at the time of order creation if the 'canmodify' field is set to 1. A feature can be excluded from the order entirely if the 'canexclude' field is set to 1.

License typeСonditionsDefault values
Network licensenetlicensesCount=0

netlicensesCount= "10"
consumptionmode= "0","1" or "2"

Local licensenetlicensesCount<>0

netlicensesCount= "0"
consumptionmode= "0","1" or "2"


СonditionsDefault values
No restrictions

rentbegindate, rentenddate and rentdayscount parameters are not specified

rentbegindate = ""
rentenddate = ""
rentdayscount= ""
Time period

the values ​​of the rentbegindate and rentenddate parameters are indicated

rentbegindate = "[current date]"
rentenddate = "[current date + 365 days]"
rentdayscount = ""
Number of days 

the values ​​of the rentdayscount parameter are specified

rentbegindate = ""
rentenddate = ""
rentdayscount = "365"

Get a list of products

Authorization is required. There are no input parameters. 

GET /v1.0/products

Pagination and sorting are available for the query. Available sorting fields: number, name, archivationdate. The default values ​​for sorting and pagination are: sortby=number&direction=asc&offset=0&limit=100.

In this query, it is possible to specify the parameter status=draft (status=onsale) to select only products with the draft (onsale) status. If the parameter is not specified or does not match one of {draft, onsale}, then all products will be selected, regardless of their status.

The query has an optional parameter archived=false (archived=true) - to display non-archived records (archived records). By default, the query displays all records - both archived and non-archived.

The query has an optional parameter licensetype=x,y,.. to filter records by license type: software license (1), hardware key (2), software license and hardware key simultaneously (0). The query will select only products intended for the specified types of license.

The query has an optional parameter accesscodesid=some_number (where some_number is the access code id), which allows you to get only a list of products with a specific set of vendor access codes.

Returns products array:

"products": [{
  "_id": 10020,
  "accesscode_id": 1,
  "description": "TEST6",
  "modification": 10,
  "name": "TEST",
  "archived": false,
  "archivationdate": 0
  "productnumber": 1,
  "flags": 0,
  "status": 1,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2},
 "licensetype": 0,
 "crmid": "",
 "refid": "",
  "memoryitems": []
},
{
  "_id": 10038,
  "accesscode_id": 1,
  "description": "for testing purpose",
  "modification": 0,
  "name": "NEW_CALC",
  "archived": false,
  "archivationdate": 0
  "productnumber": 2,
  "flags": 0,
  "status": 1,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
 "licensetype": 0,
 "crmid": "",
 "refid": "",
 "memoryitems": []
} ]}

'_id' — is a DB product identifier

'accesscode_id' — is a DB access code identifier

'description' — is a text description of the product purpose (user-defined).

'modification' - integer — is a product modification number (user-defined). The number space is vendor-specific.

'name' — is a short text name of the product (user-defined).

'productnumber' - integer — is a product number (user-defined). The number space is vendor-specific. Possible values: [1;255].

'flags' — are global protection flags for the entire application (user-defined).

'status' — is a current product life status.

'hardwareBindingScheme' — is a product binding scheme to hardware. 0 — default binding (binding to CPU, HDD, Motherboard, MAC); 1 — binding to HDD, Motherboard only; 2 — custom binding, specified via custom binding id in 'bindingSchemeId' parameter.

'bindingSchemeId' — is a custom binding scheme id, specified only if hardwareBindingScheme = 2.

'licensetype' — the value of this field determines which license/order this product can be placed in (0 — in software and hardware license, 1 — only in software, 2 — only in hardware)


Create a new product 

Authorization is required. RAW JSON input parameters:

{
  "productNumber" : 5,
  "createModification" : false, // create product modification? false by default
  "accessCodeId" : 1,
  "productName" : "PostMan",
  "productDescription" : "Created by postman",
  "productFlags" : 0,
  "archived": false,
  "hardwareBindingScheme": 2,
  "bindingSchemeId": 2,
  "licenseType": 0, // by default the value is 0
  "crmId": "",
  "refId": ""
}

'hardwareBindingScheme' — is a product binding scheme to hardware. 0 — default binding (binding to CPU, HDD, Motherboard, MAC); 1 — binding to HDD, Motherboard only; 2 — custom binding, specified via custom binding id in 'bindingSchemeId' parameter.

'bindingSchemeId' — is a custom binding scheme id, specified only if hardwareBindingScheme = 2.

Creation of a product with an existing number and modification is not allowed.

POST /v1.0/products

Returns the product element:

{
  "product": {
  "_id": 10039,
  "accesscode_id": 1,
  "description": "Created by postman",
  "modification": 5,
  "name": "PostMan",
  "archived": false,
  "archivationdate": 0
  "productnumber": 5,
  "flags": 0,
  "status": 0,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
 "licensetype": 0,
 "crmid": "",
 "refid": "",
 "memoryitems": []
}

Create a new product with an initial list of features and assign initial license terms 

Authorization is required. RAW JSON input parameters:

{
"productNumber" : 5,
"createModification" : false, // create product modification? false by default
"accessCodeId" : 1,
"productName" : "PostMan",
"productDescription" : "Created by postman",
"productFlags" : 0, 
"archived": false,
"hardwareBindingScheme": 2,
"bindingSchemeId": 2,
"licenseType": 0,
"crmId": "",
"refId": ""

"features":
  [{
     "_id": 10029,
     "defaultLicense": {
     "canexclude": true,
     "canmodify": true,
     "consumptionmode": 0,
     "flags": 0,
     "netlicensescount": 0,
     "rentbegindate": 0,
     "rentdayscount": 10,
     "rentenddate": 0,
     "runcounter": 0,
     "licensingmodel": 4,
     "isRemote": false,
     "crmId": "",
     "refId": ""
}},
{
    "_id": 10030,
    "defaultLicense": {
    "canexclude": true,
    "canmodify": true,
    "consumptionmode": 0,
    "flags": 0,
    "netlicensescount": 0,
    "rentbegindate": 0,
    "rentdayscount": 10,
    "rentenddate": 0,
    "runcounter": 0,
    "licensingmodel": 4,
    "isRemote": false,
     "crmId": "",
     "refId": ""
}}
]}

'hardwareBindingScheme' схема привязки продукта к оборудованию. 0 привязка по умолчанию (привязка к CPU, HDD, Motherboard, MAC); 1 привязка к только HDD, Motherboard; 2 пользовательская привязка, задается через id пользовательской привязки в параметре 'bindingSchemeId'.

'bindingSchemeId' id пользовательской схемы привязки, задается только если hardwareBindingScheme = 2.

POST /v1.0/products/features

Returns the product element:

{
  "product": {
  "_id": 10039,
  "accesscode_id": 1,
  "description": "Created by postman",
  "modification": 5,
  "name": "PostMan",
  "archived": false,
  "archivationdate": 0
  "productnumber": 5,
  "flags": 0,
  "status": 0,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
 "licensetype": 0,
 "crmid": "",
 "refid": "",
 "memoryitems": []
}

Change a Product

Authorization is required. RAW JSON input parameters:

{
  "productName" : "PostMan By PostMan",
  "productDescription" : "Created by postman",
  "productFlags" : 0,
  "accessCodeId" : 1,
  "archived": false,
  "hardwareBindingScheme": 2,
  "bindingSchemeId": 2,
  "licenseType": 0,
  "crmId": "",
  "refId": ""
}

PUT /v1.0/products/{id}

Returns the product element:

{
  "product": {
  "_id": 10039,
  "accesscode_id": 1,
  "description": "Created by postman",
  "modification": 5,
  "name": "PostMan By PostMan",
  "archived": false,
  "archivationdate": 0
  "productnumber": 5,
  "flags": 0,
  "status": 0,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
 "licensetype": 0,
 "crmid": "",
 "refid": "",
 "memoryitems": []
}
}

Delete a product

Authorization is required. There are no input parameters. 

DELETE /v1.0/products/{id}

Get a product by ID

Authorization is required. There are no input parameters. 

GET /v1.0/products/{id}

Returns the product element:

{
  "product": {
  "_id": 10039,
  "accesscode_id": 1,
  "description": "Created by postman",
  "modification": 5,
  "name": "PostMan By PostMan",
  "archived": false,
  "archivationdate": 0
  "productnumber": 5,
  "flags": 0,
  "status": 0,
  "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,
  "hardwarebindingscheme": 2,
  "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
  "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
  "licensetype": 0,
  "crmid": "",
  "refid": "",
  "memoryitems": []
}
}

Move a product to and from the archive 

Authorization is required. RAW JSON input parameters:

{
  "archived": true
}

PUT /v1.0/products/{id}/changearchivestatus


Returns the product element:

{
  "product": {
  "_id": 10039,
  "accesscode_id": 1,
  "description": "Created by postman",
  "modification": 5,
  "name": "PostMan By PostMan",
  "archived": false,
  "archivationdate": 0
  "productnumber": 5,
  "flags": 0,
  "status": 0,
  "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,
 "hardwarebindingscheme": 2,
 "binding_customschemeid": 34,           // optionally sent if hardwarebindingscheme = 2
 "binding_customschemename": "myscheme", // optionally sent if hardwarebindingscheme = 2,
 "licensetype": 0,
 "crmid": "",
 "refid": "",
 "memoryitems": []
}
}

 

Add a feature to a product and assign initial license terms

Authorization is required. RAW JSON input parameters:

{
"defaultLicense": {
  "canexclude" : true,
  "canmodify" : true,
  "rentbegindate" : 0,
  "rentenddate" : 0,
  "rentdayscount" : 10,
  "netlicensescount" : 5,
  "consumptionmode" : 0,
  "flags" : 0,
  "licensingmodel": 4,
  "isRemote": true
}

POST /v1.0/products/{id}/features/{fid}

Returns the defaultLicense element:

{
  "defaultLicense": {
  "canexclude": true,
  "canmodify": true,
  "consumptionmode": 0,
  "flags": 0,
  "netlicensescount": 5,
  "rentbegindate": 0,
  "rentdayscount": 10,
  "rentenddate": 0,
  "runcounter": 0,
  "licensingmodel": 4,
  "isremote": true
}
}

Change the initial license terms for a feature in a product 

Authorization is required. RAW JSON input parameters:

{
"defaultLicense": {
  "canexclude" : 1,
  "canmodify" : 1,
  "rentbegindate" : 0,
  "rentenddate" : 0,
  "rentdayscount" : 20,
  "netlicensescount" : 5,
  "consumptionmode" : 0
  "flags : 0,
  "licensingmodel": 4,
  "isRemote": true
}

PUT /v1.0/products/{id}/features/{fid}

Returns the defaultLicense element:

{
  "defaultLicense": {
  "canexclude": true,
  "canmodify": true,
  "consumptionmode": 0,

  "flags": 0,
  "netlicensescount": 5,
  "rentbegindate": 0,
  "rentdayscount": 20,
  "rentenddate": 0,
  "runcounter": 0,
  "licensingmodel": 4,
  "isremote": true
}
}

Remove a feature from a product

Authorization is required. There are no input parameters. 

DELETE /v1.0/products/{id}/features/{fid}

Get all features associated with a product

Authorization is required. There are no input parameters.

GET /v1.0/products/{id}/features

Returns the features array including the default license terms:

"features": [
{
  "_id": 10029,
  "defaultLicense": {
    "canexclude": true,
    "canmodify": true,
    "consumptionmode": 0,

    "flags": 0,
    "netlicensescount": 0,
    "rentbegindate": 0,
    "rentdayscount": 10,
    "rentenddate": 0,
    "runcounter": 0,
    "licensingmodel": 4,
    "isremote": false
  },
  "description": "My test feature",
  "featurenumber": 1,
  "name": "Feature 1",
  "pubkey":"11 45 0A B6 77 EC AA 9F 63 79 32 C1 82 8A 14 EC 6B 52 54 BC 80 45 7D 49 BB 73 1E 56 6B 52 54 BC 80 45 7D 34 56 BB AA 99",
  "crmid": "",
  "refid": ""
},
{
  "_id": 10030,
  "defaultLicense": {
    "canexclude": true,
    "canmodify": true,
    "consumptionmode": 0,

    "flags": 0,
    "netlicensescount": 10,
    "rentbegindate": 0,
    "rentdayscount": 0,
    "rentenddate": 0,
    "runcounter": 0,
    "licensingmodel": 4,
    "isremote": true
},
  "description": "Feature2",
  "featurenumber": 2,
  "name": "Feature2",
  "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",
  "crmid": "",
  "refid": ""
}]

Get a product feature by ID

Authorization is required. There are no input parameters. 

GET /v1.0/products/{id}/features/{fid}

Returns the feature element including the default license terms: 

{
  "feature": {
  "_id": 10033,
  "defaultLicense": {
    "canexclude": true,
    "canmodify": true,
    "consumptionmode": 0,

    "flags": 0,
    "netlicensescount": 5,
    "rentbegindate": 0,
    "rentdayscount": 10,
    "rentenddate": 0,
    "runcounter": 0,
    "licensingmodel": 4,
    "isremote": true
  },
"description": "Created by postMan",
"featurenumber": 5,
"name": "PostMan",
"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",
"crmid": "",
"refid": ""
}
}

Create a custom binding scheme

Authorization is required. RAW JSON input parameters:

{
	"name":"myscheme3",
	"maxChangeNumber": 3,
	"cpuBinding": true,
	"canReplaceCpu": true,
	"hddBinding": true,
	"canReplaceHdd": true,
	"dvdBinding": true,
	"canReplaceDvd": true,
	"osBinding": true,
	"canReplaceOs": true,
	"mbBinding": true,
	"canReplaceMb": false,
	"macBinding": false,
	"canReplaceMac": false
}

POST /v1.0/customhardwarebindings

Returns the custombinding element: 

{
    "custombinding": {
        "_id": 3,
        "bindmask": {
            "CAN_REPLACE_CPU": true,
            "CAN_REPLACE_DVD": true,
            "CAN_REPLACE_HDD": true,
            "CAN_REPLACE_MAC": false,
            "CAN_REPLACE_MOTHERBOARD": false,
            "CAN_REPLACE_OS": true,
            "CPU": true,
            "DVD": true,
            "HDD": true,
            "MAC": false,
            "MOTHERBOARD": true,
            "OS": true
        },
        "maxchangenumber": 3,
        "name": "myscheme3"
    }
}

Get a list of custom bindings

Authorization is required. There are no input parameters. 

GET /v1.0/customhardwarebindings

Returns the custombindings array:

{
    "custombindings": [
        {
            "_id": 1,
            "bindmask": {
                "CAN_REPLACE_CPU": true,
                "CAN_REPLACE_DVD": true,
                "CAN_REPLACE_HDD": true,
                "CAN_REPLACE_MAC": false,
                "CAN_REPLACE_MOTHERBOARD": false,
                "CAN_REPLACE_OS": true,
                "CPU": true,
                "DVD": true,
                "HDD": true,
                "MAC": false,
                "MOTHERBOARD": true,
                "OS": true
            },
            "maxchangenumber": 3,
            "name": "myscheme1"
        },
        {
            "_id": 2,
            "bindmask": {
                "CAN_REPLACE_CPU": true,
                "CAN_REPLACE_DVD": true,
                "CAN_REPLACE_HDD": true,
                "CAN_REPLACE_MAC": false,
                "CAN_REPLACE_MOTHERBOARD": false,
                "CAN_REPLACE_OS": true,
                "CPU": true,
                "DVD": true,
                "HDD": true,
                "MAC": false,
                "MOTHERBOARD": true,
                "OS": true
            },
            "maxchangenumber": 3,
            "name": "myscheme2"
        }
    ]
}

Get the value of the next product number (use when adding a new product)

Authorization is required. There are no input parameters. 

GET /v1.0/getnextproductnumber

Returns:

{
    "nextproductnumber": 889
}

Add a memory item to a product 

Authorization is required. There are no input parameters. 

POST /v1.0/products/{id}/memoryitems/{mid}

Edit a memory item in a product

Authorization is required. RAW JSON input parameters:

{
	"editAllowed": true,
	"data": "ZXWFlg=="
}

PUT /v1.0/products/{id}/memoryitems/{mid}/params/{paramid}

Returns the param element:

{
    "param": {
        "_id": 3,
        "data": "ZXWFlg==",
        "description": "param1",
        "editallowed": true,
        "name": "param1",
        "offset": 20,
        "size": 10
    }
}

Remove a memory item from a product

Authorization is required. There are no input parameters. 

DELETE /v1.0/products/{id}/memoryitems/{mid}

  • No labels