Floating Server
Best Practices
Floating Features
9 min
topics covered on this page floating feature registration using /featureregister and /check license feature floating feature release using /featurerelease and /feature release releasing all floating feature registrations using /featurerelease/all and /feature release/all offline floating feature starting from release v1 4 11, the floating server now supports offline floating features this functionality allows customers to add offline floating features to a product and licenses built for that product these can then be imported into the floating server, enabling the registration and release of users into that feature entirely offline on their premises to add these features to a product, navigate to the product within the vendor platform, select the "features" tab, and click on the "add product feature" button in the popup window, after specifying the feature's name, code, and other details, check the "offline floating feature" checkbox, as shown in the image below the api endpoints associated with floating features are listed below feature register registers a user to a specific feature of a license on the floating server requires a username , along with the product code and feature code { "name" "register a user to a floating feature of a product", "method" "post", "url" "http //localhost 8080/api/v4/featureregister", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n});\n\nvar requestoptions = {\n method 'post',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featureregister\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/featureregister\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}" }, { "id" "una7x0opugf2bewoxxezb", "language" "400", "customlabel" "", "code" "{\n \\"code\\" \\"feature not found\\",\n \\"message\\" \\"feature color not found for product test\\",\n \\"status\\" 400\n}" } ], "selectedlanguageid" "isr9vdultambzma6d0iwf" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "product", "kind" "required", "type" "string", "description" "product code of the target product" }, { "name" "feature", "kind" "required", "type" "string", "description" "feature code of the target feature", "children" \[] }, { "name" "user", "kind" "required", "type" "string", "description" "name or id of the user to be registered", "children" \[] }, { "name" "os hostname", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "ip local", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "user info", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "registered at", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "borrowed until", "kind" "required", "type" "string", "description" "", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } feature release releases a user who has been registered to a specific feature of a license { "name" "release a registered user from a floating feature of a product", "method" "post", "url" "http //localhost 8080/api/v4/featurerelease", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n});\n\nvar requestoptions = {\n method 'post',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featurerelease\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/featurerelease\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "\\"feature released\\"" }, { "id" "una7x0opugf2bewoxxezb", "language" "400", "customlabel" "", "code" "{\n \\"code\\" \\"feature not found\\",\n \\"message\\" \\"feature color not found for product test\\",\n \\"status\\" 400\n}" } ], "selectedlanguageid" "una7x0opugf2bewoxxezb" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "product", "kind" "required", "type" "string", "description" "product code of the target product" }, { "name" "feature", "kind" "required", "type" "string", "description" "feature code of the target feature", "children" \[] }, { "name" "user", "kind" "required", "type" "string", "description" "name or id of the user to be registered", "children" \[] }, { "name" "os hostname", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "ip local", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "user info", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "registered at", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "borrowed until", "kind" "required", "type" "string", "description" "", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } release all releases all users registered to all features across all licenses { "name" "release all floating feature registrations", "method" "get", "url" "http //localhost 8080/api/v4/featurerelease/all", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({});\n\nvar requestoptions = {\n method 'get',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featurerelease/all\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/featurerelease/all\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "\\"\\"" } ], "selectedlanguageid" "isr9vdultambzma6d0iwf" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } licensespring compatible floating endpoints to align with licensespring’s api, starting from version v1 6 2 , three new endpoints have been added to support floating feature functionality these endpoints behave similarly to those mentioned above, but their routes are modeled after licensespring’s api for compatibility feature register /check license feature and /featureregister provide the same functionality they register a user to a specific feature of a license on the floating server they require a username , along with the product code and feature code { "name" "register a user to a floating feature of a product", "method" "post", "url" "http //localhost 8080/api/v4/check license feature", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n});\n\nvar requestoptions = {\n method 'post',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featureregister\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/check license feature\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}" }, { "id" "una7x0opugf2bewoxxezb", "language" "400", "customlabel" "", "code" "{\n \\"code\\" \\"feature not found\\",\n \\"message\\" \\"feature color not found for product test\\",\n \\"status\\" 400\n}" } ], "selectedlanguageid" "isr9vdultambzma6d0iwf" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "product", "kind" "required", "type" "string", "description" "product code of the target product" }, { "name" "feature", "kind" "required", "type" "string", "description" "feature code of the target feature", "children" \[] }, { "name" "user", "kind" "required", "type" "string", "description" "name or id of the user to be registered", "children" \[] }, { "name" "os hostname", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "ip local", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "user info", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "registered at", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "borrowed until", "kind" "required", "type" "string", "description" "", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } feature release /feature release and /featurerelease are functionally equivalent they release a user who has been registered to a specific feature of a license { "name" "release a registered user from a floating feature of a product", "method" "post", "url" "http //localhost 8080/api/v4/feature release", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n});\n\nvar requestoptions = {\n method 'post',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featurerelease\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/feature release\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{\n \\"product\\" \\"test\\",\n \\"feature\\" \\"testingfeature\\",\n \\"user\\" \\"testuser\\",\n \\"os hostname\\" \\"\\",\n \\"ip local\\" \\"0 1 1 1\\",\n \\"user info\\" \\"\\",\n \\"registered at\\" \\"2024 08 26t12 21 59 776731 07 00\\",\n \\"borrowed until\\" \\"0001 01 01t00 00 00z\\"\n}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "\\"feature released\\"" }, { "id" "una7x0opugf2bewoxxezb", "language" "400", "customlabel" "", "code" "{\n \\"code\\" \\"feature not found\\",\n \\"message\\" \\"feature color not found for product test\\",\n \\"status\\" 400\n}" } ], "selectedlanguageid" "una7x0opugf2bewoxxezb" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[ { "name" "product", "kind" "required", "type" "string", "description" "product code of the target product" }, { "name" "feature", "kind" "required", "type" "string", "description" "feature code of the target feature", "children" \[] }, { "name" "user", "kind" "required", "type" "string", "description" "name or id of the user to be registered", "children" \[] }, { "name" "os hostname", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "ip local", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "user info", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "registered at", "kind" "required", "type" "string", "description" "", "children" \[] }, { "name" "borrowed until", "kind" "required", "type" "string", "description" "", "children" \[] } ], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } } release all features /feature release/all and /featurerelease/all perform the same operation they release all users registered to all features across all licenses { "name" "release all floating feature registrations", "method" "get", "url" "http //localhost 8080/api/v4/feature release/all", "description" "", "tab" "examples", "examples" { "languages" \[ { "id" "imnckyirunsmo7amxtncj", "language" "javascript", "code" "var myheaders = new headers();\nmyheaders append(\\"accept\\", \\"application/json\\");\nmyheaders append(\\"content type\\", \\"application/json\\");\n\nvar raw = json stringify({});\n\nvar requestoptions = {\n method 'get',\n headers myheaders,\n body raw,\n redirect 'follow'\n};\n\nfetch(\\"http //localhost 8080/api/v4/featurerelease/all\\", requestoptions)\n then(response => response text())\n then(result => console log(result))\n catch(error => console log('error', error));", "customlabel" "" }, { "id" "imlztckvnhv9m g8y5mmw", "language" "curl", "code" "curl x post \\"http //localhost 8080/api/v4/feature release/all\\" \\\\\n h \\"accept application/json\\" \\\\\n h \\"content type application/json\\" \\\\\n d '{}'\n", "customlabel" "" } ], "selectedlanguageid" "imlztckvnhv9m g8y5mmw" }, "results" { "languages" \[ { "id" "isr9vdultambzma6d0iwf", "language" "200", "customlabel" "", "code" "\\"\\"" } ], "selectedlanguageid" "isr9vdultambzma6d0iwf" }, "request" { "pathparameters" \[], "queryparameters" \[], "headerparameters" \[], "bodydataparameters" \[], "formdataparameters" \[] }, "currentnewparameter" { "label" "body parameter", "value" "bodydataparameters" } }