/api (GET)
Description
Returns descriptive detail about the implementation of ScriptX.Services.
Note that this API is version-less. Simply GET /api from the server. For forwards compatibility code should assume that the object returned may contain more values than at the time code was written.
Applies to:
- ScriptX.Services for Cloud
- ScriptX.Services for On-Premise Devices (Authorisation header is ignored)
- ScriptX.Services for Windows PC
Response model
{
ServiceDescription {
serviceClass (integer): 1 = Cloud, 2 = OnPremise, 3 = WindowsPC ,
currentAPIVersion (string),
serviceVersion (Version),
serverVersion (Version),
serviceUpgrade (Version, optional),
availablePrinters (Array[string], optional),
printHTML (boolean, optional),
printPDF (boolean, optional),
printDIRECT (boolean, optional)
}
Version {
major (integer),
minor (integer),
build (integer),
revision (integer),
majorRevision (integer),
minorRevision (integer)
}
}
ServiceDescription:
- serviceClass (integer, optional)
-
Describes the class of service availble.
1 Public Cloud - prints to file only (PDF/XPS).
2 On Premise - prints to printers both available to the server device and configured to be available.
3 For Windows PC - prints to any printer available to the Windows PC device. - currentAPIVersion (string)
- The latest API version implemented (currently "v1").
- serviceVersion (Version)
- The version of the service server.
- serverVersion (Version)
- The version of ScriptX Server in use by ScriptX.Services.
- serviceUpgrade (Version, optional)
- If a newer version of the service server is available, its version.
- availablePrinters (Array[string], optional),
- An array of the names of all printer devices available on the print server.
- printHTML (boolean, optional)
- True iff the service implements the printHTML api.
- printPDF (boolean, optional)
- True iff the service implements the printPDF api.
- printDIRECT (boolean, optional)
- True iff the service implements the printDirect api.
Version:
- major (integer),
- The major version number - increments on improvements and/or additions which include breaking changes.
- minor (integer),
- The minor version number - increments on improvements and/or additions which do not break current code.
- build (integer),
- The build number - increments with bug fixes.
- revision (integer),
- Internal revisions on a build - no relevance.
- majorRevision (integer),
- Random - do not use.
- minorRevision (integer),
- Random - do not use.
Example usage
Request
<h5>Response <span id="response-status"></span></h5>
<textarea id="response" readonly="readonly" rows="3" class="codefont"></textarea>
<h5>Response headers</h5>
<textarea id="headers" readonly="readonly" rows="3" class="codefont"></textarea>
document.addEventListener("DOMContentLoaded", function() {
document.getElementById('btn_runcode').addEventListener('click', function() { callServer(); });
});
function callServer() {
document.getElementById('response-status').textContent = "(waiting)";
const apiUrl = "/api/v1/";
const headers = new Headers({
"Authorization": "Basic " + btoa("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + ":"),
"Content-Type": "application/json"
});
fetch(apiUrl, { method: "GET", headers: headers })
.then(response => {
if (!response.ok) {
throw new Error('Network response was not ok: ' + response.statusText);
}
document.getElementById('response-status').textContent =
'(status: ' + response.status + ' ' + response.statusText + ')';
return response.json().then(data => {
// show JSON response in textarea element
document.getElementById('response').value = JSON.stringify(data, null, " ");
// do something with the ScriptX.Services information
console.log('Service version: ' + data.serviceVersion);
return response.headers;
});
})
.then(headers => {
// show response headers in textarea element
let headersText = "";
for (let pair of headers.entries()) {
headersText += `${pair[0]}: ${pair[1]}\n`;
}
document.getElementById('headers').value = headersText;
})
.catch(error => {
document.getElementById('response-status').textContent = '(error: ' + error.message + ')';
document.getElementById('response').value = "Failed to fetch data.";
});
}