-
Notifications
You must be signed in to change notification settings - Fork 0
/
api_definitions.py
207 lines (168 loc) · 9.48 KB
/
api_definitions.py
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
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
"""Collection of constants for all api uris"""
# This file was generated by 'constants_exporter_api_python.py' at 'https://github.com/johannesgrothe/Smarthome_System'
# Do not modify this file, modify 'api_docs/api_specs.json' and 'gadget_docs/gadget_specs.json' and export.
# Every change made will be overwritten at next export.
import enum
try:
from utils.api_endpoint_definition import ApiEndpointDefinition, ApiAccessType, ApiAccessLevelSuper, ApiURIsSuper, ApiEndpointCategorySuper
from utils.software_version import SoftwareVersion
except ModuleNotFoundError:
from .utils.api_endpoint_definition import ApiEndpointDefinition, ApiAccessType, ApiAccessLevelSuper, ApiURIsSuper, ApiEndpointCategorySuper
from .utils.software_version import SoftwareVersion
# API Version
api_version = SoftwareVersion(1, 1, 5)
class ApiAccessLevel(ApiAccessLevelSuper, enum.IntEnum):
"""Container for all API access levels"""
admin = 7 # Admin
mqtt = 6 # MQTT
user = 5 # User
guest = 4 # Guest
class ApiEndpointCategory(ApiEndpointCategorySuper, enum.IntEnum):
"""Container for all API endpoint types"""
System = 0 # System
Gadgets = 1 # Gadgets
Clients = 2 # Clients
Publishers = 3 # Gadget Publishers
Configs = 4 # Config Management
class ApiURIs(ApiURIsSuper):
"""Container for all API URIs"""
# URIs exposed by the bridge
# Read Bridge Info
info_bridge = ApiEndpointDefinition("info/bridge",
[ApiAccessLevel.admin, ApiAccessLevel.user, ApiAccessLevel.guest],
ApiEndpointCategory.System,
ApiAccessType.read,
False,
True)
# Test Echo
test_echo = ApiEndpointDefinition("echo",
[ApiAccessLevel.admin],
ApiEndpointCategory.System,
ApiAccessType.write,
False,
True)
# Bridge update check
bridge_update_check = ApiEndpointDefinition("bridge/update/check",
[ApiAccessLevel.admin],
ApiEndpointCategory.System,
ApiAccessType.read,
False,
True)
# Bridge update execute
bridge_update_execute = ApiEndpointDefinition("bridge/update/execute",
[ApiAccessLevel.admin],
ApiEndpointCategory.System,
ApiAccessType.write,
False,
True)
# Add user to Bridge
bridge_add_user = ApiEndpointDefinition("bridge/add_user",
[ApiAccessLevel.admin],
ApiEndpointCategory.System,
ApiAccessType.write,
False,
True)
# Read Gadgets Info
info_gadgets = ApiEndpointDefinition("info/gadgets",
[ApiAccessLevel.admin, ApiAccessLevel.user, ApiAccessLevel.guest],
ApiEndpointCategory.Gadgets,
ApiAccessType.read,
False,
True)
# Update Gadget
update_gadget = ApiEndpointDefinition("update/gadget",
[ApiAccessLevel.admin, ApiAccessLevel.mqtt, ApiAccessLevel.user],
ApiEndpointCategory.Gadgets,
ApiAccessType.write,
False,
False)
# Write Complete Config to Client
client_config_write = ApiEndpointDefinition("config/write",
[ApiAccessLevel.admin],
ApiEndpointCategory.Clients,
ApiAccessType.write,
False,
True)
# Delete Config
client_config_delete = ApiEndpointDefinition("config/delete",
[ApiAccessLevel.admin],
ApiEndpointCategory.Clients,
ApiAccessType.write,
False,
True)
# Client Heartbeat
heartbeat = ApiEndpointDefinition("heartbeat",
[ApiAccessLevel.admin, ApiAccessLevel.mqtt],
ApiEndpointCategory.Clients,
ApiAccessType.write,
False,
False)
# Read Clients Info
info_clients = ApiEndpointDefinition("info/clients",
[ApiAccessLevel.admin, ApiAccessLevel.user, ApiAccessLevel.guest],
ApiEndpointCategory.Clients,
ApiAccessType.read,
False,
True)
# Sync Client
sync_client = ApiEndpointDefinition("sync/client",
[ApiAccessLevel.admin, ApiAccessLevel.mqtt],
ApiEndpointCategory.Clients,
ApiAccessType.write,
False,
False)
# Reboot Client
reboot_connected_client = ApiEndpointDefinition("reboot/client",
[ApiAccessLevel.admin, ApiAccessLevel.user],
ApiEndpointCategory.Clients,
ApiAccessType.write,
False,
True)
# Read Gadget Publisher Info
info_gadget_publishers = ApiEndpointDefinition("info/gadget_publishers",
[ApiAccessLevel.admin, ApiAccessLevel.user],
ApiEndpointCategory.Publishers,
ApiAccessType.read,
False,
True)
# Retrieve all stored configs
config_storage_get_all = ApiEndpointDefinition("config/storage/get_all",
[ApiAccessLevel.admin, ApiAccessLevel.user],
ApiEndpointCategory.Configs,
ApiAccessType.read,
False,
True)
# Retrieve stored config
config_storage_get = ApiEndpointDefinition("config/storage/get",
[ApiAccessLevel.admin, ApiAccessLevel.user],
ApiEndpointCategory.Configs,
ApiAccessType.read,
False,
True)
# Save config
config_storage_save = ApiEndpointDefinition("config/storage/save",
[ApiAccessLevel.admin],
ApiEndpointCategory.Configs,
ApiAccessType.write,
False,
True)
# Delete Config
config_storage_delete = ApiEndpointDefinition("config/storage/delete",
[ApiAccessLevel.admin],
ApiEndpointCategory.Configs,
ApiAccessType.write,
False,
True)
# URIs exposed by the client
# Write System Config
client_system_config_write = ApiEndpointDefinition("config/system/write", [], None, None, True, True)
# Write Event Config
client_event_config_write = ApiEndpointDefinition("config/event/write", [], None, None, True, True)
# Write Gadget Config
client_gadget_config_write = ApiEndpointDefinition("config/gadget/write", [], None, None, True, True)
# System Control
system_ctrl = ApiEndpointDefinition("system", [], None, None, True, True)
# Client Sync Request
sync_request = ApiEndpointDefinition("sync", [], None, None, True, False)
# Sync Event
client_sync_event = ApiEndpointDefinition("sync/event", [], None, None, True, False)