-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapi-contract.json
More file actions
107 lines (107 loc) · 3.16 KB
/
Copy pathapi-contract.json
File metadata and controls
107 lines (107 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Spanda Core API Contract",
"version": 2,
"description": "Stable JSON boundary between Spanda tooling (spanda-driver / spanda-cli / bindings) and TypeScript/React clients. Schema is implementation-agnostic; see docs/api-documentation.md.",
"definitions": {
"Diagnostic": {
"type": "object",
"required": ["line", "column", "message"],
"properties": {
"line": { "type": "integer", "minimum": 1 },
"column": { "type": "integer", "minimum": 1 },
"message": { "type": "string" },
"severity": { "enum": ["error", "warning"] }
}
},
"CompatSeverity": {
"enum": ["pass", "warning", "error"]
},
"CompatItem": {
"type": "object",
"required": ["category", "message", "severity", "line", "column"],
"properties": {
"category": { "type": "string" },
"message": { "type": "string" },
"severity": { "$ref": "#/definitions/CompatSeverity" },
"line": { "type": "integer", "minimum": 1 },
"column": { "type": "integer", "minimum": 1 }
}
},
"MatrixCell": {
"type": "object",
"required": ["robot", "target", "compatible"],
"properties": {
"robot": { "type": "string" },
"target": { "type": "string" },
"compatible": { "type": "boolean" }
}
},
"CompatibilityMatrix": {
"type": "object",
"required": ["cells"],
"properties": {
"cells": {
"type": "array",
"items": { "$ref": "#/definitions/MatrixCell" }
}
}
},
"RobotState": {
"type": "object",
"required": ["pose", "velocity", "emergencyStop"],
"properties": {
"pose": {
"type": "object",
"properties": {
"x": { "type": "number" },
"y": { "type": "number" },
"theta": { "type": "number" },
"z": { "type": "number" }
}
},
"velocity": {
"type": "object",
"properties": {
"linear": { "type": "number" },
"angular": { "type": "number" }
}
},
"emergencyStop": { "type": "boolean" }
}
},
"CheckResponse": {
"type": "object",
"required": ["ok"],
"properties": {
"ok": { "type": "boolean" },
"diagnostics": {
"type": "array",
"items": { "$ref": "#/definitions/Diagnostic" }
}
}
},
"VerifyResponse": {
"type": "object",
"required": ["ok", "items"],
"properties": {
"ok": { "type": "boolean" },
"target": { "type": "string" },
"items": {
"type": "array",
"items": { "$ref": "#/definitions/CompatItem" }
},
"matrix": { "$ref": "#/definitions/CompatibilityMatrix" }
}
},
"RunResponse": {
"type": "object",
"required": ["state", "events"],
"properties": {
"state": { "$ref": "#/definitions/RobotState" },
"events": { "type": "array", "items": { "type": "string" } },
"logs": { "type": "array", "items": { "type": "string" } }
}
}
}
}