{ "asyncapi": "1.2.0", "info": { "description": "NPG server API", "title": "NPG", "version": "1.0.0" }, "tags": [ { "name": "log" }, { "name": "project" }, { "name": "server" }, { "name": "term" } ], "events": { "receive": [ { "$ref": "#/components/messages/listProjects" }, { "$ref": "#/components/messages/addProject" }, { "$ref": "#/components/messages/loadProject" }, { "$ref": "#/components/messages/deleteProject" }, { "$ref": "#/components/messages/version" }, { "$ref": "#/components/messages/listBackends" }, { "$ref": "#/components/messages/listTerms" }, { "$ref": "#/components/messages/addTerm" }, { "$ref": "#/components/messages/loadTerm" }, { "$ref": "#/components/messages/deleteTerm" } ], "send": [ { "$ref": "#/components/messages/listProjectsResp" }, { "$ref": "#/components/messages/addProjectResp" }, { "$ref": "#/components/messages/loadProjectResp" }, { "$ref": "#/components/messages/deleteProjectResp" }, { "$ref": "#/components/messages/versionResp" }, { "$ref": "#/components/messages/listBackendsResp" }, { "$ref": "#/components/messages/listTermsResp" }, { "$ref": "#/components/messages/addTermResp" }, { "$ref": "#/components/messages/deleteTermResp" } ] }, "components": { "messages": { "listProjects": { "summary": "List all projects", "tags": [ { "name": "project" } ] }, "listProjectsResp": { "summary": "Project list", "tags": [ { "name": "project" } ], "payload": { "type": "array", "items": { "$ref": "#/components/schemas/project" } } }, "addProject": { "summary": "Add a new project", "tags": [ { "name": "project" } ], "payload": { "$ref": "#/components/schemas/project" } }, "addProjectResp": { "summary": "Result of project addition", "tags": [ { "name": "project" } ], "payload": { "$ref": "#/components/schemas/result" } }, "loadProject": { "summary": "Load a project", "tags": [ { "name": "project" } ], "payload": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } }, "loadProjectResp": { "summary": "Loaded project information", "tags": [ { "name": "project" } ], "payload": { "$ref": "#/components/schemas/project" } }, "deleteProject": { "summary": "Delete a project", "tags": [ { "name": "project" } ], "payload": { "type": "object", "properties": { "id": { "type": "string", "format": "uuid" } } } }, "deleteProjectResp": { "summary": "Result of project deletion", "tags": [ { "name": "project" } ], "payload": { "$ref": "#/components/schemas/result" } }, "version": { "summary": "Get server version", "tags": [ { "name": "server" } ] }, "versionResp": { "summary": "Server version", "tags": [ { "name": "server" } ], "payload": { "type": "integer" } }, "listBackends": { "summary": "List backend servers", "tags": [ { "name": "server" } ] }, "listBackendsResp": { "summary": "Backend server list", "tags": [ { "name": "server" } ], "payload": { "type": "array", "items": { "$ref": "#/components/schemas/backend" } } }, "listTerms": { "summary": "List terminal", "tags": [ { "name": "term" } ] }, "listTermsResp": { "summary": "Terminal list", "tags": [ { "name": "term" } ], "payload": { "type": "array", "items": { "$ref": "#/components/schemas/term" } } }, "addTerm": { "summary": "Add a new terminal", "tags": [ { "name": "term" } ], "payload": { "$ref": "#/components/schemas/termreq" } }, "addTermResp": { "summary": "Added a new terminal", "tags": [ { "name": "term" } ], "payload": { "$ref": "#/components/schemas/term" } }, "loadTerm": { "summary": "Load a terminal", "tags": [ { "name": "term" } ], "payload": { "type": "object", "properties": { "id": { "type": "string" } } } }, "loadTermResp": { "summary": "Loaded terminal information", "tags": [ { "name": "term" } ], "payload": { "$ref": "#/components/schemas/term" } }, "deleteTerm": { "summary": "Delete a terminal", "tags": [ { "name": "term" } ], "payload": { "type": "object", "properties": { "id": { "type": "string" } } } }, "deleteTermResp": { "summary": "Result of terminal deletion", "tags": [ { "name": "term" } ], "payload": { "$ref": "#/components/schemas/result" } } }, "schemas": { "project": { "type": "object", "required": [ "name" ], "properties": { "id": { "type": "string", "format": "uuid" }, "name": { "type": "string" }, "topology": { "$ref": "#/components/schemas/topology" } } }, "termreq": { "type": "object", "properties": { "cols": { "type": "integer" }, "rows": { "type": "integer" }, "backend": { "type": "string" }, "container": { "type": "string" } } }, "term": { "type": "object", "required": [ "id" ], "properties": { "id": { "type": "string" }, "backend": { "type": "string" }, "container": { "type": "string" }, "process": { "type": "string" } } }, "backend": { "type": "object", "required": [ "host" ], "properties": { "host": { "type": "string" }, "os": { "type": "string" }, "cpu": { "type": "string", "description": "CPU type and number of cores" }, "cpu_usage": { "type": "string", "description": "CPU usage in percent" }, "mem": { "type": "string", "description": "total memory in MB" }, "mem_usage": { "type": "string", "description": "memory usage in percent" }, "docker_version": { "type": "string" }, "uptime": { "type": "string" } } }, "node": { "type": "object", "required": [ "backend", "name", "image" ], "properties": { "backend": { "$ref": "#/components/schemas/backend" }, "name": { "type": "string" }, "image": { "type": "string" }, "x": { "type": "integer" }, "y": { "type": "integer" } } }, "bridge": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string" }, "x": { "type": "integer" }, "y": { "type": "integer" } } }, "netem": { "type": "object", "properties": { "bw": { "type": "integer" }, "delay": { "type": "integer" } } }, "link": { "type": "object", "required": [ "node", "bridge" ], "properties": { "node": { "$ref": "#/components/schemas/node" }, "bridge": { "$ref": "#/components/schemas/bridge" }, "up": { "$ref": "#/components/schemas/netem" }, "down": { "$ref": "#/components/schemas/netem" } } }, "topology": { "type": "object", "properties": { "backends": { "type": "array", "items": { "$ref": "#/components/schemas/backend" } }, "nodes": { "type": "array", "items": { "$ref":"#/components/schemas/node" } }, "links": { "type": "array", "items": { "$ref": "#/components/schemas/link" } } } }, "result": { "type": "object", "required": [ "code" ], "properties": { "code": { "type": "integer" }, "message": { "type": "string" } } } } } }