-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathdevice.proto
84 lines (75 loc) · 1.81 KB
/
device.proto
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
syntax = "proto3";
package pb;
import "google/api/annotations.proto";
//import "google/protobuf/empty.proto";
//import "google/protobuf/duration.proto";
//import "google/protobuf/timestamp.proto";
import "protoc-gen-swagger/options/annotations.proto";
option (grpc.gateway.protoc_gen_swagger.options.openapiv2_swagger) = {
info: {
title: "go-ws-api";
version: "1.0";
contact: {
name: "go-ws-api";
url: "https://github.com/mch1307/ws-go-api";
email: "[email protected]";
};
};
schemes: HTTP;
schemes: HTTPS;
consumes: "application/json";
produces: "application/json";
};
service DeviceService {
// List all registered devices
rpc GetAllDevices(Empty) returns (Devices) {
option (google.api.http) = {
get: "/api/v1/devices"
};
};
// Get a device by ID
rpc GetDeviceByID(ID) returns (Device) {
option (google.api.http).get = "/api/v1/devices/{id}";
};
// Update a device's state
rpc SwitchDevice(UpdateDevice) returns (Device) {
option (google.api.http) = {
post: "/api/v1/devices/{id}/{value}"
body: "*"
};
};
// Register a new device
rpc RegisterDevice(Device) returns (Device) {
option (google.api.http) = {
post: "/api/v1/devices"
body: "*"
};
};
};
message ID {
int32 id = 1;
};
message UpdateDevice {
int32 id = 1;
int32 value = 2;
};
message Device {
int32 id = 1;
string hardware = 2;
string name = 3;
string location = 4;
enum DeviceType {
unknown = 0;
onOff = 1;
dimmer = 2;
sensor = 3;
}
DeviceType type = 5;
string unit = 6;
int32 state = 7;
};
message Devices {
repeated Device device = 1;
};
message Empty {
};