Algorithm Catalog

Contains the available algorithms.

Schema

Field

Type

Required

Readonly

Auto Managed

Example

id

String

True

True

False

ddos-predictor

parameters

List(Parameter)

False

False

False

description

String

False

False

False

DDoS predictor.

Parameter Schema

Field

Type

Required

Readonly

Auto Managed

Example

id

String

True

True

False

frequency

type

Enum(String) 1

True

False

False

integer

list

Boolean

False

False

False

False

values

Enum(Any)

False

False

False

mysql

encoding_scheme

String

False

False

False

base64

description

String

False

False

False

Frequency to scan the network.

example

String

False

False

False

10s

1

Possible values are “integer”, “number”, “time-duration”, “string”, “choice”, “boolean”, and “binary”.

Warning

  • It is not possible to update readonly fields.

  • it is not possible to set the Auto managed fields.

Note

  • id is required but it is auto-generated if not provided. It is recommended to provide a friendly for simplify the retrieve of connected date in other indices.

Create

To create a new algorithm in the catalog use the following REST call:

POST /catalog/algorithm/(string: id)

with the request body in JSON format:

POST /catalog/algorithm HTTP/1.1
Host: cb-manager.example.com
Content-Type: application/json

{
    "id": "<algorithm-id>",
    "parameters": [
        {
            "id": "<parameter-id>",
            "type": "<parameter-type>",
            "description": "<parameter-human-readable-description>",
            "example": "<parameter-example>",
        }
    ]
}
Parameters
  • id – optional algorithm id.

Request Headers
Response Headers
Status Codes

Replace the data with the correct values, for example <algorithm-id> with ddos-predictor.

If the creation is correctly executed the response is:

HTTP/1.1 201 Created
Content-Type: application/json

[
    {
        "status": "Created",
        "code": 201,
        "error": false,
        "message": "Algorithm catalog with id=<algorithm-id> correctly created"
    }
]

Otherwise, if, for example, an algorithm with the given id is already found in the catalog, this is the response:

HTTP/1.1 406 Not Acceptable
Content-Type: application/json

[
    {
        "status": "Not Acceptable",
        "code": 406,
        "error": true,
        "message": "Id already found"
    }
]

If some required data is missing (for example type of one parameter), the response could be:

HTTP/1.1 406 Not Acceptable
Content-Type: application/json

[
    {
        "status": "Not Acceptable",
        "code": 406,
        "error": true,
        "message": {
            "parameter.type": "required"
        }
    }
]

Read

To get the list of the algorithms available in the catalog:

GET /catalog/algorithm/(string: id)

The response includes all the algorithms.

It is possible to filter the results using the following request body:

GET /catalog/algorithm HTTP/1.1
Host: cb-manager.example.com
Content-Type: application/json

{
    "select": [ "parameters" ],
    "where": {
        "equals": {
            "target:" "id",
            "expr": "<algorithm-id>"
        }
    }
}
Parameters
  • id – optional algorithm id from the catalog.

Request Headers
Response Headers
Status Codes

In this way, it will be returned only the parameters of the algorithm in the catalog with id = “<algorithm-id>”.

Update

To update an algorithm in the catalog, use:

PUT /catalog/algorithm/(string: id)
PUT /catalog/algorithm HTTP/1.1
Host: cb-manager.example.com
Content-Type: application/json

{
    "id": "<algorithm-id>",
    "parameters": [
        {
            "id": "<parameter-id>",
            "type": "<new-parameter-type>"
        }
    ]
}
Parameters
  • id – optional algorithm id.

Request Headers
Response Headers
Status Codes

This example

  1. updates the new type of the parameter with id = “<parameter-id>”;

  2. adds a new action

of the algorithm with id = “<algorithm-id>”.

A possible response is:

HTTP/1.1 200 OK
Content-Type: application/json

[
    {
        "status": "OK",
        "code": 200,
        "error": false,
        "message": "Algorithm catalog with id=<algorithm-id> correctly updated"
    }
]

Instead, if the are not changes the response is:

HTTP/1.1 304 Not Modified
Content-Type: application/json

[
    {
        "status": "Not Modified",
        "code": 304,
        "error": false,
        "message": "Update for algorithm catalog with id=<algorithm-id> not necessary"
    }
]

Delete

To delete algorithms from the catalog, use:

DELETE /catalog/algorithm/(string: id)
DELETE /catalog/algorithm HTTP/1.1
Host: cb-manager.example.com
Content-Type: application/json

{
    "where": {
        "equals": {
            "target:" "id",
            "expr": "<algorithm-id>"
        }
    }
}
Parameters
  • id – optional algorithm id from the catalog.

Request Headers
Response Headers
Status Codes

This request removes from the catalog the algorithm with id = “<algorithm-id>”.

This is a possible response:

HTTP/1.1 205 Reset Content
Content-Type: application/json

[
    {
        "status": "Reset Content",
        "code": 200,
        "error": false,
        "message": "Algorithm catalog the id=<algorithm-id> correctly deleted"
    }
]

Caution

Without request body, it removes all the algorithms from the catalog.