Scripts

The scripts API can be used to read view and modify the scripts which NSClient++ can run.

List modules

The modules API will responde to get with a list of all currently loaded modules. You can add all=true if you want to show modules which are not loaded as well. This is significantly slower as NSClient++ has to inspect all available modules.

Key Value
Verb GET
Address /api/v1/modules
Privilege modules.list

Parameters

Key Value Description
all true / false If all scripts should be listed (not activated ones)

Request

GET /api/v1/modules

Response

[
    {
        "description": "Module used to execute external scripts",
        "id": "CheckExternalScripts",
        "loaded": true,
        "metadata": {
            "plugin_id": "0"
        },
        "name": "CheckExternalScripts",
        "title": "CheckExternalScripts"
    },
    {
        "description": "A server that listens for incoming ...",
        "id": "WEBServer",
        "loaded": true,
        "metadata": {
            "plugin_id": "1"
        },
        "name": "WEBServer",
        "title": "WEBServer"
    },
    {
        "description": "A command line client, generally not used except with \"nscp test\".",
        "id": "CommandClient",
        "loaded": true,
        "metadata": {
            "plugin_id": "2"
        },
        "name": "CommandClient",
        "title": "CommandClient"
    }
]

Example

List all currently loaded modules.

curl -s -k -u admin https://localhost:8443/api/v1/modules |python -m json.tool
[
    {
        "description": "Module used to execute external scripts",
        "id": "CheckExternalScripts",
        "loaded": true,
        "metadata": {
            "plugin_id": "0"
        },
        "name": "CheckExternalScripts",
        "title": "CheckExternalScripts"
    },
    {
        "description": "A server that listens for incoming ...",
        "id": "WEBServer",
        "loaded": true,
        "metadata": {
            "plugin_id": "1"
        },
        "name": "WEBServer",
        "title": "WEBServer"
    },
    {
        "description": "A command line client, generally not used except with \"nscp test\".",
        "id": "CommandClient",
        "loaded": true,
        "metadata": {
            "plugin_id": "2"
        },
        "name": "CommandClient",
        "title": "CommandClient"
    }
]

Get module

Get details about a given module.

Key Value
Verb GET
Address /api/v1/modules/:module
Privilege modules.get

Request

GET /api/v1/modules/:module

Response

{
    "description": "A server that listens for ...",
    "id": "WEBServer",
    "loaded": true,
    "metadata": {
        "plugin_id": "1"
    },
    "name": "WEBServer",
    "title": "WEBServer"
}

Example

Fetch details about the WEBServer module.

curl -s -k -u admin https://localhost:8443/api/v1/modules/WEBServer |python -m json.tool
{
    "description": "A server that listens for incoming HTTP connection and processes incoming requests. It provides both a WEB UI as well as a REST API in addition to simplifying configuration of WEB Server module.",
    "id": "WEBServer",
    "loaded": true,
    "metadata": {
        "plugin_id": "1"
    },
    "name": "WEBServer",
    "title": "WEBServer"
}

Update module

As most module details are static the only thing which can be changed (currently) is the loaded flag. This can be used to load/unload modules. To execute this command you need multiple privileges first we need modules.get to get a list of modules and then depending on what the desired action is you need either modules.load or modules.unload.

Key Value
Verb PUT
Address /api/v1/modules/:module
Privilege modules.get and modules.load or modules.unload

Request

PUT /api/v1/modules/:module

The posted payload

The payload we post is the same one we get from a GET except most attributed are ignored and can be left out:

{
    "loaded": true
}

Response

Success unload CheckExternalScripts

Example

An example of unloading the CheckExternalScripts module:

curl -s -k -u admin -X PUT https://localhost:8443/api/v1/modules/CheckExternalScripts -d "{\"loaded\":false}"
Success unload CheckExternalScripts

Commands

In addition to REST full CRUD operation the module API also supports commands.

  • Load module
  • Unload modules

Load Module

The load command is a convincing for doing a PUT on the module setting loaded=true to loading a module.

Key Value
Verb GET
Address /api/v1/modules/:module/commands/load
Privilege modules.get and modules.load

Request

PUT /api/v1/modules/:module/commands/load

Response

Success load CheckExternalScripts

Example

An example of loading the CheckExternalScripts module:

curl -s -k -u admin https://localhost:8443/api/v1/modules/CheckExternalScripts/commands/load
Success load CheckExternalScripts

Unload Module

The unload command is a convincing for doing a PUT on the module setting loaded=false to unload a module.

Key Value
Verb GET
Address /api/v1/modules/:module/commands/unload
Privilege modules.get and modules.unload

Request

PUT /api/v1/modules/:module/commands/unload

Response

Success unloaded CheckExternalScripts

Example

An example of unloading the CheckExternalScripts module:

curl -s -k -u admin https://localhost:8443/api/v1/modules/CheckExternalScripts/commands/unload
Success unloading CheckExternalScripts