using RestSharp;
var options = new RestClientOptions("http://localhost:53294/api/v1/Agents/License/SaveCentralLicense");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"License\": [\n {\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"RestrictedModuleLicenses\": [\n {\n \"Unrestricted\": true,\n \"Total\": 123,\n \"Tooltip\": \"<string>\",\n \"CanAssign\": true,\n \"Free\": 123,\n \"InUse\": 123,\n \"IsHidden\": true,\n \"Assigned\": true,\n \"ModuleLicenseId\": 123,\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PrerequisiteModuleName\": \"<string>\",\n \"SortOrder\": 123,\n \"ExtraFlags\": 123,\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ],\n \"UnrestrictedModuleLicenses\": [\n {\n \"Unrestricted\": true,\n \"Total\": 123,\n \"Tooltip\": \"<string>\",\n \"CanAssign\": true,\n \"Free\": 123,\n \"InUse\": 123,\n \"IsHidden\": true,\n \"Assigned\": true,\n \"ModuleLicenseId\": 123,\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PrerequisiteModuleName\": \"<string>\",\n \"SortOrder\": 123,\n \"ExtraFlags\": 123,\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ],\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
License: [
{
Name: '<string>',
Description: '<string>',
RestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
UnrestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
]
})
};
fetch('http://localhost:53294/api/v1/Agents/License/SaveCentralLicense', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "53294",
CURLOPT_URL => "http://localhost:53294/api/v1/Agents/License/SaveCentralLicense",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'License' => [
[
'Name' => '<string>',
'Description' => '<string>',
'RestrictedModuleLicenses' => [
[
'Unrestricted' => true,
'Total' => 123,
'Tooltip' => '<string>',
'CanAssign' => true,
'Free' => 123,
'InUse' => 123,
'IsHidden' => true,
'Assigned' => true,
'ModuleLicenseId' => 123,
'Name' => '<string>',
'Description' => '<string>',
'PrerequisiteModuleName' => '<string>',
'SortOrder' => 123,
'ExtraFlags' => 123,
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
],
'UnrestrictedModuleLicenses' => [
[
'Unrestricted' => true,
'Total' => 123,
'Tooltip' => '<string>',
'CanAssign' => true,
'Free' => 123,
'InUse' => 123,
'IsHidden' => true,
'Assigned' => true,
'ModuleLicenseId' => 123,
'Name' => '<string>',
'Description' => '<string>',
'PrerequisiteModuleName' => '<string>',
'SortOrder' => 123,
'ExtraFlags' => 123,
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
],
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "http://localhost:53294/api/v1/Agents/License/SaveCentralLicense"
payload = { "License": [
{
"Name": "<string>",
"Description": "<string>",
"RestrictedModuleLicenses": [
{
"Unrestricted": True,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": True,
"Free": 123,
"InUse": 123,
"IsHidden": True,
"Assigned": True,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"UnrestrictedModuleLicenses": [
{
"Unrestricted": True,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": True,
"Free": 123,
"InUse": 123,
"IsHidden": True,
"Assigned": True,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
License: [
{
Name: '<string>',
Description: '<string>',
RestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
UnrestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
]
})
};
fetch('http://localhost:53294/api/v1/Agents/License/SaveCentralLicense', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"Name": "<string>",
"Description": "<string>",
"RestrictedModuleLicenses": [
{
"Unrestricted": true,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": true,
"Free": 123,
"InUse": 123,
"IsHidden": true,
"Assigned": true,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"UnrestrictedModuleLicenses": [
{
"Unrestricted": true,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": true,
"Free": 123,
"InUse": 123,
"IsHidden": true,
"Assigned": true,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
]Save Central License
NsApiSlow threshold: 5000 ms.
using RestSharp;
var options = new RestClientOptions("http://localhost:53294/api/v1/Agents/License/SaveCentralLicense");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
request.AddJsonBody("{\n \"License\": [\n {\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"RestrictedModuleLicenses\": [\n {\n \"Unrestricted\": true,\n \"Total\": 123,\n \"Tooltip\": \"<string>\",\n \"CanAssign\": true,\n \"Free\": 123,\n \"InUse\": 123,\n \"IsHidden\": true,\n \"Assigned\": true,\n \"ModuleLicenseId\": 123,\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PrerequisiteModuleName\": \"<string>\",\n \"SortOrder\": 123,\n \"ExtraFlags\": 123,\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ],\n \"UnrestrictedModuleLicenses\": [\n {\n \"Unrestricted\": true,\n \"Total\": 123,\n \"Tooltip\": \"<string>\",\n \"CanAssign\": true,\n \"Free\": 123,\n \"InUse\": 123,\n \"IsHidden\": true,\n \"Assigned\": true,\n \"ModuleLicenseId\": 123,\n \"Name\": \"<string>\",\n \"Description\": \"<string>\",\n \"PrerequisiteModuleName\": \"<string>\",\n \"SortOrder\": 123,\n \"ExtraFlags\": 123,\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ],\n \"TableRight\": {\n \"Mask\": \"<string>\",\n \"Reason\": \"<string>\"\n },\n \"FieldProperties\": {}\n }\n ]\n}", false);
var response = await client.PostAsync(request);
Console.WriteLine("{0}", response.Content);const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
License: [
{
Name: '<string>',
Description: '<string>',
RestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
UnrestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
]
})
};
fetch('http://localhost:53294/api/v1/Agents/License/SaveCentralLicense', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "53294",
CURLOPT_URL => "http://localhost:53294/api/v1/Agents/License/SaveCentralLicense",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'License' => [
[
'Name' => '<string>',
'Description' => '<string>',
'RestrictedModuleLicenses' => [
[
'Unrestricted' => true,
'Total' => 123,
'Tooltip' => '<string>',
'CanAssign' => true,
'Free' => 123,
'InUse' => 123,
'IsHidden' => true,
'Assigned' => true,
'ModuleLicenseId' => 123,
'Name' => '<string>',
'Description' => '<string>',
'PrerequisiteModuleName' => '<string>',
'SortOrder' => 123,
'ExtraFlags' => 123,
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
],
'UnrestrictedModuleLicenses' => [
[
'Unrestricted' => true,
'Total' => 123,
'Tooltip' => '<string>',
'CanAssign' => true,
'Free' => 123,
'InUse' => 123,
'IsHidden' => true,
'Assigned' => true,
'ModuleLicenseId' => 123,
'Name' => '<string>',
'Description' => '<string>',
'PrerequisiteModuleName' => '<string>',
'SortOrder' => 123,
'ExtraFlags' => 123,
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
],
'TableRight' => [
'Mask' => '<string>',
'Reason' => '<string>'
],
'FieldProperties' => [
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}import requests
url = "http://localhost:53294/api/v1/Agents/License/SaveCentralLicense"
payload = { "License": [
{
"Name": "<string>",
"Description": "<string>",
"RestrictedModuleLicenses": [
{
"Unrestricted": True,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": True,
"Free": 123,
"InUse": 123,
"IsHidden": True,
"Assigned": True,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"UnrestrictedModuleLicenses": [
{
"Unrestricted": True,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": True,
"Free": 123,
"InUse": 123,
"IsHidden": True,
"Assigned": True,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
] }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
License: [
{
Name: '<string>',
Description: '<string>',
RestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
UnrestrictedModuleLicenses: [
{
Unrestricted: true,
Total: 123,
Tooltip: '<string>',
CanAssign: true,
Free: 123,
InUse: 123,
IsHidden: true,
Assigned: true,
ModuleLicenseId: 123,
Name: '<string>',
Description: '<string>',
PrerequisiteModuleName: '<string>',
SortOrder: 123,
ExtraFlags: 123,
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
],
TableRight: {Mask: '<string>', Reason: '<string>'},
FieldProperties: {}
}
]
})
};
fetch('http://localhost:53294/api/v1/Agents/License/SaveCentralLicense', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));[
{
"Name": "<string>",
"Description": "<string>",
"RestrictedModuleLicenses": [
{
"Unrestricted": true,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": true,
"Free": 123,
"InUse": 123,
"IsHidden": true,
"Assigned": true,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"UnrestrictedModuleLicenses": [
{
"Unrestricted": true,
"Total": 123,
"Tooltip": "<string>",
"CanAssign": true,
"Free": 123,
"InUse": 123,
"IsHidden": true,
"Assigned": true,
"ModuleLicenseId": 123,
"Name": "<string>",
"Description": "<string>",
"PrerequisiteModuleName": "<string>",
"SortOrder": 123,
"ExtraFlags": 123,
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
],
"TableRight": {
"Mask": "<string>",
"Reason": "<string>"
},
"FieldProperties": {}
}
]Authorizations
SuperOffice username:password are passed in Base64-encoded.
You can also pass inn an unencoded ticket 7T:abc== with the HTTP Authenticate header.
SuperOffice SuperId OAuth implicit flow. You need to issue a request to the SuperId authorization URL https://online.superoffice.com/login/common/oauth/authorize?response_type=token &client_id=670734e0-4c5a-11e3-be9e-a171392e81db &redirect_uri=https://example.com/spa/
passing in the application id and redirect URL.
SuperId will log the user in, and redirect to the requested redirect URL with a #payload containing the access token and claims. (The redirect URL must be registered with SuperId in advance)
https://example.com/spa#access_token=8A%3aCust12227.AXRrCITpPBvQX3UbIohb &token_type=bearer &state= &expires_in=3600 &ctx=Cust12227 &netserver_url=https%3a%2f%2fsod.superoffice.com%2fCust12227%2fRemote%2fServices82%2f
You can take the #access_token value and pass it as the Authenticate HTTP header as a BEARER token.
- Authorization URL
- https://online.superoffice.com/login/common/oauth/authorize
Headers
Convert string references and multi-language values into a specified language (iso2) code.
Convert string references and multi-language values into a specified language (iso2) code. Overrides Accept-Language value.
Number, date formatting in a specified culture (iso2 language) code. Partially overrides SO-Language/Accept-Language value. Ignored if no Language set.
Specify the timezone code that you would like date/time responses converted to.
The application token that identifies the partner app. Used when calling Online WebAPI from a server.
Query Parameters
Optional comma separated list of properties to include in the result. Other fields are then nulled out to reduce payload size: "Name,department,category". Default = show all fields.
Body
License
SaveCentralLicense:
Show child attributes
Show child attributes
Response
OK
The name of the license owner
Show child attributes
Show child attributes
The unrestricted module licenses that this license owner
Show child attributes
Show child attributes
Wraps a table right together with an explanatory reason. Code can indicate why access is restricted.
Show child attributes
Show child attributes
Field property dictionary mapping field names to field access rights.
Show child attributes
Show child attributes