INTER-Layer unified API API Reference

INTER-IoT INTER-Layer unified API supports unified access to all INTER-Layer components.

API Endpoint
https://virtserver.swaggerhub.com/iot-learner/INTER-Layer/1.0
Terms of Service: http://www.inter-iot-project.eu/objectives
Contact: coordinator@inter-iot.eu
Request Content-Types: application/json, application/x-www-form-urlencoded
Response Content-Types: application/json
Schemes: https, http
Version: 1.0

d2d.api

Get Api version information

GET /d2d
200 OK

successful operation

type
string
Response Content-Types: application/json
Response Example (200 OK)
"string"

d2d.virtual

Get virtual gateway information

GET /d2d/gw/virtual
200 OK

successful operation

Response Content-Types: application/json

d2d.physical

Get physical gateway information, id and connection status

GET /d2d/gw/physical
attributeSet: string info, id, status info
in query

(no description)

200 OK

successful operation

Response Content-Types: application/json

Get a list of devices connected to this Gateway

GET /d2d/gw/physical/devices
200 OK

successful operation

type
Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "infoType": "string"
  }
]

d2d.device

Get information about a device: description, state (sensor reading), status or started. Status is the status of device: DISCONNECTED, READY, CONNECTING, CONNECTED, FAILURE.

GET /d2d/devices/{deviceId}
deviceId: string
in path

Device id

attributeSet: string description, state, status, started description
in query

(no description)

200 OK

successful operation

Response Content-Types: application/json
Response Example (200 OK)
{
  "infoType": "string"
}

Perform actions on a device: connection and/or actuation

POST /d2d/devices/{deviceId}

Action to be performed and supporting data

deviceId: string
in path

Device id

Request Example
[
  {
    "timestamp": "integer",
    "attribute": {
      "name": "string",
      "type": "string"
    },
    "value": "string"
  }
]
200 OK

successful operation

Response Content-Types: application/json

d2d.extensions

n2n.switches

List Switches

GET /n2n/switches

Retrieve a list of all switches ID connected to the controller

200 OK

Switches ID list

type
integer[]
404 Not Found
Response Content-Types: application/json
Response Example (200 OK)
[
  "integer"
]

Switch Basic Description

GET /n2n/switches/{switchId}

Retrieve the basic information of the sought switch

switchId: integer
in path

Switch ID

200 OK

Switch Info

400 Bad Request

Invalid ID

Response Content-Types: application/json
Response Example (200 OK)
"object"

n2n.flows

Flow information

GET /n2n/switches/{switchId}/tables/{tableId}/flows

Retrieve info (list) about all flows for a switch or about flows from a specific table

switchId: integer
in path

Switch ID

tableId: string
in path

If tableId="all" then info for all tables provided, else for a tableId

200 OK

Flow information

404 Not Found

Not found

Response Content-Types: application/json

Addition of a new flow entry

POST /n2n/switches/{switchId}/tables/{tableId}/flows

Flow entry description

switchId: integer
in path

Switch ID

tableId: string
in path

If tableId="default" then the flow is added to a specific table, else for a tableId

Access-Control-Allow-Origin: string
in header

(no description)

Request Example
{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 1111,
  "buffer_id": 1,
  "flags": 1,
  "match": {
    "in_port": "integer",
    "dl_src": "string",
    "dl_dst": "string",
    "dl_type": "string",
    "nw_src": "string",
    "nw_dst": "string",
    "ipv6_src": "string",
    "ipv6_dst": "string",
    "nw_proto": "string",
    "tp_src": "integer",
    "tp_dst": "integer",
    "ip_dscp": "integer"
  },
  "actions": [
    [
      {
        "mark": "integer",
        "meter": "integer",
        "queue": "integer"
      }
    ]
  ]
}
200 OK

OK

400 Bad Request

Invalid input

Response Content-Types: application/json

Modify flow entry in a switch

PUT /n2n/switches/{switchId}/tables/{tableId}/flows/{flowId}

Flow entry description

switchId: integer
in path

Switch ID

tableId: string
in path

If tableId="default" then the flow is added to a specific table, else for a tableId

flowId: string
in path

Flow ID

Request Example
{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 1111,
  "buffer_id": 1,
  "flags": 1,
  "match": {
    "in_port": "integer",
    "dl_src": "string",
    "dl_dst": "string",
    "dl_type": "string",
    "nw_src": "string",
    "nw_dst": "string",
    "ipv6_src": "string",
    "ipv6_dst": "string",
    "nw_proto": "string",
    "tp_src": "integer",
    "tp_dst": "integer",
    "ip_dscp": "integer"
  },
  "actions": [
    [
      {
        "mark": "integer",
        "meter": "integer",
        "queue": "integer"
      }
    ]
  ]
}
200 OK

OK

400 Bad Request

Invalid input

Response Content-Types: application/json

Delete flow entry from a switch

DELETE /n2n/switches/{switchId}/tables/{tableId}/flows/{flowId}
switchId: integer
in path

Switch ID

tableId: string
in path

If tableId="default" then the flow removed from a specific table, else for a tableId

flowId: string
in path

Flow ID

200 OK

OK

400 Bad Request

Invalid input

n2n.tables

Table information

GET /n2n/switches/{switchId}/tables

Retrieve info about all tables in the switch

switchId: integer
in path

Switch ID

attributeSet: string info, features
in query

Which set of attributes to retireve

200 OK

Table information

404 Not Found

Not found

Response Content-Types: application/json
Response Example (200 OK)
"object"

n2n.ports

Port information

GET /n2n/switches/{switchId}/ports

Retrieve info about all ports in a switch

switchId: integer
in path

Switch ID

200 OK

All Ports information

404 Not Found

Not found

Response Content-Types: application/json
Response Example (200 OK)
"object"

Port information

GET /n2n/switches/{switchId}/ports/{portId}

Retrieve info about a specific port in a switch

switchId: integer
in path

Switch ID

portId: integer
in path

Port ID

200 OK

All Ports information

Response Content-Types: application/json

Modify port definition

PUT /n2n/switches/{switchId}/ports/{portId}

Port description

switchId: integer
in path

Switch ID

portId: integer
in path

Port ID

Request Example
{
  "dpid": 1,
  "port_no": 1,
  "config": 1,
  "mask": 1
}
200 OK

Port information

400 Bad Request

Invalid input

n2n.roles

n2n.queues

Get status or config for all queues of a switch

GET /n2n/switches/{switchId}/queues
switchId: integer
in path

Switch ID

attributeSet: string status, config
in query

Set of attributes to return

200 OK

Queue status of the schema

Response Content-Types: application/json

Set a queue into a port (or ports)

POST /n2n/switches/{switchId}/port/{portId}/queues
switchId: integer
in path

Switch ID

portId: integer
in path

(no description)

200 OK

Flow info

400 Bad Request

Invalid ID

404 Not Found

Not found

405 Method Not Allowed

Invalid input

Delete the configuration of a queue

DELETE /n2n/switches/{switchId}/queues/{queueId}
switchId: integer
in path

Switch ID

queueId: integer
in path

Queue ID

200 OK

OK

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "switch_id": "string",
    "command_result": "string"
  }
]

n2n.rules

Retrieve the rules configuration

GET /n2n/switches/{switchId}/rules
switchId: integer
in path

Switch ID

200 OK

Rule configuration

Response Content-Types: application/json
Response Example (200 OK)
{
  "switch_id": "string",
  "command_result": [
    {
      "result": "string",
      "details": "string"
    }
  ]
}

POST /n2n/switches/{switchId}/rules

Rule

switchId: integer
in path

Switch ID

Request Example
{
  "priority": "integer",
  "match": [
    {
      "in_port": "integer",
      "dl_src": "string",
      "dl_dst": "string",
      "dl_type": "string",
      "nw_src": "string",
      "nw_dst": "string",
      "ipv6_src": "string",
      "ipv6_dst": "string",
      "nw_proto": "string",
      "tp_src": "integer",
      "tp_dst": "integer",
      "ip_dscp": "integer"
    }
  ],
  "actions": [
    [
      {
        "mark": "integer",
        "meter": "integer",
        "queue": "integer"
      }
    ]
  ]
}
200 OK

OK. Qos ID generated

type
integer
Response Content-Types: application/json
Response Example (200 OK)
"integer"

Delete a Qos Rule

DELETE /n2n/switches/{switchId}/rules/{ruleId}
switchId: integer
in path

Switch ID

ruleId: integer
in path

Switch ID

200 OK

OK

Response Content-Types: application/json
Response Example (200 OK)
{
  "switch_id": "string",
  "command_result": [
    {
      "result": "string",
      "details": "string"
    }
  ]
}

n2n.meters

Retrieve meters configuration for a switch

GET /n2n/switch/{switchId}/meters
switchId: integer
in path

Switch ID

200 OK

Meter configuration

Response Content-Types: application/json
Response Example (200 OK)
{
  "meter_id": "integer",
  "bands": {
    "action": "string",
    "flag": "string",
    "burst_size": "integer",
    "rate": "integer",
    "prec_level": "integer"
  }
}

POST /n2n/switch/{switchId}/meters

Meter

switchId: integer
in path

Switch ID

Request Example
{
  "meter_id": "integer",
  "bands": {
    "action": "string",
    "flag": "string",
    "burst_size": "integer",
    "rate": "integer",
    "prec_level": "integer"
  }
}
200 OK

OK

type
object
400 Bad Request
404 Not Found
Response Content-Types: application/json
Response Example (200 OK)
"object"

Delete a Qos Meter

DELETE /n2n/switch/{switchId}/meters/{meterId}
switchId: integer
in path

Switch ID

meterId: integer
in path

Meter ID

200 OK

OK

type
object
400 Bad Request
404 Not Found
Response Content-Types: application/json
Response Example (200 OK)
"object"

mw2mw.clients

List all clients

GET /mw2mw/clients
Client-ID: string
in header

(no description)

200 OK

Success.

type
401 Unauthorized

Unauthorized.

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "clientId": "string",
    "callbackUrl": "string (url)",
    "pullMessagesLimit": "integer (int32)",
    "responseFormat": "string",
    "responseDelivery": "string"
  }
]

Register a new client

POST /mw2mw/clients

Input data of type RegisterClientReq

Client-ID: string
in header

The ID of the client making the request

Request Content-Types: application/json
Request Example
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}
201 Created

Success.

400 Bad Request

Error adding a new client

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

409 Conflict

Client is already registered.

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (201 Created)
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}

List client definition

GET /mw2mw/clients/{managedClientId}
Client-ID: string
in header

The ID of the client making the request

managedClientId: string
in path

The ID of the client to update

200 OK

Client updated

401 Unauthorized

Not authorised

404 Not Found

Client not found

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (200 OK)
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}

Update client definition

PUT /mw2mw/clients/{managedClientId}

Input data of type RegisterClient

Client-ID: string
in header

The ID of the client making the request

managedClientId: string
in path

The ID of the client to update

Request Content-Types: application/json
Request Example
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}
200 OK

Client updated

400 Bad Request

Error updating

401 Unauthorized

Not authorised

403 Forbidden

Forbidden

404 Not Found

Client not found

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (200 OK)
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}

Remove specified client

DELETE /mw2mw/clients/{managedClientId}

Remove the client from the database, unsubscribe, etc.

Client-ID: string
in header

The ID of the client to delete

managedClientId: string
in path

The ID of the client making the request

204 No Content

successful operation

401 Unauthorized

Not authorised

403 Forbidden

Forbidden

404 Not Found

Client not found

500 Internal Server Error

Internal server error

mw2mw.systems

mw2mw.platforms

List all platforms

GET /mw2mw/platforms

List all platforms registered with InterIoT

Client-ID: string
in header

The ID of the client making the request

200 OK

Success

type
401 Unauthorized

Not authorized

403 Forbidden

Forbidden

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "platformId": "string",
    "type": "string",
    "baseEndpoint": "string",
    "location": "string",
    "name": "string",
    "username": "string",
    "encryptedPassword": "string",
    "encryptionAlgorithm": "string"
  }
]

Register a new platform instance

POST /mw2mw/platforms

Register a new platform by updating the registry and deploying the bridge

Platform instance to be registered

Client-ID: string
in header

(no description)

Request Content-Types: application/json
Request Example
{
  "platformId": "string",
  "type": "string",
  "baseEndpoint": "string",
  "location": "string",
  "name": "string",
  "username": "string",
  "encryptedPassword": "string",
  "encryptionAlgorithm": "string"
}
202 Accepted

The request has been accepted for processing.

400 Bad Request

Error listing

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

Remove platform instance

DELETE /mw2mw/platforms/{platformId}

Remove a platform by updating the registry and un-deploying the bridge

Client-ID: string
in header

(no description)

platformId: string
in path

(no description)

202 Accepted

successful operation

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

404 Not Found

Not found

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

mw2mw.devices

List all devices registered with InterIoT according to the specified filter

GET /mw2mw/devices
Client-ID: string
in header

The ID of the client making the request

platformId: string
in query

Get devices from a specific platform

200 OK

The request has been accepted for processing.

type
401 Unauthorized

Not authorized

403 Forbidden

Forbidden

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "deviceId": "string",
    "hostedBy": "string",
    "location": "string",
    "name": "string"
  }
]

Register (start managing) devices

POST /mw2mw/devices

undefined

Client-ID: string
in header

(no description)

Request Content-Types: application/json
Request Example
{
  "deviceId": "string",
  "hostedBy": "string",
  "location": "string",
  "name": "string"
}
202 Accepted

The request has been accepted for processing.

400 Bad Request

Bad request

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

409 Conflict

One or more devices are already registered.

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

Update existing devices

PUT /mw2mw/devices
IoTDevice
Client-ID: string
in header

(no description)

Request Content-Types: application/json
Request Example
[
  {
    "deviceId": "string",
    "hostedBy": "string",
    "location": "string",
    "name": "string"
  }
]
202 Accepted

The request has been accepted for processing...

400 Bad Request

Invalid request...

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

404 Not Found

Device does not exist...

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

Delete existing device

DELETE /mw2mw/devices/{deviceId}
Client-ID: string
in header

(no description)

deviceId: string
in path

(no description)

202 Accepted

The request has been accepted for processing.

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

404 Not Found

Device does not exist.

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

Unsubscribe from the conversationId

DELETE /mw2mw/subscriptions/{conversationId}

Unsubscribe from the conversationId in mw2mw

Client-ID: string
in header

The ID of the client making the request

conversationId: string
in path

(no description)

202 Accepted

Request Accepted

401 Unauthorized

Not authorised

403 Forbidden

Forbidden

404 Not Found

Platform does not exist

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

mw2mw.messages

Message pull request

POST /mw2mw/responses

Pull request for messages, concerning the client. Pulls up to a specified number of messages

Client-ID: string
in header

The ID of the client making the request

200 OK

successful operation

400 Bad Request

Bad request

401 Unauthorized

Not authorised

403 Forbidden

Forbidden

500 Internal Server Error

internal server error

Response Content-Types: application/json
Response Example (200 OK)
[
  "object"
]

Send message downstream towards the platform

POST /mw2mw/requests

A raw method for sending messages downstream

Message to be sent downstream

Client-ID: string
in header

The ID of the client making the request

Request Content-Types: application/json
Request Example
"object"
202 Accepted

accepted

400 Bad Request

Bad request

401 Unauthorized

Not authorised

403 Forbidden

Forbidden

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

as2as.auth

Authentication and Credentials

Get the active authentication scheme i.e. list of users

GET /as2as/auth/login
200 OK

successful operation

Response Content-Types: application/json

as2as.settings

Runtime Settings

Get the runtime settings

GET /as2as/settings
Authorization: string
in header

token

200 OK

successful operation

type
object
401 Unauthorized

Not authorized

Response Example (200 OK)
{
  "httpNodeRoot": "string",
  "version": "string",
  "user": "object"
}

as2as.flows

Active Flow Configuration

Get the configuration of active flows in the running Node-RED instance

GET /as2as/flows
Authorization: string
in header

token

Node-RED-API-Version: string
in header

The api version being used. Defaults to v1 if not set.

200 OK

successful operation

type
Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "rev": "string",
    "flows": {
      "type": "string",
      "id": "string",
      "label": "string"
    }
  }
]

Set the configuration of active flows in the running Node-RED instance

POST /as2as/flows

Flow response object

Authorization: string
in header

token

Node-RED-API-Version: string
in header

The api version being used. Defaults to v1 if not set.

Node-RED-Deployment-Type: string
in header

full, nodes, flows or reload

Request Example
{
  "rev": "string",
  "flows": {
    "type": "string",
    "id": "string",
    "label": "string"
  }
}
200 OK

successful operation

type
string
201 Created

Created

400 Bad Request

Invalid API version

401 Unauthorized

Not authorized

409 Conflict

Version mismatch

Response Content-Types: application/json
Response Example (200 OK)
"string"

ds2ds.alignments

Alignments Management

List alignments

GET /ds2ds/alignments
200 OK

Available alignments info

Response Content-Types: application/json
Response Example (200 OK)
{
  "descId": "string",
  "id": "integer",
  "date": "integer",
  "name": "string",
  "sourceOntologyURI": "string",
  "targetOntologyURI": "string",
  "version": "string",
  "creator": "string",
  "description": "string"
}

Upload new alignment

POST /ds2ds/alignments

Alignment configuration

Request Content-Types: application/xml
Request Example
"object"
201 Created

Alignment uploaded successfully

208 Already Reported

Alignment already uploaded

400 Bad Request

Wrong arguments

409 Conflict

Alignment with the same ID but different definition exists

Response Content-Types: application/json
Response Example (201 Created)
{
  "message": "string"
}
Response Example (208 Already Reported)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (409 Conflict)
{
  "message": "string"
}

Get an alignment identified by name + version

GET /ds2ds/alignments/{name}/{version}
name: string
in path

Name of the alignment

version: string
in path

Version of the alignment

204 No Content

Alignment successfully returned

400 Bad Request

Alignment not found

500 Internal Server Error

Alignment retrieval failed

Response Content-Types: application/xml
Response Example (204 No Content)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

Delete alignment identified by name + version

DELETE /ds2ds/alignments/{name}/{version}
name: string
in path

Name of the alignment

version: string
in path

Version of the alignment

204 No Content

Alignment deleted

400 Bad Request

Alignment not found

500 Internal Server Error

Alignment deletion failed

Response Example (204 No Content)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

ds2ds.channels

Channels Management

List active IPSM channels

GET /ds2ds/channels
200 OK

Array of channel information records

Response Example (200 OK)
{
  "id": "integer",
  "descId": "string",
  "source": "string",
  "inpAlignmentName": "string",
  "inpAlignmentVersion": "string",
  "outAlignmentName": "string",
  "outAlignmentVersion": "string",
  "sink": "string"
}

Create new channel

POST /ds2ds/channels
200 OK

Channel created successfully

400 Bad Request

Channel already exists or wrong arguments

500 Internal Server Error

Channel creation failed

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string"
}
Response Example (400 Bad Request)
{
  "message": "string"
}
Response Example (500 Internal Server Error)
{
  "message": "string"
}

ds2ds.translation

Translation

Translate JSON-LD message via sequence of alignments

POST /ds2ds/translation

Input information

Request Content-Types: application/json
Request Example
{
  "alignIDs": [
    {
      "name": "string",
      "version": "string"
    }
  ],
  "graphStr": "string"
}

Translation successful

400 Bad Request

Error durring translation

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "graphStr": "string"
}
Response Example (400 Bad Request)
{
  "message": "string",
  "graphStr": "string"
}

ds2ds.logging

Logging

Get the current IPSM logging level

GET /ds2ds/logging

Current logging level successfuly returned

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "level": "string"
}

Get the current IPSM logging level

POST /ds2ds/logging/{level}
level: string all, trace, debug, info, warn, error, off
in path

Logging level

Logging level set successfully

Response Content-Types: application/json
Response Example (200 OK)
{
  "message": "string",
  "level": "string"
}

mw2mw.subscriptions

List subscriptions

GET /mw2mw/subscriptions
Client-ID: string
in header

(no description)

clientId: string
in query

(no description)

200 OK

Success.

401 Unauthorized

Unauthorized.

Response Content-Types: application/json
Response Example (200 OK)
[
  {
    "deviceIds": [
      "string"
    ]
  }
]

Subscribes to a device

POST /mw2mw/subscriptions

Subscribe to a device in mw2mw and platform it is connected to

Thing we want to subscribe to

Client-ID: string
in header

The ID of the client making the request

Request Content-Types: application/json
Request Example
{
  "deviceIds": [
    "string"
  ]
}
202 Accepted

Accepted

400 Bad Request

Error listing

401 Unauthorized

Not authorized

403 Forbidden

Forbidden

409 Conflict

Subscription already exists

500 Internal Server Error

Internal server error

Response Content-Types: application/json
Response Example (202 Accepted)
{
  "conversationId": "string"
}

Schema Definitions

Attribute: object

name: string
type: string INTEGER, FLOAT, STRING, BOOLEAN
Example
{
  "name": "string",
  "type": "string"
}

DeviceData: object

infoType: string
Example
{
  "infoType": "string"
}

Device:

uuid: string
name: string
accessNetwork: string
protocol: string
physicalAddress: string
accessNetworkOpts: object
protocolOpts: object
deviceIOs: DeviceIO
DeviceIO
controller: string
controllerOpts: object
Example
{
  "uuid": "string",
  "name": "string",
  "accessNetwork": "string",
  "protocol": "string",
  "physicalAddress": "string",
  "accessNetworkOpts": "object",
  "protocolOpts": "object",
  "deviceIOs": [
    {
      "type": "string",
      "attribute": {
        "name": "string",
        "type": "string"
      }
    }
  ],
  "controller": "string",
  "controllerOpts": "object",
  "infoType": "string"
}

Measurement:

timestamp: integer (int64)
data: MeasurementData
MeasurementData
Example
{
  "timestamp": "integer (int64)",
  "data": [
    {
      "attribute": {
        "name": "string",
        "type": "string"
      },
      "value": "object",
      "timestamp": "integer (int64)"
    }
  ],
  "infoType": "string"
}

MeasurementData: object

attribute: Attribute
value: object
timestamp: integer (int64)
Example
{
  "attribute": {
    "name": "string",
    "type": "string"
  },
  "value": "object",
  "timestamp": "integer (int64)"
}

DeviceStatus:

status: string
Example
{
  "status": "string",
  "infoType": "string"
}

Actuation: object

timestamp: integer (int64)
data: ActuationData
ActuationData
Example
{
  "timestamp": "integer (int64)",
  "data": [
    {
      "attribute": {
        "name": "string",
        "type": "string"
      },
      "value": "string"
    }
  ]
}

ActuationData: object

attribute: Attribute
value: string
Example
{
  "attribute": {
    "name": "string",
    "type": "string"
  },
  "value": "string"
}

DeviceIO: object

type: string SENSOR, ACTUATOR
attribute: Attribute
Example
{
  "type": "string",
  "attribute": {
    "name": "string",
    "type": "string"
  }
}

OpenApi: object

Example
"object"

PortDescription: object

dpid: integer
port_no: integer 0
config: integer 0
mask: integer 0
Example
{
  "dpid": 1,
  "port_no": 1,
  "config": 1,
  "mask": 1
}

SwitchInfo: object

object
mfr_desc: string
hw_desc: string
sw_desc: string
serial_num: string
dp_desc: string
Example
"object"

DeviceMeasurement: object

timestamp: integer
attribute: Attribute
value: string
Example
{
  "timestamp": "integer",
  "attribute": {
    "name": "string",
    "type": "string"
  },
  "value": "string"
}

DeviceState: array

Example
[
  {
    "timestamp": "integer",
    "attribute": {
      "name": "string",
      "type": "string"
    },
    "value": "string"
  }
]

FlowEntry: object

dpid: integer
cookie: integer
cookie_mask: integer
table_id: integer
idle_timeout: integer
hard_timeout: integer
priority: integer 0 ≤ x ≤ 65533
buffer_id: integer
flags: integer
match: Match
actions: Action
Action
Example
{
  "dpid": 1,
  "cookie": 1,
  "cookie_mask": 1,
  "table_id": 0,
  "idle_timeout": 30,
  "hard_timeout": 30,
  "priority": 1111,
  "buffer_id": 1,
  "flags": 1,
  "match": {
    "in_port": "integer",
    "dl_src": "string",
    "dl_dst": "string",
    "dl_type": "string",
    "nw_src": "string",
    "nw_dst": "string",
    "ipv6_src": "string",
    "ipv6_dst": "string",
    "nw_proto": "string",
    "tp_src": "integer",
    "tp_dst": "integer",
    "ip_dscp": "integer"
  },
  "actions": [
    [
      {
        "mark": "integer",
        "meter": "integer",
        "queue": "integer"
      }
    ]
  ]
}

Table: object

object[]
object
matched_count: integer
lookup_count: integer
table_id: integer
active_count: integer
Example
"object"

Port: object

object[]
object
hw_addr: string
curr: integer
supported: integer
max_speed: integer
advertised: integer
peer: integer
port_no: string
curr_speed: integer
name: string
state: integer
config: integer
Example
"object"

Queue: array

object
switch_id: string
command_result: string
Example
[
  {
    "switch_id": "string",
    "command_result": "string"
  }
]

SwitchRule: object

switch_id: string
command_result: object[]
object
result: string
details: string
Example
{
  "switch_id": "string",
  "command_result": [
    {
      "result": "string",
      "details": "string"
    }
  ]
}

Rule: object

priority: integer 0 ≤ x ≤ 65533 1

Priority of the rule between 0 and 65533. When "priority" has not been set up, priority: "1" is set

match: Match
Match
actions: Action
Action
Example
{
  "priority": "integer",
  "match": [
    {
      "in_port": "integer",
      "dl_src": "string",
      "dl_dst": "string",
      "dl_type": "string",
      "nw_src": "string",
      "nw_dst": "string",
      "ipv6_src": "string",
      "ipv6_dst": "string",
      "nw_proto": "string",
      "tp_src": "integer",
      "tp_dst": "integer",
      "ip_dscp": "integer"
    }
  ],
  "actions": [
    [
      {
        "mark": "integer",
        "meter": "integer",
        "queue": "integer"
      }
    ]
  ]
}

Match: object

in_port: integer 0 ≤ x ≤ 65535
dl_src: string

xx:xx:xx:xx:xx:xx

dl_dst: string

xx:xx:xx:xx:xx:xx

dl_type: string ARP, IPv4, IPv6
nw_src: string

<A.B.C.D/M>

nw_dst: string

<A.B.C.D/M>

ipv6_src: string

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/M

ipv6_dst: string

xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx/M

nw_proto: string TCP, UDP, IPCM, IPCMv6
tp_src: integer 0 ≤ x ≤ 65535
tp_dst: integer 0 ≤ x ≤ 65535
ip_dscp: integer 0 ≤ x ≤ 63
Example
{
  "in_port": "integer",
  "dl_src": "string",
  "dl_dst": "string",
  "dl_type": "string",
  "nw_src": "string",
  "nw_dst": "string",
  "ipv6_src": "string",
  "ipv6_dst": "string",
  "nw_proto": "string",
  "tp_src": "integer",
  "tp_dst": "integer",
  "ip_dscp": "integer"
}

Action: array

:

object
mark: integer 0 ≤ x ≤ 63

, sets the IPv4 ToS/DSCP field to tos.

meter: integer

meter ID, apply meter entry

queue: integer

queue ID, register queue specified by queue-id

Example
[
  {
    "mark": "integer",
    "meter": "integer",
    "queue": "integer"
  }
]

Meter: object

Meters declaration. The parameters specified in the bands depend on the flag type.

meter_id: integer
bands: object
action: string DROP, DSCP_REMARK
flag: string KBPS, PKTPS, BURST, STATS
burst_size: integer
rate: integer
prec_level: integer

Number of drop precedence level to add

Example
{
  "meter_id": "integer",
  "bands": {
    "action": "string",
    "flag": "string",
    "burst_size": "integer",
    "rate": "integer",
    "prec_level": "integer"
  }
}

JsonLDMessage: object

Example
"object"

MwAsyncResponse: object

conversationId: string
Example
{
  "conversationId": "string"
}

Subscription: object

deviceIds: string[]
string
Example
{
  "deviceIds": [
    "string"
  ]
}

Client: object

clientId: string
callbackUrl: string (url)
pullMessagesLimit: integer (int32)
responseFormat: string JSON_LD, JSON
responseDelivery: string CLIENT_PULL, SERVER_PUSH
Example
{
  "clientId": "string",
  "callbackUrl": "string (url)",
  "pullMessagesLimit": "integer (int32)",
  "responseFormat": "string",
  "responseDelivery": "string"
}

Platform: object

platformId: string
type: string
baseEndpoint: string
location: string
name: string
username: string
encryptedPassword: string
encryptionAlgorithm: string
Example
{
  "platformId": "string",
  "type": "string",
  "baseEndpoint": "string",
  "location": "string",
  "name": "string",
  "username": "string",
  "encryptedPassword": "string",
  "encryptionAlgorithm": "string"
}

IoTDevice: object

deviceId: string
hostedBy: string
location: string
name: string
Example
{
  "deviceId": "string",
  "hostedBy": "string",
  "location": "string",
  "name": "string"
}

V2flowresp: object

rev: string
flows: object
type: string
id: string
label: string
Example
{
  "rev": "string",
  "flows": {
    "type": "string",
    "id": "string",
    "label": "string"
  }
}

Alignment: object

Example
"object"

TranslationRequest: object

alignIDs: AlignmentID

Sequence of alignment IDs to ba applied

AlignmentID
graphStr: string

JSON-LD message as a string

Example
{
  "alignIDs": [
    {
      "name": "string",
      "version": "string"
    }
  ],
  "graphStr": "string"
}

TranslationResponse: object

message: string

Info on the success of the translation

graphStr: string

Translated JSON-LD message as a string

Example
{
  "message": "string",
  "graphStr": "string"
}

TranslationErrorResponse: object

message: string

Info on the failure of the translation

graphStr: string

Empty string

Example
{
  "message": "string",
  "graphStr": "string"
}

AlignmentID: object

name: string

Alignment name

version: string

Alignment version

Example
{
  "name": "string",
  "version": "string"
}

AlignmentInfo: object

descId: string

business identifier

id: integer

technical identifier

date: integer

UNIX timestamp of upload to IPSM

name: string

Name of the alignment

sourceOntologyURI: string

URI of the source ontology for alignment

targetOntologyURI: string

URI of the target ontology for alignment

version: string

alignment version

creator: string

alignment creator

description: string

alignment description

Example
{
  "descId": "string",
  "id": "integer",
  "date": "integer",
  "name": "string",
  "sourceOntologyURI": "string",
  "targetOntologyURI": "string",
  "version": "string",
  "creator": "string",
  "description": "string"
}

Error: object

message: string
Example
{
  "message": "string"
}

Response: object

message: string
Example
{
  "message": "string"
}

LoggingResponse: object

message: string
level: string ALL, TRACE, DEBUG, INFO, WARN, ERROR, OFF
Example
{
  "message": "string",
  "level": "string"
}

ChannelInfo: object

id: integer

Identifier of the channel

descId: string

Business identifier of the channel

source: string

Identifier representing the source of the channel, i.e. Apache Kafka topic from which IPSM reads the RDF data to be translated

inpAlignmentName: string

Name of the input alignment, used for translating the incoming RDF data

inpAlignmentVersion: string

Version of the input alignment, used for translating the incoming RDF data

outAlignmentName: string

Name of the output alignment, used for translating the outgoing RDF data

outAlignmentVersion: string

Version of the output alignment, used for translating the outgoing RDF data

sink: string

Identifier of the sink of the channel, i.e. Apache Kafka topic to which IPSM publishes translated RDF data

Example
{
  "id": "integer",
  "descId": "string",
  "source": "string",
  "inpAlignmentName": "string",
  "inpAlignmentVersion": "string",
  "outAlignmentName": "string",
  "outAlignmentVersion": "string",
  "sink": "string"
}