@kusinta/iot-schema 0.2.0-beta.53 → 0.2.0-beta.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kusinta/iot-schema",
3
- "version": "0.2.0-beta.53",
3
+ "version": "0.2.0-beta.54",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "files": [
@@ -44,6 +44,8 @@
44
44
  "./webrtc/management": "./src/kusinta/iot/webrtc/v1/management_pb.js",
45
45
  "./webrtc/permission-push": "./src/kusinta/iot/webrtc/v1/permission_push_pb.js",
46
46
  "./webrtc/setpoint-mode": "./src/kusinta/iot/webrtc/v1/setpoint_mode_pb.js",
47
+ "./planning": "./src/kusinta/iot/planning/v1/planning_pb.js",
48
+ "./planning/service": "./src/kusinta/iot/planning/v1/planning_service_pb.js",
47
49
  "./registration": "./src/kusinta/iot/registration/v1/registration_pb.js",
48
50
  "./registration/service": "./src/kusinta/iot/registration/v1/registration_service_pb.js",
49
51
  "./reporting": "./src/kusinta/iot/reporting/v1/reporting_pb.js",
@@ -981,10 +981,11 @@ export declare type PlantHistorySample = Message<"kusinta.iot.climate.v1.PlantHi
981
981
  meterImportedMwh?: bigint | undefined;
982
982
 
983
983
  /**
984
- * The vendor's code (device.v1.HeatSourceReadings.alarm_code) of the last alarm that began in
985
- * the bucket. Absent where none began, or where the heat source reports no code. Read only as
986
- * the bucket is: never given to service, who are told of an alarm as a fault alone
987
- * (device.v1.HeatSourceReadings).
984
+ * The vendor's code (device.v1.HeatSourceReadings.alarm_code) last reported in the bucket
985
+ * while an alarm was active: a code reported a little after its alarm began is kept with the
986
+ * bucket it arrived in. Absent where no code was reported in the bucket while an alarm was
987
+ * active, or where the heat source reports none. Read only as the bucket is: never given to service, who are told of an alarm as a
988
+ * fault alone (device.v1.HeatSourceReadings).
988
989
  *
989
990
  * @generated from field: optional uint32 last_alarm_code = 18;
990
991
  */
@@ -0,0 +1,152 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/planning/v1/planning.proto (package kusinta.iot.planning.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
8
+
9
+ /**
10
+ * Describes the file kusinta/iot/planning/v1/planning.proto.
11
+ */
12
+ export declare const file_kusinta_iot_planning_v1_planning: GenFile;
13
+
14
+ /**
15
+ * A place to forecast for: the corner of a cell 0.02° of latitude by 0.04° of longitude,
16
+ * about 2.2 by 2.3 kilometres at 59° N, the size of the forecast's own grid. A gateway rounds
17
+ * its position down to the cell's corner. A latitude that is not a multiple of 2 hundredths
18
+ * or outside ±9000, or a longitude that is not a multiple of 4 hundredths or outside ±18000,
19
+ * is refused as INVALID_ARGUMENT.
20
+ *
21
+ * @generated from message kusinta.iot.planning.v1.ForecastCell
22
+ */
23
+ export declare type ForecastCell = Message<"kusinta.iot.planning.v1.ForecastCell"> & {
24
+ /**
25
+ * Degrees north, in hundredths: a multiple of 2 (5930 for 59.30° N).
26
+ *
27
+ * @generated from field: sint32 latitude_centidegrees = 1;
28
+ */
29
+ latitudeCentidegrees: number;
30
+
31
+ /**
32
+ * Degrees east, in hundredths: a multiple of 4 (1804 for 18.04° E).
33
+ *
34
+ * @generated from field: sint32 longitude_centidegrees = 2;
35
+ */
36
+ longitudeCentidegrees: number;
37
+ };
38
+
39
+ /**
40
+ * Describes the message kusinta.iot.planning.v1.ForecastCell.
41
+ * Use `create(ForecastCellSchema)` to create a new message.
42
+ */
43
+ export declare const ForecastCellSchema: GenMessage<ForecastCell>;
44
+
45
+ /**
46
+ * One market time unit of a day-ahead price: [start, end), in euros per megawatt-hour, in
47
+ * cents (a price may be negative). A day has 96 of 15 minutes where the market clears in
48
+ * quarter hours.
49
+ *
50
+ * @generated from message kusinta.iot.planning.v1.PriceInterval
51
+ */
52
+ export declare type PriceInterval = Message<"kusinta.iot.planning.v1.PriceInterval"> & {
53
+ /**
54
+ * @generated from field: google.protobuf.Timestamp start = 1;
55
+ */
56
+ start?: Timestamp | undefined;
57
+
58
+ /**
59
+ * @generated from field: google.protobuf.Timestamp end = 2;
60
+ */
61
+ end?: Timestamp | undefined;
62
+
63
+ /**
64
+ * @generated from field: sint32 eur_cents_per_mwh = 3;
65
+ */
66
+ eurCentsPerMwh: number;
67
+ };
68
+
69
+ /**
70
+ * Describes the message kusinta.iot.planning.v1.PriceInterval.
71
+ * Use `create(PriceIntervalSchema)` to create a new message.
72
+ */
73
+ export declare const PriceIntervalSchema: GenMessage<PriceInterval>;
74
+
75
+ /**
76
+ * One point of a forecast, valid at an instant. Every value is optional: absent means the
77
+ * forecast gave none, never zero. A gateway reads the values it knows and ignores the rest.
78
+ *
79
+ * @generated from message kusinta.iot.planning.v1.ForecastPoint
80
+ */
81
+ export declare type ForecastPoint = Message<"kusinta.iot.planning.v1.ForecastPoint"> & {
82
+ /**
83
+ * @generated from field: google.protobuf.Timestamp valid_at = 1;
84
+ */
85
+ validAt?: Timestamp | undefined;
86
+
87
+ /**
88
+ * Air temperature at two metres, in centidegrees Celsius.
89
+ *
90
+ * @generated from field: optional sint32 temperature_centidegrees = 2;
91
+ */
92
+ temperatureCentidegrees?: number | undefined;
93
+
94
+ /**
95
+ * Mean wind speed at ten metres, in centimetres per second.
96
+ *
97
+ * @generated from field: optional uint32 wind_speed_cm_per_s = 3;
98
+ */
99
+ windSpeedCmPerS?: number | undefined;
100
+
101
+ /**
102
+ * The direction the wind blows from, in whole degrees from north, 0–359.
103
+ *
104
+ * @generated from field: optional uint32 wind_from_degrees = 4;
105
+ */
106
+ windFromDegrees?: number | undefined;
107
+
108
+ /**
109
+ * Global radiation on a horizontal surface, in watts per square metre.
110
+ *
111
+ * @generated from field: optional uint32 global_radiation_w_per_m2 = 5;
112
+ */
113
+ globalRadiationWPerM2?: number | undefined;
114
+ };
115
+
116
+ /**
117
+ * Describes the message kusinta.iot.planning.v1.ForecastPoint.
118
+ * Use `create(ForecastPointSchema)` to create a new message.
119
+ */
120
+ export declare const ForecastPointSchema: GenMessage<ForecastPoint>;
121
+
122
+ /**
123
+ * One issue of a forecast for a cell: when it was issued, by whom, and its points, oldest
124
+ * first, from the issue's first hour onward.
125
+ *
126
+ * @generated from message kusinta.iot.planning.v1.ForecastIssue
127
+ */
128
+ export declare type ForecastIssue = Message<"kusinta.iot.planning.v1.ForecastIssue"> & {
129
+ /**
130
+ * @generated from field: google.protobuf.Timestamp issued_at = 1;
131
+ */
132
+ issuedAt?: Timestamp | undefined;
133
+
134
+ /**
135
+ * Whom to credit wherever the forecast is shown, as its licence asks (for example "SMHI").
136
+ *
137
+ * @generated from field: string attribution = 2;
138
+ */
139
+ attribution: string;
140
+
141
+ /**
142
+ * @generated from field: repeated kusinta.iot.planning.v1.ForecastPoint points = 3;
143
+ */
144
+ points: ForecastPoint[];
145
+ };
146
+
147
+ /**
148
+ * Describes the message kusinta.iot.planning.v1.ForecastIssue.
149
+ * Use `create(ForecastIssueSchema)` to create a new message.
150
+ */
151
+ export declare const ForecastIssueSchema: GenMessage<ForecastIssue>;
152
+
@@ -0,0 +1,41 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/planning/v1/planning.proto (package kusinta.iot.planning.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+
8
+ /**
9
+ * Describes the file kusinta/iot/planning/v1/planning.proto.
10
+ */
11
+ export const file_kusinta_iot_planning_v1_planning = /*@__PURE__*/
12
+ fileDesc("CiZrdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZy5wcm90bxIXa3VzaW50YS5pb3QucGxhbm5pbmcudjEiTQoMRm9yZWNhc3RDZWxsEh0KFWxhdGl0dWRlX2NlbnRpZGVncmVlcxgBIAEoERIeChZsb25naXR1ZGVfY2VudGlkZWdyZWVzGAIgASgRIn4KDVByaWNlSW50ZXJ2YWwSKQoFc3RhcnQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEicKA2VuZBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGQoRZXVyX2NlbnRzX3Blcl9td2gYAyABKBEitwIKDUZvcmVjYXN0UG9pbnQSLAoIdmFsaWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEiUKGHRlbXBlcmF0dXJlX2NlbnRpZGVncmVlcxgCIAEoEUgAiAEBEiAKE3dpbmRfc3BlZWRfY21fcGVyX3MYAyABKA1IAYgBARIeChF3aW5kX2Zyb21fZGVncmVlcxgEIAEoDUgCiAEBEiYKGWdsb2JhbF9yYWRpYXRpb25fd19wZXJfbTIYBSABKA1IA4gBAUIbChlfdGVtcGVyYXR1cmVfY2VudGlkZWdyZWVzQhYKFF93aW5kX3NwZWVkX2NtX3Blcl9zQhQKEl93aW5kX2Zyb21fZGVncmVlc0IcChpfZ2xvYmFsX3JhZGlhdGlvbl93X3Blcl9tMiKLAQoNRm9yZWNhc3RJc3N1ZRItCglpc3N1ZWRfYXQYASABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhMKC2F0dHJpYnV0aW9uGAIgASgJEjYKBnBvaW50cxgDIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLkZvcmVjYXN0UG9pbnRCAkgBYgZwcm90bzM", [file_google_protobuf_timestamp]);
13
+
14
+ /**
15
+ * Describes the message kusinta.iot.planning.v1.ForecastCell.
16
+ * Use `create(ForecastCellSchema)` to create a new message.
17
+ */
18
+ export const ForecastCellSchema = /*@__PURE__*/
19
+ messageDesc(file_kusinta_iot_planning_v1_planning, 0);
20
+
21
+ /**
22
+ * Describes the message kusinta.iot.planning.v1.PriceInterval.
23
+ * Use `create(PriceIntervalSchema)` to create a new message.
24
+ */
25
+ export const PriceIntervalSchema = /*@__PURE__*/
26
+ messageDesc(file_kusinta_iot_planning_v1_planning, 1);
27
+
28
+ /**
29
+ * Describes the message kusinta.iot.planning.v1.ForecastPoint.
30
+ * Use `create(ForecastPointSchema)` to create a new message.
31
+ */
32
+ export const ForecastPointSchema = /*@__PURE__*/
33
+ messageDesc(file_kusinta_iot_planning_v1_planning, 2);
34
+
35
+ /**
36
+ * Describes the message kusinta.iot.planning.v1.ForecastIssue.
37
+ * Use `create(ForecastIssueSchema)` to create a new message.
38
+ */
39
+ export const ForecastIssueSchema = /*@__PURE__*/
40
+ messageDesc(file_kusinta_iot_planning_v1_planning, 3);
41
+
@@ -0,0 +1,109 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/planning/v1/planning_service.proto (package kusinta.iot.planning.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv2";
6
+ import type { Message } from "@bufbuild/protobuf";
7
+ import type { ForecastCell, ForecastIssue, PriceInterval } from "./planning_pb.js";
8
+ import type { Timestamp } from "@bufbuild/protobuf/wkt";
9
+
10
+ /**
11
+ * Describes the file kusinta/iot/planning/v1/planning_service.proto.
12
+ */
13
+ export declare const file_kusinta_iot_planning_v1_planning_service: GenFile;
14
+
15
+ /**
16
+ * @generated from message kusinta.iot.planning.v1.GetPlanningInputsRequest
17
+ */
18
+ export declare type GetPlanningInputsRequest = Message<"kusinta.iot.planning.v1.GetPlanningInputsRequest"> & {
19
+ /**
20
+ * The bidding zone's short code, as the day-ahead market names it: "SE1" to "SE4" in
21
+ * Sweden. Unknown to the api-server: answered with no prices, never refused.
22
+ *
23
+ * @generated from field: string bidding_zone = 1;
24
+ */
25
+ biddingZone: string;
26
+
27
+ /**
28
+ * Where to forecast for. Unset: no forecast is asked for.
29
+ *
30
+ * @generated from field: kusinta.iot.planning.v1.ForecastCell forecast_cell = 2;
31
+ */
32
+ forecastCell?: ForecastCell | undefined;
33
+
34
+ /**
35
+ * The earliest price interval wanted. Every interval known from it on is answered, up to
36
+ * the last the market has published (the next day's, once its auction has cleared).
37
+ * Unset: from the start of the current day in the zone's own time.
38
+ *
39
+ * @generated from field: google.protobuf.Timestamp prices_from = 3;
40
+ */
41
+ pricesFrom?: Timestamp | undefined;
42
+
43
+ /**
44
+ * The issue the gateway already holds. Set: a forecast is answered only where a later issue
45
+ * is known. Unset: the latest issue.
46
+ *
47
+ * @generated from field: google.protobuf.Timestamp forecast_issued_after = 4;
48
+ */
49
+ forecastIssuedAfter?: Timestamp | undefined;
50
+ };
51
+
52
+ /**
53
+ * Describes the message kusinta.iot.planning.v1.GetPlanningInputsRequest.
54
+ * Use `create(GetPlanningInputsRequestSchema)` to create a new message.
55
+ */
56
+ export declare const GetPlanningInputsRequestSchema: GenMessage<GetPlanningInputsRequest>;
57
+
58
+ /**
59
+ * @generated from message kusinta.iot.planning.v1.GetPlanningInputsResponse
60
+ */
61
+ export declare type GetPlanningInputsResponse = Message<"kusinta.iot.planning.v1.GetPlanningInputsResponse"> & {
62
+ /**
63
+ * Oldest first, without gaps or overlaps. Empty where none is known for the zone yet.
64
+ *
65
+ * @generated from field: repeated kusinta.iot.planning.v1.PriceInterval prices = 1;
66
+ */
67
+ prices: PriceInterval[];
68
+
69
+ /**
70
+ * The latest issue for the cell, where one later than forecast_issued_after is known.
71
+ *
72
+ * @generated from field: kusinta.iot.planning.v1.ForecastIssue forecast = 2;
73
+ */
74
+ forecast?: ForecastIssue | undefined;
75
+
76
+ /**
77
+ * When the latest issue known for the cell was issued, whether or not it is answered in
78
+ * forecast: unset where none is known for the cell at all, so that "nothing newer" and
79
+ * "nothing" are told apart.
80
+ *
81
+ * @generated from field: google.protobuf.Timestamp latest_forecast_issued_at = 3;
82
+ */
83
+ latestForecastIssuedAt?: Timestamp | undefined;
84
+ };
85
+
86
+ /**
87
+ * Describes the message kusinta.iot.planning.v1.GetPlanningInputsResponse.
88
+ * Use `create(GetPlanningInputsResponseSchema)` to create a new message.
89
+ */
90
+ export declare const GetPlanningInputsResponseSchema: GenMessage<GetPlanningInputsResponse>;
91
+
92
+ /**
93
+ * The api-server's planning inputs for a gateway, over the gateway's client certificate. The
94
+ * gateway asks; the api-server answers from what it has fetched for the fleet, and keeps no
95
+ * record of which gateway asked for which cell.
96
+ *
97
+ * @generated from service kusinta.iot.planning.v1.PlanningInputsService
98
+ */
99
+ export declare const PlanningInputsService: GenService<{
100
+ /**
101
+ * @generated from rpc kusinta.iot.planning.v1.PlanningInputsService.GetPlanningInputs
102
+ */
103
+ getPlanningInputs: {
104
+ methodKind: "unary";
105
+ input: typeof GetPlanningInputsRequestSchema;
106
+ output: typeof GetPlanningInputsResponseSchema;
107
+ },
108
+ }>;
109
+
@@ -0,0 +1,38 @@
1
+ // @generated by protoc-gen-es v2.12.0 with parameter "target=js+dts,import_extension=js"
2
+ // @generated from file kusinta/iot/planning/v1/planning_service.proto (package kusinta.iot.planning.v1, syntax proto3)
3
+ /* eslint-disable */
4
+
5
+ import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv2";
6
+ import { file_google_protobuf_timestamp } from "@bufbuild/protobuf/wkt";
7
+ import { file_kusinta_iot_planning_v1_planning } from "./planning_pb.js";
8
+
9
+ /**
10
+ * Describes the file kusinta/iot/planning/v1/planning_service.proto.
11
+ */
12
+ export const file_kusinta_iot_planning_v1_planning_service = /*@__PURE__*/
13
+ fileDesc("Ci5rdXNpbnRhL2lvdC9wbGFubmluZy92MS9wbGFubmluZ19zZXJ2aWNlLnByb3RvEhdrdXNpbnRhLmlvdC5wbGFubmluZy52MSLaAQoYR2V0UGxhbm5pbmdJbnB1dHNSZXF1ZXN0EhQKDGJpZGRpbmdfem9uZRgBIAEoCRI8Cg1mb3JlY2FzdF9jZWxsGAIgASgLMiUua3VzaW50YS5pb3QucGxhbm5pbmcudjEuRm9yZWNhc3RDZWxsEi8KC3ByaWNlc19mcm9tGAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI5ChVmb3JlY2FzdF9pc3N1ZWRfYWZ0ZXIYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIswBChlHZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlEjYKBnByaWNlcxgBIAMoCzImLmt1c2ludGEuaW90LnBsYW5uaW5nLnYxLlByaWNlSW50ZXJ2YWwSOAoIZm9yZWNhc3QYAiABKAsyJi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5Gb3JlY2FzdElzc3VlEj0KGWxhdGVzdF9mb3JlY2FzdF9pc3N1ZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wMpMBChVQbGFubmluZ0lucHV0c1NlcnZpY2USegoRR2V0UGxhbm5pbmdJbnB1dHMSMS5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1JlcXVlc3QaMi5rdXNpbnRhLmlvdC5wbGFubmluZy52MS5HZXRQbGFubmluZ0lucHV0c1Jlc3BvbnNlQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_planning_v1_planning]);
14
+
15
+ /**
16
+ * Describes the message kusinta.iot.planning.v1.GetPlanningInputsRequest.
17
+ * Use `create(GetPlanningInputsRequestSchema)` to create a new message.
18
+ */
19
+ export const GetPlanningInputsRequestSchema = /*@__PURE__*/
20
+ messageDesc(file_kusinta_iot_planning_v1_planning_service, 0);
21
+
22
+ /**
23
+ * Describes the message kusinta.iot.planning.v1.GetPlanningInputsResponse.
24
+ * Use `create(GetPlanningInputsResponseSchema)` to create a new message.
25
+ */
26
+ export const GetPlanningInputsResponseSchema = /*@__PURE__*/
27
+ messageDesc(file_kusinta_iot_planning_v1_planning_service, 1);
28
+
29
+ /**
30
+ * The api-server's planning inputs for a gateway, over the gateway's client certificate. The
31
+ * gateway asks; the api-server answers from what it has fetched for the fleet, and keeps no
32
+ * record of which gateway asked for which cell.
33
+ *
34
+ * @generated from service kusinta.iot.planning.v1.PlanningInputsService
35
+ */
36
+ export const PlanningInputsService = /*@__PURE__*/
37
+ serviceDesc(file_kusinta_iot_planning_v1_planning_service, 0);
38
+
@@ -1075,6 +1075,17 @@ export enum ProblemKind {
1075
1075
  * @generated from enum value: PROBLEM_KIND_FLOOR_ZONE_UNCONTROLLED = 10;
1076
1076
  */
1077
1077
  FLOOR_ZONE_UNCONTROLLED = 10,
1078
+
1079
+ /**
1080
+ * The gateway's planning inputs (planning.v1) are stale: its forecast is more than six hours
1081
+ * old, or the next day's prices are still missing at 16:00 in the bidding zone's own time,
1082
+ * well after the day-ahead market has cleared. Building-level: it names the gateway, never
1083
+ * a home. Its planner meanwhile shifts no load past what it holds, so nothing goes cold or
1084
+ * unsafe while it is open.
1085
+ *
1086
+ * @generated from enum value: PROBLEM_KIND_PLANNING_INPUTS_STALE = 11;
1087
+ */
1088
+ PLANNING_INPUTS_STALE = 11,
1078
1089
  }
1079
1090
 
1080
1091
  /**
@@ -12,7 +12,7 @@ import { file_kusinta_iot_identity_v1_identity } from "../../identity/v1/identit
12
12
  * Describes the file kusinta/iot/reporting/v1/reporting.proto.
13
13
  */
14
14
  export const file_kusinta_iot_reporting_v1_reporting = /*@__PURE__*/
15
- fileDesc("CihrdXNpbnRhL2lvdC9yZXBvcnRpbmcvdjEvcmVwb3J0aW5nLnByb3RvEhhrdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEiPwoMU25hcHNob3RQYXJ0EhMKC3NuYXBzaG90X2lkGAEgASgJEgwKBHBhcnQYAiABKA0SDAoEbGFzdBgDIAEoCCLZAQoOUHJvYmxlbVN1YmplY3QSNgoJZGV2aWNlX2lkGAEgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWRIABI8Cgxjb25uZWN0b3JfaWQYAiABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZEgAEjMKB3Jvb21faWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEQoHZ2F0ZXdheRgEIAEoCEgAQgkKB3N1YmplY3Qi6gIKB1Byb2JsZW0SMwoEa2luZBgCIAEoDjIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtS2luZBI5CgdzdWJqZWN0GAMgASgLMigua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlByb2JsZW1TdWJqZWN0EjIKCHNwYWNlX2lkGAQgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglvcGVuZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhwKD2JhdHRlcnlfcGVyY2VudBgGIAEoDUgAiAEBEhQKDGRldmljZV9jb3VudBgHIAEoDRJECg9iYWNrZW5kX2ZhaWx1cmUYCCABKA4yKy5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEZhaWx1cmVSZWFzb25CEgoQX2JhdHRlcnlfcGVyY2VudCJ3Cg5Qcm9ibGVtQ2xlYXJlZBIuCgpjbGVhcmVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1CgZyZWFzb24YAiABKA4yJS5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuQ2xlYXJSZWFzb24irgEKEVByb2JsZW1UcmFuc2l0aW9uEhIKCnByb2JsZW1faWQYASABKAkSCwoDc2VxGAIgASgEEjEKBG9wZW4YAyABKAsyIS5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbUgAEjsKB2NsZWFyZWQYBCABKAsyKC5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbUNsZWFyZWRIAEIICgZjaGFuZ2Ui0AEKFVJlcG9ydFByb2JsZW1zUmVxdWVzdBIRCglzdHJlYW1faWQYAyABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgFIAMoCRILCgNzZXEYBCABKAQSQAoLdHJhbnNpdGlvbnMYASADKAsyKy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbVRyYW5zaXRpb24SOAoIc25hcHNob3QYAiABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0ImUKDVRyYW5zaXRpb25BY2sSEgoKcHJvYmxlbV9pZBgBIAEoCRILCgNzZXEYAiABKAQSMwoGc3RhdHVzGAMgASgOMiMua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLkFja1N0YXR1cyJ9ChZSZXBvcnRQcm9ibGVtc1Jlc3BvbnNlEjUKBGFja3MYASADKAsyJy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuVHJhbnNpdGlvbkFjaxITCgthcHBsaWVkX3NlcRgDIAEoBBIXCg9yZXN5bmNfcmVxdWlyZWQYAiABKAgieAoMU2VydmljZVJlYWNoEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoGc3BhY2VzGAMgAygLMiYua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlJlYWNoZWRTcGFjZSJtCgxSZWFjaGVkU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKEAgoZUmVwb3J0U2VydmljZVJlYWNoUmVxdWVzdBIRCglzdHJlYW1faWQYBSABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgGIAMoCRILCgNzZXEYASABKAQSNQoFcmVhY2gYAiADKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU2VydmljZVJlYWNoEjkKEHJlbW92ZWRfdXNlcl9pZHMYAyADKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSOAoIc25hcHNob3QYBCABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydFNlcnZpY2VSZWFjaFJlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCLiAQoLU2VydmVkU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjQKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlEgwKBG5hbWUYAyABKAkSOQoPcGFyZW50X3NwYWNlX2lkGAQgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBINCgVmbG9vchgFIAEoBRIRCgl0aW1lX3pvbmUYBiABKAkihgIKGVJlcG9ydFNlcnZlZFNwYWNlc1JlcXVlc3QSEQoJc3RyZWFtX2lkGAUgASgJEhsKE3ByZXZpb3VzX3N0cmVhbV9pZHMYBiADKAkSCwoDc2VxGAEgASgEEjUKBnNwYWNlcxgCIAMoCzIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TZXJ2ZWRTcGFjZRI7ChFyZW1vdmVkX3NwYWNlX2lkcxgDIAMoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOAoIc25hcHNob3QYBCABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydFNlcnZlZFNwYWNlc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCKmAQoNR2F0ZXdheU1lbWJlchIwCgd1c2VyX2lkGAEgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEioKBXJvbGVzGAIgAygOMhsua3VzaW50YS5pb3QuYWNjZXNzLnYxLlJvbGUSNwoTYWRtaW5pc3RyYXRvcl9zaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiggIKFFJlcG9ydE1lbWJlcnNSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoCRIbChNwcmV2aW91c19zdHJlYW1faWRzGAIgAygJEgsKA3NlcRgDIAEoBBI4CgdtZW1iZXJzGAQgAygLMicua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLkdhdGV3YXlNZW1iZXISOQoQcmVtb3ZlZF91c2VyX2lkcxgFIAMoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBI4CghzbmFwc2hvdBgGIAEoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TbmFwc2hvdFBhcnQiRQoVUmVwb3J0TWVtYmVyc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCLIAQoZUmVwb3J0SW52aXRlUm91dGVzUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgCIAMoCRILCgNzZXEYAyABKAQSFQoNc2VjcmV0X2hhc2hlcxgEIAMoDBIdChVyZW1vdmVkX3NlY3JldF9oYXNoZXMYBSADKAwSOAoIc25hcHNob3QYBiABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydEludml0ZVJvdXRlc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCqGAwoLUHJvYmxlbUtpbmQSHAoYUFJPQkxFTV9LSU5EX1VOU1BFQ0lGSUVEEAASHwobUFJPQkxFTV9LSU5EX0RFVklDRV9PRkZMSU5FEAESHAoYUFJPQkxFTV9LSU5EX0JBVFRFUllfTE9XEAISKwonUFJPQkxFTV9LSU5EX0JBVFRFUllfUkVQTEFDRU1FTlRfTkVFREVEEAMSHQoZUFJPQkxFTV9LSU5EX0RFVklDRV9FUlJPUhAEEh4KGlBST0JMRU1fS0lORF9ERVZJQ0VfVEFNUEVSEAUSIgoeUFJPQkxFTV9LSU5EX0NPTk5FQ1RPUl9PRkZMSU5FEAYSIAocUFJPQkxFTV9LSU5EX0NPTk5FQ1RPUl9FUlJPUhAHEiAKHFBST0JMRU1fS0lORF9VTkZJTEVEX0RFVklDRVMQCBIcChhQUk9CTEVNX0tJTkRfV0lORE9XX09QRU4QCRIoCiRQUk9CTEVNX0tJTkRfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQCiqfAgoLQ2xlYXJSZWFzb24SHAoYQ0xFQVJfUkVBU09OX1VOU1BFQ0lGSUVEEAASGgoWQ0xFQVJfUkVBU09OX1JFQ09WRVJFRBABEhYKEkNMRUFSX1JFQVNPTl9GSUxFRBACEh8KG0NMRUFSX1JFQVNPTl9ERVZJQ0VfUkVNT1ZFRBADEjAKLENMRUFSX1JFQVNPTl9TVVBFUlNFREVEX0JZX0NPTk5FQ1RPUl9PRkZMSU5FEAQSIwofQ0xFQVJfUkVBU09OX05PX0xPTkdFUl9SRVBPUlRFRBAFEhYKEkNMRUFSX1JFQVNPTl9NT1ZFRBAGEi4KKkNMRUFSX1JFQVNPTl9TVVBFUlNFREVEX0JZX0NPTk5FQ1RPUl9FUlJPUhAHKocBCglBY2tTdGF0dXMSGgoWQUNLX1NUQVRVU19VTlNQRUNJRklFRBAAEhYKEkFDS19TVEFUVVNfQVBQTElFRBABEhgKFEFDS19TVEFUVVNfRFVQTElDQVRFEAISFwoTQUNLX1NUQVRVU19SRUpFQ1RFRBADEhMKD0FDS19TVEFUVVNfSEVMRBAEQgJIAWIGcHJvdG8z", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
15
+ fileDesc("CihrdXNpbnRhL2lvdC9yZXBvcnRpbmcvdjEvcmVwb3J0aW5nLnByb3RvEhhrdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEiPwoMU25hcHNob3RQYXJ0EhMKC3NuYXBzaG90X2lkGAEgASgJEgwKBHBhcnQYAiABKA0SDAoEbGFzdBgDIAEoCCLZAQoOUHJvYmxlbVN1YmplY3QSNgoJZGV2aWNlX2lkGAEgASgLMiEua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuRGV2aWNlSWRIABI8Cgxjb25uZWN0b3JfaWQYAiABKAsyJC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Db25uZWN0b3JJZEgAEjMKB3Jvb21faWQYAyABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkSAASEQoHZ2F0ZXdheRgEIAEoCEgAQgkKB3N1YmplY3Qi6gIKB1Byb2JsZW0SMwoEa2luZBgCIAEoDjIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5Qcm9ibGVtS2luZBI5CgdzdWJqZWN0GAMgASgLMigua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlByb2JsZW1TdWJqZWN0EjIKCHNwYWNlX2lkGAQgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBItCglvcGVuZWRfYXQYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhwKD2JhdHRlcnlfcGVyY2VudBgGIAEoDUgAiAEBEhQKDGRldmljZV9jb3VudBgHIAEoDRJECg9iYWNrZW5kX2ZhaWx1cmUYCCABKA4yKy5rdXNpbnRhLmlvdC5jb21tb24udjEuQmFja2VuZEZhaWx1cmVSZWFzb25CEgoQX2JhdHRlcnlfcGVyY2VudCJ3Cg5Qcm9ibGVtQ2xlYXJlZBIuCgpjbGVhcmVkX2F0GAEgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1CgZyZWFzb24YAiABKA4yJS5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuQ2xlYXJSZWFzb24irgEKEVByb2JsZW1UcmFuc2l0aW9uEhIKCnByb2JsZW1faWQYASABKAkSCwoDc2VxGAIgASgEEjEKBG9wZW4YAyABKAsyIS5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbUgAEjsKB2NsZWFyZWQYBCABKAsyKC5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbUNsZWFyZWRIAEIICgZjaGFuZ2Ui0AEKFVJlcG9ydFByb2JsZW1zUmVxdWVzdBIRCglzdHJlYW1faWQYAyABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgFIAMoCRILCgNzZXEYBCABKAQSQAoLdHJhbnNpdGlvbnMYASADKAsyKy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuUHJvYmxlbVRyYW5zaXRpb24SOAoIc25hcHNob3QYAiABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0ImUKDVRyYW5zaXRpb25BY2sSEgoKcHJvYmxlbV9pZBgBIAEoCRILCgNzZXEYAiABKAQSMwoGc3RhdHVzGAMgASgOMiMua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLkFja1N0YXR1cyJ9ChZSZXBvcnRQcm9ibGVtc1Jlc3BvbnNlEjUKBGFja3MYASADKAsyJy5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuVHJhbnNpdGlvbkFjaxITCgthcHBsaWVkX3NlcRgDIAEoBBIXCg9yZXN5bmNfcmVxdWlyZWQYAiABKAgieAoMU2VydmljZVJlYWNoEjAKB3VzZXJfaWQYASABKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSNgoGc3BhY2VzGAMgAygLMiYua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLlJlYWNoZWRTcGFjZSJtCgxSZWFjaGVkU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEikKBXNpbmNlGAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKEAgoZUmVwb3J0U2VydmljZVJlYWNoUmVxdWVzdBIRCglzdHJlYW1faWQYBSABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgGIAMoCRILCgNzZXEYASABKAQSNQoFcmVhY2gYAiADKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU2VydmljZVJlYWNoEjkKEHJlbW92ZWRfdXNlcl9pZHMYAyADKAsyHy5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5Vc2VySWQSOAoIc25hcHNob3QYBCABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydFNlcnZpY2VSZWFjaFJlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCLiAQoLU2VydmVkU3BhY2USMgoIc3BhY2VfaWQYASABKAsyIC5rdXNpbnRhLmlvdC5pZGVudGl0eS52MS5TcGFjZUlkEjQKCnNwYWNlX3R5cGUYAiABKA4yIC5rdXNpbnRhLmlvdC5jb21tb24udjEuU3BhY2VUeXBlEgwKBG5hbWUYAyABKAkSOQoPcGFyZW50X3NwYWNlX2lkGAQgASgLMiAua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuU3BhY2VJZBINCgVmbG9vchgFIAEoBRIRCgl0aW1lX3pvbmUYBiABKAkihgIKGVJlcG9ydFNlcnZlZFNwYWNlc1JlcXVlc3QSEQoJc3RyZWFtX2lkGAUgASgJEhsKE3ByZXZpb3VzX3N0cmVhbV9pZHMYBiADKAkSCwoDc2VxGAEgASgEEjUKBnNwYWNlcxgCIAMoCzIlLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TZXJ2ZWRTcGFjZRI7ChFyZW1vdmVkX3NwYWNlX2lkcxgDIAMoCzIgLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlNwYWNlSWQSOAoIc25hcHNob3QYBCABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydFNlcnZlZFNwYWNlc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCKmAQoNR2F0ZXdheU1lbWJlchIwCgd1c2VyX2lkGAEgASgLMh8ua3VzaW50YS5pb3QuaWRlbnRpdHkudjEuVXNlcklkEioKBXJvbGVzGAIgAygOMhsua3VzaW50YS5pb3QuYWNjZXNzLnYxLlJvbGUSNwoTYWRtaW5pc3RyYXRvcl9zaW5jZRgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiggIKFFJlcG9ydE1lbWJlcnNSZXF1ZXN0EhEKCXN0cmVhbV9pZBgBIAEoCRIbChNwcmV2aW91c19zdHJlYW1faWRzGAIgAygJEgsKA3NlcRgDIAEoBBI4CgdtZW1iZXJzGAQgAygLMicua3VzaW50YS5pb3QucmVwb3J0aW5nLnYxLkdhdGV3YXlNZW1iZXISOQoQcmVtb3ZlZF91c2VyX2lkcxgFIAMoCzIfLmt1c2ludGEuaW90LmlkZW50aXR5LnYxLlVzZXJJZBI4CghzbmFwc2hvdBgGIAEoCzImLmt1c2ludGEuaW90LnJlcG9ydGluZy52MS5TbmFwc2hvdFBhcnQiRQoVUmVwb3J0TWVtYmVyc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCLIAQoZUmVwb3J0SW52aXRlUm91dGVzUmVxdWVzdBIRCglzdHJlYW1faWQYASABKAkSGwoTcHJldmlvdXNfc3RyZWFtX2lkcxgCIAMoCRILCgNzZXEYAyABKAQSFQoNc2VjcmV0X2hhc2hlcxgEIAMoDBIdChVyZW1vdmVkX3NlY3JldF9oYXNoZXMYBSADKAwSOAoIc25hcHNob3QYBiABKAsyJi5rdXNpbnRhLmlvdC5yZXBvcnRpbmcudjEuU25hcHNob3RQYXJ0IkoKGlJlcG9ydEludml0ZVJvdXRlc1Jlc3BvbnNlEhMKC2FwcGxpZWRfc2VxGAEgASgEEhcKD3Jlc3luY19yZXF1aXJlZBgCIAEoCCquAwoLUHJvYmxlbUtpbmQSHAoYUFJPQkxFTV9LSU5EX1VOU1BFQ0lGSUVEEAASHwobUFJPQkxFTV9LSU5EX0RFVklDRV9PRkZMSU5FEAESHAoYUFJPQkxFTV9LSU5EX0JBVFRFUllfTE9XEAISKwonUFJPQkxFTV9LSU5EX0JBVFRFUllfUkVQTEFDRU1FTlRfTkVFREVEEAMSHQoZUFJPQkxFTV9LSU5EX0RFVklDRV9FUlJPUhAEEh4KGlBST0JMRU1fS0lORF9ERVZJQ0VfVEFNUEVSEAUSIgoeUFJPQkxFTV9LSU5EX0NPTk5FQ1RPUl9PRkZMSU5FEAYSIAocUFJPQkxFTV9LSU5EX0NPTk5FQ1RPUl9FUlJPUhAHEiAKHFBST0JMRU1fS0lORF9VTkZJTEVEX0RFVklDRVMQCBIcChhQUk9CTEVNX0tJTkRfV0lORE9XX09QRU4QCRIoCiRQUk9CTEVNX0tJTkRfRkxPT1JfWk9ORV9VTkNPTlRST0xMRUQQChImCiJQUk9CTEVNX0tJTkRfUExBTk5JTkdfSU5QVVRTX1NUQUxFEAsqnwIKC0NsZWFyUmVhc29uEhwKGENMRUFSX1JFQVNPTl9VTlNQRUNJRklFRBAAEhoKFkNMRUFSX1JFQVNPTl9SRUNPVkVSRUQQARIWChJDTEVBUl9SRUFTT05fRklMRUQQAhIfChtDTEVBUl9SRUFTT05fREVWSUNFX1JFTU9WRUQQAxIwCixDTEVBUl9SRUFTT05fU1VQRVJTRURFRF9CWV9DT05ORUNUT1JfT0ZGTElORRAEEiMKH0NMRUFSX1JFQVNPTl9OT19MT05HRVJfUkVQT1JURUQQBRIWChJDTEVBUl9SRUFTT05fTU9WRUQQBhIuCipDTEVBUl9SRUFTT05fU1VQRVJTRURFRF9CWV9DT05ORUNUT1JfRVJST1IQByqHAQoJQWNrU3RhdHVzEhoKFkFDS19TVEFUVVNfVU5TUEVDSUZJRUQQABIWChJBQ0tfU1RBVFVTX0FQUExJRUQQARIYChRBQ0tfU1RBVFVTX0RVUExJQ0FURRACEhcKE0FDS19TVEFUVVNfUkVKRUNURUQQAxITCg9BQ0tfU1RBVFVTX0hFTEQQBEICSAFiBnByb3RvMw", [file_google_protobuf_timestamp, file_kusinta_iot_access_v1_roles, file_kusinta_iot_common_v1_types, file_kusinta_iot_identity_v1_identity]);
16
16
 
17
17
  /**
18
18
  * Describes the message kusinta.iot.reporting.v1.SnapshotPart.
@@ -383,10 +383,11 @@ export declare const RemoveDeviceFromSpaceSchema: GenMessage<RemoveDeviceFromSpa
383
383
  * home only if they live there (see PlaceDeviceInSpace).
384
384
  *
385
385
  * Only a RESIDENT claim makes the caller the owner. A COMPANY claim records that the
386
- * building owns the device, names no person, and grants the caller no reach. Claims of a
387
- * device in a home, or of one already claimed, are restricted by the gateway. A claim, with
388
- * initial_space_id or without, that would leave a heating record across a home's boundary is
389
- * refused or undone as HEATING ACROSS A HOME says.
386
+ * building owns the device, names no person, and grants the caller no reach. The gateway keeps
387
+ * who made it for 24 hours only, for ReleaseDevice's undo, shows it to nobody, and erases it
388
+ * then, or sooner with that person. Claims of a device in a home, or of one already claimed,
389
+ * are restricted by the gateway. A claim, with initial_space_id or without, that would leave a
390
+ * heating record across a home's boundary is refused or undone as HEATING ACROSS A HOME says.
390
391
  *
391
392
  * WHICH CLAIM. The claim states its ownership, and the gateway never defaults it: one with
392
393
  * neither is refused as INVALID_REQUEST. A COMPANY claim is accepted only from a filing role,
@@ -450,7 +451,12 @@ export declare const ClaimDeviceSchema: GenMessage<ClaimDevice>;
450
451
  /**
451
452
  * Gives up ownership. The device keeps whatever space filing it has, except that a device in a
452
453
  * home stays filed in the home alone, as one of the building's own devices there — as when its
453
- * owner moves out; if it has none it becomes unfiled. A heating record the release would leave
454
+ * owner moves out; if it has none it becomes unfiled. A device a person owns is released by
455
+ * that person alone. One claimed for the building is released by the property owner or a
456
+ * gateway administrator who reaches it, at any time; and, within 24 hours of the claim, by the
457
+ * filing role who made it, while they still reach it, no heating record binds it and no asset
458
+ * owner is recorded, so that a building claim made by mistake is undone by whoever made it.
459
+ * Anyone else is refused as NOT_ENTITLED. A heating record the release would leave
454
460
  * across a home's boundary is undone, never refused (HEATING ACROSS A HOME).
455
461
  *
456
462
  * @generated from message kusinta.iot.webrtc.v1.ReleaseDevice