1{
2    "domain": "Database",
3    "types": [
4        {
5            "id": "DatabaseId",
6            "type": "string",
7            "description": "Unique identifier of Database object."
8        },
9        {
10            "id": "Database",
11            "type": "object",
12            "description": "Database object.",
13            "properties": [
14                { "name": "id", "$ref": "DatabaseId", "description": "Database ID." },
15                { "name": "domain", "type": "string", "description": "Database domain." },
16                { "name": "name", "type": "string", "description": "Database name." },
17                { "name": "version", "type": "string", "description": "Database version." }
18            ]
19        },
20        {
21            "id": "Error",
22            "type": "object",
23            "description": "Database error.",
24            "properties": [
25                { "name": "message", "type": "string", "description": "Error message." },
26                { "name": "code", "type": "integer", "description": "Error code." }
27            ]
28        }
29    ],
30    "commands": [
31        {
32            "name": "enable",
33            "description": "Enables database tracking, database events will now be delivered to the client."
34        },
35        {
36            "name": "disable",
37            "description": "Disables database tracking, prevents database events from being sent to the client."
38        },
39        {
40            "name": "getDatabaseTableNames",
41            "parameters": [
42                { "name": "databaseId", "$ref": "DatabaseId" }
43            ],
44            "returns": [
45                { "name": "tableNames", "type": "array", "items": { "type": "string" } }
46            ]
47        },
48        {
49            "name": "executeSQL",
50            "async": true,
51            "parameters": [
52                { "name": "databaseId", "$ref": "DatabaseId" },
53                { "name": "query", "type": "string" }
54            ],
55            "returns": [
56                { "name": "columnNames", "type": "array", "optional": true, "items": { "type": "string" } },
57                { "name": "values", "type": "array", "optional": true, "items": { "type": "any" }},
58                { "name": "sqlError", "$ref": "Error", "optional": true }
59            ]
60        }
61    ],
62    "events": [
63        {
64            "name": "addDatabase",
65            "parameters": [
66                { "name": "database", "$ref": "Database" }
67            ]
68        }
69    ]
70}
71