1{
2    "domain": "IndexedDB",
3    "types": [
4        {
5            "id": "DatabaseWithObjectStores",
6            "type": "object",
7            "description": "Database with an array of object stores.",
8            "properties": [
9                { "name": "name", "type": "string", "description": "Database name." },
10                { "name": "version", "type": "number", "description": "Database version." },
11                { "name": "objectStores", "type": "array", "items": { "$ref": "ObjectStore" }, "description": "Object stores in this database." }
12            ]
13        },
14        {
15            "id": "ObjectStore",
16            "type": "object",
17            "description": "Object store.",
18            "properties": [
19                { "name": "name", "type": "string", "description": "Object store name." },
20                { "name": "keyPath", "$ref": "KeyPath", "description": "Object store key path." },
21                { "name": "autoIncrement", "type": "boolean", "description": "If true, object store has auto increment flag set." },
22                { "name": "indexes", "type": "array", "items": { "$ref": "ObjectStoreIndex" }, "description": "Indexes in this object store." }
23            ]
24        },
25        {
26            "id": "ObjectStoreIndex",
27            "type": "object",
28            "description": "Object store index.",
29            "properties": [
30                { "name": "name", "type": "string", "description": "Index name." },
31                { "name": "keyPath", "$ref": "KeyPath", "description": "Index key path." },
32                { "name": "unique", "type": "boolean", "description": "If true, index is unique." },
33                { "name": "multiEntry", "type": "boolean", "description": "If true, index allows multiple entries for a key." }
34            ]
35        },
36        {
37            "id": "Key",
38            "type": "object",
39            "description": "Key.",
40            "properties": [
41                { "name": "type", "type": "string", "enum": ["number", "string", "date", "array"], "description": "Key type." },
42                { "name": "number", "type": "number", "optional": true, "description": "Number value." },
43                { "name": "string", "type": "string", "optional": true, "description": "String value." },
44                { "name": "date", "type": "number", "optional": true, "description": "Date value." },
45                { "name": "array", "type": "array", "optional": true, "items": { "$ref": "Key" }, "description": "Array value." }
46            ]
47        },
48        {
49            "id": "KeyRange",
50            "type": "object",
51            "description": "Key range.",
52            "properties": [
53                { "name": "lower", "$ref": "Key", "optional": true, "description": "Lower bound." },
54                { "name": "upper", "$ref": "Key", "optional": true, "description": "Upper bound." },
55                { "name": "lowerOpen", "type": "boolean", "description": "If true lower bound is open." },
56                { "name": "upperOpen", "type": "boolean", "description": "If true upper bound is open." }
57            ]
58        },
59        {
60            "id": "DataEntry",
61            "type": "object",
62            "description": "Data entry.",
63            "properties": [
64                { "name": "key", "$ref": "Runtime.RemoteObject", "description": "Key." },
65                { "name": "primaryKey", "$ref": "Runtime.RemoteObject", "description": "Primary key." },
66                { "name": "value", "$ref": "Runtime.RemoteObject", "description": "Value." }
67            ]
68        },
69        {
70            "id": "KeyPath",
71            "type": "object",
72            "description": "Key path.",
73            "properties": [
74                { "name": "type", "type": "string", "enum": ["null", "string", "array"], "description": "Key path type." },
75                { "name": "string", "type": "string", "optional": true, "description": "String value." },
76                { "name": "array", "type": "array", "optional": true, "items": { "type": "string" }, "description": "Array value." }
77            ]
78        }
79    ],
80    "commands": [
81        {
82            "name": "enable",
83            "description": "Enables events from backend."
84        },
85        {
86            "name": "disable",
87            "description": "Disables events from backend."
88        },
89        {
90            "name": "requestDatabaseNames",
91            "async": true,
92            "parameters": [
93                { "name": "securityOrigin", "type": "string", "description": "Security origin." }
94            ],
95            "returns": [
96                { "name": "databaseNames", "type": "array", "items": { "type": "string" }, "description": "Database names for origin." }
97            ],
98            "description": "Requests database names for given security origin."
99        },
100        {
101            "name": "requestDatabase",
102            "async": true,
103            "parameters": [
104                { "name": "securityOrigin", "type": "string", "description": "Security origin." },
105                { "name": "databaseName", "type": "string", "description": "Database name." }
106            ],
107            "returns": [
108                { "name": "databaseWithObjectStores", "$ref": "DatabaseWithObjectStores", "description": "Database with an array of object stores." }
109            ],
110            "description": "Requests database with given name in given frame."
111        },
112        {
113            "name": "requestData",
114            "async": true,
115            "parameters": [
116                { "name": "securityOrigin", "type": "string", "description": "Security origin." },
117                { "name": "databaseName", "type": "string", "description": "Database name." },
118                { "name": "objectStoreName", "type": "string", "description": "Object store name." },
119                { "name": "indexName", "type": "string", "description": "Index name, empty string for object store data requests." },
120                { "name": "skipCount", "type": "integer", "description": "Number of records to skip." },
121                { "name": "pageSize", "type": "integer", "description": "Number of records to fetch." },
122                { "name": "keyRange", "$ref": "KeyRange", "optional": true, "description": "Key range." }
123            ],
124            "returns": [
125                { "name": "objectStoreDataEntries", "type": "array", "items": { "$ref": "DataEntry" }, "description": "Array of object store data entries." },
126                { "name": "hasMore", "type": "boolean", "description": "If true, there are more entries to fetch in the given range." }
127            ],
128            "description": "Requests data from object store or index."
129        },
130        {
131            "name": "clearObjectStore",
132            "async": true,
133            "parameters": [
134                { "name": "securityOrigin", "type": "string", "description": "Security origin." },
135                { "name": "databaseName", "type": "string", "description": "Database name." },
136                { "name": "objectStoreName", "type": "string", "description": "Object store name." }
137            ],
138            "returns": [
139            ],
140            "description": "Clears all entries from an object store."
141        }
142    ]
143}
144