@eide/foir-proto-ts 0.37.0 → 0.38.0

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": "@eide/foir-proto-ts",
3
- "version": "0.37.0",
3
+ "version": "0.38.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  "./analytics/v1/analytics_pb": "./src/analytics/v1/analytics_pb.js",
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ConfirmInstallAppRequest, ConfirmInstallAppResponse, ConfirmUpdateAppRequest, ConfirmUpdateAppResponse, DeleteAppCredentialRequest, DeleteAppCredentialResponse, GetAppCredentialRequest, GetAppCredentialResponse, GetAppRequest, GetAppResponse, GetAppStatusRequest, GetAppStatusResponse, InstallAppRequest, InstallAppResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListAppEventsRequest, ListAppEventsResponse, ListAppsRequest, ListAppsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, RefreshScopedTokenRequest, RefreshScopedTokenResponse, SetAppMappingRequest, SetAppMappingResponse, TriggerOperationRequest, TriggerOperationResponse, UninstallAppRequest, UninstallAppResponse, UpdateAppRequest, UpdateAppResponse, UpsertAppStatusRequest, UpsertAppStatusResponse, ValidateManifestRequest, ValidateManifestResponse, WriteAppCredentialRequest, WriteAppCredentialResponse } from "./apps_service_pbjs";
6
+ import { AppInstallationServiceUninstallAppRequest, AppInstallationServiceUninstallAppResponse, CompleteAppInstallRequest, CompleteAppInstallResponse, ConfirmInstallAppRequest, ConfirmInstallAppResponse, ConfirmUpdateAppRequest, ConfirmUpdateAppResponse, GetAppCredentialStructRequest, GetAppCredentialStructResponse, GetAppRequest, GetAppResponse, GetAppStatusRequest, GetAppStatusResponse, InstallAppRequest, InstallAppResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListAppEventsRequest, ListAppEventsResponse, ListAppsRequest, ListAppsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, RefreshScopedTokenRequest, RefreshScopedTokenResponse, RotateAppCredentialRequest, RotateAppCredentialResponse, SetAppMappingRequest, SetAppMappingResponse, TriggerOperationRequest, TriggerOperationResponse, UninstallAppRequest, UninstallAppResponse, UpdateAppRequest, UpdateAppResponse, UpsertAppStatusRequest, UpsertAppStatusResponse, ValidateManifestRequest, ValidateManifestResponse } from "./apps_service_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -124,36 +124,62 @@ export declare const AppsService: {
124
124
  };
125
125
 
126
126
  /**
127
- * @generated from service apps.v1.AppCredentialsService
127
+ * @generated from service apps.v1.AppInstallationService
128
128
  */
129
- export declare const AppCredentialsService: {
130
- readonly typeName: "apps.v1.AppCredentialsService",
129
+ export declare const AppInstallationService: {
130
+ readonly typeName: "apps.v1.AppInstallationService",
131
131
  readonly methods: {
132
132
  /**
133
- * @generated from rpc apps.v1.AppCredentialsService.WriteAppCredential
133
+ * CompleteAppInstall runs the __validate_credentials probe (when the
134
+ * app's manifest declares it), then writes one vault row per credential
135
+ * field. Idempotent: re-calling with the same values rotates each
136
+ * existing field's vault row through SecretsService.RotateSecret so
137
+ * any record holding a SecretRef stays bound.
138
+ *
139
+ * @generated from rpc apps.v1.AppInstallationService.CompleteAppInstall
140
+ */
141
+ readonly completeAppInstall: {
142
+ readonly name: "CompleteAppInstall",
143
+ readonly I: typeof CompleteAppInstallRequest,
144
+ readonly O: typeof CompleteAppInstallResponse,
145
+ readonly kind: MethodKind.Unary,
146
+ },
147
+ /**
148
+ * RotateAppCredential rotates a single named field. The new ref is
149
+ * bound to the same label so GetAppCredentialStruct sees the new value
150
+ * automatically.
151
+ *
152
+ * @generated from rpc apps.v1.AppInstallationService.RotateAppCredential
134
153
  */
135
- readonly writeAppCredential: {
136
- readonly name: "WriteAppCredential",
137
- readonly I: typeof WriteAppCredentialRequest,
138
- readonly O: typeof WriteAppCredentialResponse,
154
+ readonly rotateAppCredential: {
155
+ readonly name: "RotateAppCredential",
156
+ readonly I: typeof RotateAppCredentialRequest,
157
+ readonly O: typeof RotateAppCredentialResponse,
139
158
  readonly kind: MethodKind.Unary,
140
159
  },
141
160
  /**
142
- * @generated from rpc apps.v1.AppCredentialsService.GetAppCredential
161
+ * GetAppCredentialStruct lists every app-owned vault row for the given
162
+ * app, decrypts each, and returns a struct keyed by field name (the
163
+ * vault row's label).
164
+ *
165
+ * @generated from rpc apps.v1.AppInstallationService.GetAppCredentialStruct
143
166
  */
144
- readonly getAppCredential: {
145
- readonly name: "GetAppCredential",
146
- readonly I: typeof GetAppCredentialRequest,
147
- readonly O: typeof GetAppCredentialResponse,
167
+ readonly getAppCredentialStruct: {
168
+ readonly name: "GetAppCredentialStruct",
169
+ readonly I: typeof GetAppCredentialStructRequest,
170
+ readonly O: typeof GetAppCredentialStructResponse,
148
171
  readonly kind: MethodKind.Unary,
149
172
  },
150
173
  /**
151
- * @generated from rpc apps.v1.AppCredentialsService.DeleteAppCredential
174
+ * UninstallApp removes every app-owned vault row + dispatches
175
+ * run_before_uninstall ops. Idempotent.
176
+ *
177
+ * @generated from rpc apps.v1.AppInstallationService.UninstallApp
152
178
  */
153
- readonly deleteAppCredential: {
154
- readonly name: "DeleteAppCredential",
155
- readonly I: typeof DeleteAppCredentialRequest,
156
- readonly O: typeof DeleteAppCredentialResponse,
179
+ readonly uninstallApp: {
180
+ readonly name: "UninstallApp",
181
+ readonly I: typeof AppInstallationServiceUninstallAppRequest,
182
+ readonly O: typeof AppInstallationServiceUninstallAppResponse,
157
183
  readonly kind: MethodKind.Unary,
158
184
  },
159
185
  }
@@ -3,7 +3,7 @@
3
3
  /* eslint-disable */
4
4
  // @ts-nocheck
5
5
 
6
- import { ConfirmInstallAppRequest, ConfirmInstallAppResponse, ConfirmUpdateAppRequest, ConfirmUpdateAppResponse, DeleteAppCredentialRequest, DeleteAppCredentialResponse, GetAppCredentialRequest, GetAppCredentialResponse, GetAppRequest, GetAppResponse, GetAppStatusRequest, GetAppStatusResponse, InstallAppRequest, InstallAppResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListAppEventsRequest, ListAppEventsResponse, ListAppsRequest, ListAppsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, RefreshScopedTokenRequest, RefreshScopedTokenResponse, SetAppMappingRequest, SetAppMappingResponse, TriggerOperationRequest, TriggerOperationResponse, UninstallAppRequest, UninstallAppResponse, UpdateAppRequest, UpdateAppResponse, UpsertAppStatusRequest, UpsertAppStatusResponse, ValidateManifestRequest, ValidateManifestResponse, WriteAppCredentialRequest, WriteAppCredentialResponse } from "./apps_service_pbjs";
6
+ import { AppInstallationServiceUninstallAppRequest, AppInstallationServiceUninstallAppResponse, CompleteAppInstallRequest, CompleteAppInstallResponse, ConfirmInstallAppRequest, ConfirmInstallAppResponse, ConfirmUpdateAppRequest, ConfirmUpdateAppResponse, GetAppCredentialStructRequest, GetAppCredentialStructResponse, GetAppRequest, GetAppResponse, GetAppStatusRequest, GetAppStatusResponse, InstallAppRequest, InstallAppResponse, IssueExchangeTicketRequest, IssueExchangeTicketResponse, ListAppEventsRequest, ListAppEventsResponse, ListAppsRequest, ListAppsResponse, RedeemExchangeTicketRequest, RedeemExchangeTicketResponse, RefreshScopedTokenRequest, RefreshScopedTokenResponse, RotateAppCredentialRequest, RotateAppCredentialResponse, SetAppMappingRequest, SetAppMappingResponse, TriggerOperationRequest, TriggerOperationResponse, UninstallAppRequest, UninstallAppResponse, UpdateAppRequest, UpdateAppResponse, UpsertAppStatusRequest, UpsertAppStatusResponse, ValidateManifestRequest, ValidateManifestResponse } from "./apps_service_pbjs";
7
7
  import { MethodKind } from "@bufbuild/protobuf";
8
8
 
9
9
  /**
@@ -124,36 +124,62 @@ export const AppsService = {
124
124
  };
125
125
 
126
126
  /**
127
- * @generated from service apps.v1.AppCredentialsService
127
+ * @generated from service apps.v1.AppInstallationService
128
128
  */
129
- export const AppCredentialsService = {
130
- typeName: "apps.v1.AppCredentialsService",
129
+ export const AppInstallationService = {
130
+ typeName: "apps.v1.AppInstallationService",
131
131
  methods: {
132
132
  /**
133
- * @generated from rpc apps.v1.AppCredentialsService.WriteAppCredential
133
+ * CompleteAppInstall runs the __validate_credentials probe (when the
134
+ * app's manifest declares it), then writes one vault row per credential
135
+ * field. Idempotent: re-calling with the same values rotates each
136
+ * existing field's vault row through SecretsService.RotateSecret so
137
+ * any record holding a SecretRef stays bound.
138
+ *
139
+ * @generated from rpc apps.v1.AppInstallationService.CompleteAppInstall
140
+ */
141
+ completeAppInstall: {
142
+ name: "CompleteAppInstall",
143
+ I: CompleteAppInstallRequest,
144
+ O: CompleteAppInstallResponse,
145
+ kind: MethodKind.Unary,
146
+ },
147
+ /**
148
+ * RotateAppCredential rotates a single named field. The new ref is
149
+ * bound to the same label so GetAppCredentialStruct sees the new value
150
+ * automatically.
151
+ *
152
+ * @generated from rpc apps.v1.AppInstallationService.RotateAppCredential
134
153
  */
135
- writeAppCredential: {
136
- name: "WriteAppCredential",
137
- I: WriteAppCredentialRequest,
138
- O: WriteAppCredentialResponse,
154
+ rotateAppCredential: {
155
+ name: "RotateAppCredential",
156
+ I: RotateAppCredentialRequest,
157
+ O: RotateAppCredentialResponse,
139
158
  kind: MethodKind.Unary,
140
159
  },
141
160
  /**
142
- * @generated from rpc apps.v1.AppCredentialsService.GetAppCredential
161
+ * GetAppCredentialStruct lists every app-owned vault row for the given
162
+ * app, decrypts each, and returns a struct keyed by field name (the
163
+ * vault row's label).
164
+ *
165
+ * @generated from rpc apps.v1.AppInstallationService.GetAppCredentialStruct
143
166
  */
144
- getAppCredential: {
145
- name: "GetAppCredential",
146
- I: GetAppCredentialRequest,
147
- O: GetAppCredentialResponse,
167
+ getAppCredentialStruct: {
168
+ name: "GetAppCredentialStruct",
169
+ I: GetAppCredentialStructRequest,
170
+ O: GetAppCredentialStructResponse,
148
171
  kind: MethodKind.Unary,
149
172
  },
150
173
  /**
151
- * @generated from rpc apps.v1.AppCredentialsService.DeleteAppCredential
174
+ * UninstallApp removes every app-owned vault row + dispatches
175
+ * run_before_uninstall ops. Idempotent.
176
+ *
177
+ * @generated from rpc apps.v1.AppInstallationService.UninstallApp
152
178
  */
153
- deleteAppCredential: {
154
- name: "DeleteAppCredential",
155
- I: DeleteAppCredentialRequest,
156
- O: DeleteAppCredentialResponse,
179
+ uninstallApp: {
180
+ name: "UninstallApp",
181
+ I: AppInstallationServiceUninstallAppRequest,
182
+ O: AppInstallationServiceUninstallAppResponse,
157
183
  kind: MethodKind.Unary,
158
184
  },
159
185
  }
@@ -922,9 +922,9 @@ export declare type TriggerOperationResponse = Message<"apps.v1.TriggerOperation
922
922
  export declare const TriggerOperationResponseSchema: GenMessage<TriggerOperationResponse>;
923
923
 
924
924
  /**
925
- * @generated from message apps.v1.WriteAppCredentialRequest
925
+ * @generated from message apps.v1.CompleteAppInstallRequest
926
926
  */
927
- export declare type WriteAppCredentialRequest = Message<"apps.v1.WriteAppCredentialRequest"> & {
927
+ export declare type CompleteAppInstallRequest = Message<"apps.v1.CompleteAppInstallRequest"> & {
928
928
  /**
929
929
  * @generated from field: string tenant_id = 1;
930
930
  */
@@ -941,7 +941,10 @@ export declare type WriteAppCredentialRequest = Message<"apps.v1.WriteAppCredent
941
941
  appName: string;
942
942
 
943
943
  /**
944
- * encrypted by platform before insert
944
+ * Caller-supplied credential values keyed by manifest field name. Each
945
+ * entry becomes a vault row labelled with the field name. Empty values
946
+ * are rejected at validation time — partial rotation should go through
947
+ * RotateAppCredential, not CompleteAppInstall.
945
948
  *
946
949
  * @generated from field: google.protobuf.Struct values = 4;
947
950
  */
@@ -949,15 +952,15 @@ export declare type WriteAppCredentialRequest = Message<"apps.v1.WriteAppCredent
949
952
  };
950
953
 
951
954
  /**
952
- * Describes the message apps.v1.WriteAppCredentialRequest.
953
- * Use `create(WriteAppCredentialRequestSchema)` to create a new message.
955
+ * Describes the message apps.v1.CompleteAppInstallRequest.
956
+ * Use `create(CompleteAppInstallRequestSchema)` to create a new message.
954
957
  */
955
- export declare const WriteAppCredentialRequestSchema: GenMessage<WriteAppCredentialRequest>;
958
+ export declare const CompleteAppInstallRequestSchema: GenMessage<CompleteAppInstallRequest>;
956
959
 
957
960
  /**
958
- * @generated from message apps.v1.WriteAppCredentialResponse
961
+ * @generated from message apps.v1.CompleteAppInstallResponse
959
962
  */
960
- export declare type WriteAppCredentialResponse = Message<"apps.v1.WriteAppCredentialResponse"> & {
963
+ export declare type CompleteAppInstallResponse = Message<"apps.v1.CompleteAppInstallResponse"> & {
961
964
  /**
962
965
  * @generated from field: bool success = 1;
963
966
  */
@@ -965,15 +968,15 @@ export declare type WriteAppCredentialResponse = Message<"apps.v1.WriteAppCreden
965
968
  };
966
969
 
967
970
  /**
968
- * Describes the message apps.v1.WriteAppCredentialResponse.
969
- * Use `create(WriteAppCredentialResponseSchema)` to create a new message.
971
+ * Describes the message apps.v1.CompleteAppInstallResponse.
972
+ * Use `create(CompleteAppInstallResponseSchema)` to create a new message.
970
973
  */
971
- export declare const WriteAppCredentialResponseSchema: GenMessage<WriteAppCredentialResponse>;
974
+ export declare const CompleteAppInstallResponseSchema: GenMessage<CompleteAppInstallResponse>;
972
975
 
973
976
  /**
974
- * @generated from message apps.v1.GetAppCredentialRequest
977
+ * @generated from message apps.v1.RotateAppCredentialRequest
975
978
  */
976
- export declare type GetAppCredentialRequest = Message<"apps.v1.GetAppCredentialRequest"> & {
979
+ export declare type RotateAppCredentialRequest = Message<"apps.v1.RotateAppCredentialRequest"> & {
977
980
  /**
978
981
  * @generated from field: string tenant_id = 1;
979
982
  */
@@ -988,46 +991,91 @@ export declare type GetAppCredentialRequest = Message<"apps.v1.GetAppCredentialR
988
991
  * @generated from field: string app_name = 3;
989
992
  */
990
993
  appName: string;
994
+
995
+ /**
996
+ * @generated from field: string field_name = 4;
997
+ */
998
+ fieldName: string;
999
+
1000
+ /**
1001
+ * @generated from field: bytes plaintext = 5;
1002
+ */
1003
+ plaintext: Uint8Array;
991
1004
  };
992
1005
 
993
1006
  /**
994
- * Describes the message apps.v1.GetAppCredentialRequest.
995
- * Use `create(GetAppCredentialRequestSchema)` to create a new message.
1007
+ * Describes the message apps.v1.RotateAppCredentialRequest.
1008
+ * Use `create(RotateAppCredentialRequestSchema)` to create a new message.
996
1009
  */
997
- export declare const GetAppCredentialRequestSchema: GenMessage<GetAppCredentialRequest>;
1010
+ export declare const RotateAppCredentialRequestSchema: GenMessage<RotateAppCredentialRequest>;
998
1011
 
999
1012
  /**
1000
- * @generated from message apps.v1.GetAppCredentialResponse
1013
+ * @generated from message apps.v1.RotateAppCredentialResponse
1001
1014
  */
1002
- export declare type GetAppCredentialResponse = Message<"apps.v1.GetAppCredentialResponse"> & {
1015
+ export declare type RotateAppCredentialResponse = Message<"apps.v1.RotateAppCredentialResponse"> & {
1003
1016
  /**
1004
- * @generated from field: apps.v1.Credentials.Strategy strategy = 1;
1017
+ * @generated from field: bool success = 1;
1005
1018
  */
1006
- strategy: Credentials_Strategy;
1019
+ success: boolean;
1020
+ };
1021
+
1022
+ /**
1023
+ * Describes the message apps.v1.RotateAppCredentialResponse.
1024
+ * Use `create(RotateAppCredentialResponseSchema)` to create a new message.
1025
+ */
1026
+ export declare const RotateAppCredentialResponseSchema: GenMessage<RotateAppCredentialResponse>;
1007
1027
 
1028
+ /**
1029
+ * @generated from message apps.v1.GetAppCredentialStructRequest
1030
+ */
1031
+ export declare type GetAppCredentialStructRequest = Message<"apps.v1.GetAppCredentialStructRequest"> & {
1008
1032
  /**
1009
- * @generated from field: google.protobuf.Struct values = 2;
1033
+ * @generated from field: string tenant_id = 1;
1034
+ */
1035
+ tenantId: string;
1036
+
1037
+ /**
1038
+ * @generated from field: string project_id = 2;
1039
+ */
1040
+ projectId: string;
1041
+
1042
+ /**
1043
+ * @generated from field: string app_name = 3;
1044
+ */
1045
+ appName: string;
1046
+ };
1047
+
1048
+ /**
1049
+ * Describes the message apps.v1.GetAppCredentialStructRequest.
1050
+ * Use `create(GetAppCredentialStructRequestSchema)` to create a new message.
1051
+ */
1052
+ export declare const GetAppCredentialStructRequestSchema: GenMessage<GetAppCredentialStructRequest>;
1053
+
1054
+ /**
1055
+ * @generated from message apps.v1.GetAppCredentialStructResponse
1056
+ */
1057
+ export declare type GetAppCredentialStructResponse = Message<"apps.v1.GetAppCredentialStructResponse"> & {
1058
+ /**
1059
+ * @generated from field: google.protobuf.Struct values = 1;
1010
1060
  */
1011
1061
  values?: JsonObject | undefined;
1012
1062
 
1013
1063
  /**
1014
- * false if the slot exists but is empty
1015
- *
1016
- * @generated from field: bool populated = 3;
1064
+ * @generated from field: bool populated = 2;
1017
1065
  */
1018
1066
  populated: boolean;
1019
1067
  };
1020
1068
 
1021
1069
  /**
1022
- * Describes the message apps.v1.GetAppCredentialResponse.
1023
- * Use `create(GetAppCredentialResponseSchema)` to create a new message.
1070
+ * Describes the message apps.v1.GetAppCredentialStructResponse.
1071
+ * Use `create(GetAppCredentialStructResponseSchema)` to create a new message.
1024
1072
  */
1025
- export declare const GetAppCredentialResponseSchema: GenMessage<GetAppCredentialResponse>;
1073
+ export declare const GetAppCredentialStructResponseSchema: GenMessage<GetAppCredentialStructResponse>;
1026
1074
 
1027
1075
  /**
1028
- * @generated from message apps.v1.DeleteAppCredentialRequest
1076
+ * @generated from message apps.v1.AppInstallationServiceUninstallAppRequest
1029
1077
  */
1030
- export declare type DeleteAppCredentialRequest = Message<"apps.v1.DeleteAppCredentialRequest"> & {
1078
+ export declare type AppInstallationServiceUninstallAppRequest = Message<"apps.v1.AppInstallationServiceUninstallAppRequest"> & {
1031
1079
  /**
1032
1080
  * @generated from field: string tenant_id = 1;
1033
1081
  */
@@ -1045,15 +1093,15 @@ export declare type DeleteAppCredentialRequest = Message<"apps.v1.DeleteAppCrede
1045
1093
  };
1046
1094
 
1047
1095
  /**
1048
- * Describes the message apps.v1.DeleteAppCredentialRequest.
1049
- * Use `create(DeleteAppCredentialRequestSchema)` to create a new message.
1096
+ * Describes the message apps.v1.AppInstallationServiceUninstallAppRequest.
1097
+ * Use `create(AppInstallationServiceUninstallAppRequestSchema)` to create a new message.
1050
1098
  */
1051
- export declare const DeleteAppCredentialRequestSchema: GenMessage<DeleteAppCredentialRequest>;
1099
+ export declare const AppInstallationServiceUninstallAppRequestSchema: GenMessage<AppInstallationServiceUninstallAppRequest>;
1052
1100
 
1053
1101
  /**
1054
- * @generated from message apps.v1.DeleteAppCredentialResponse
1102
+ * @generated from message apps.v1.AppInstallationServiceUninstallAppResponse
1055
1103
  */
1056
- export declare type DeleteAppCredentialResponse = Message<"apps.v1.DeleteAppCredentialResponse"> & {
1104
+ export declare type AppInstallationServiceUninstallAppResponse = Message<"apps.v1.AppInstallationServiceUninstallAppResponse"> & {
1057
1105
  /**
1058
1106
  * @generated from field: bool success = 1;
1059
1107
  */
@@ -1061,10 +1109,10 @@ export declare type DeleteAppCredentialResponse = Message<"apps.v1.DeleteAppCred
1061
1109
  };
1062
1110
 
1063
1111
  /**
1064
- * Describes the message apps.v1.DeleteAppCredentialResponse.
1065
- * Use `create(DeleteAppCredentialResponseSchema)` to create a new message.
1112
+ * Describes the message apps.v1.AppInstallationServiceUninstallAppResponse.
1113
+ * Use `create(AppInstallationServiceUninstallAppResponseSchema)` to create a new message.
1066
1114
  */
1067
- export declare const DeleteAppCredentialResponseSchema: GenMessage<DeleteAppCredentialResponse>;
1115
+ export declare const AppInstallationServiceUninstallAppResponseSchema: GenMessage<AppInstallationServiceUninstallAppResponse>;
1068
1116
 
1069
1117
  /**
1070
1118
  * @generated from message apps.v1.IssueExchangeTicketRequest
@@ -1547,32 +1595,57 @@ export declare const AppsService: GenService<{
1547
1595
  }>;
1548
1596
 
1549
1597
  /**
1550
- * @generated from service apps.v1.AppCredentialsService
1598
+ * @generated from service apps.v1.AppInstallationService
1551
1599
  */
1552
- export declare const AppCredentialsService: GenService<{
1600
+ export declare const AppInstallationService: GenService<{
1553
1601
  /**
1554
- * @generated from rpc apps.v1.AppCredentialsService.WriteAppCredential
1602
+ * CompleteAppInstall runs the __validate_credentials probe (when the
1603
+ * app's manifest declares it), then writes one vault row per credential
1604
+ * field. Idempotent: re-calling with the same values rotates each
1605
+ * existing field's vault row through SecretsService.RotateSecret so
1606
+ * any record holding a SecretRef stays bound.
1607
+ *
1608
+ * @generated from rpc apps.v1.AppInstallationService.CompleteAppInstall
1555
1609
  */
1556
- writeAppCredential: {
1610
+ completeAppInstall: {
1557
1611
  methodKind: "unary";
1558
- input: typeof WriteAppCredentialRequestSchema;
1559
- output: typeof WriteAppCredentialResponseSchema;
1612
+ input: typeof CompleteAppInstallRequestSchema;
1613
+ output: typeof CompleteAppInstallResponseSchema;
1560
1614
  },
1561
1615
  /**
1562
- * @generated from rpc apps.v1.AppCredentialsService.GetAppCredential
1616
+ * RotateAppCredential rotates a single named field. The new ref is
1617
+ * bound to the same label so GetAppCredentialStruct sees the new value
1618
+ * automatically.
1619
+ *
1620
+ * @generated from rpc apps.v1.AppInstallationService.RotateAppCredential
1563
1621
  */
1564
- getAppCredential: {
1622
+ rotateAppCredential: {
1565
1623
  methodKind: "unary";
1566
- input: typeof GetAppCredentialRequestSchema;
1567
- output: typeof GetAppCredentialResponseSchema;
1624
+ input: typeof RotateAppCredentialRequestSchema;
1625
+ output: typeof RotateAppCredentialResponseSchema;
1568
1626
  },
1569
1627
  /**
1570
- * @generated from rpc apps.v1.AppCredentialsService.DeleteAppCredential
1628
+ * GetAppCredentialStruct lists every app-owned vault row for the given
1629
+ * app, decrypts each, and returns a struct keyed by field name (the
1630
+ * vault row's label).
1631
+ *
1632
+ * @generated from rpc apps.v1.AppInstallationService.GetAppCredentialStruct
1571
1633
  */
1572
- deleteAppCredential: {
1634
+ getAppCredentialStruct: {
1635
+ methodKind: "unary";
1636
+ input: typeof GetAppCredentialStructRequestSchema;
1637
+ output: typeof GetAppCredentialStructResponseSchema;
1638
+ },
1639
+ /**
1640
+ * UninstallApp removes every app-owned vault row + dispatches
1641
+ * run_before_uninstall ops. Idempotent.
1642
+ *
1643
+ * @generated from rpc apps.v1.AppInstallationService.UninstallApp
1644
+ */
1645
+ uninstallApp: {
1573
1646
  methodKind: "unary";
1574
- input: typeof DeleteAppCredentialRequestSchema;
1575
- output: typeof DeleteAppCredentialResponseSchema;
1647
+ input: typeof AppInstallationServiceUninstallAppRequestSchema;
1648
+ output: typeof AppInstallationServiceUninstallAppResponseSchema;
1576
1649
  },
1577
1650
  }>;
1578
1651
 
@@ -10,7 +10,7 @@ import { file_google_protobuf_struct, file_google_protobuf_timestamp } from "@bu
10
10
  * Describes the file apps/v1/apps_service.proto.
11
11
  */
12
12
  export const file_apps_v1_apps_service = /*@__PURE__*/
13
- fileDesc("ChphcHBzL3YxL2FwcHNfc2VydmljZS5wcm90bxIHYXBwcy52MSKRBAoDQXBwEgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSFAoMbWFuaWZlc3RfdXJsGAUgASgJEhUKDW1hbmlmZXN0X2hhc2gYBiABKAkSJAoIbWFuaWZlc3QYByABKAsyEi5hcHBzLnYxLkFwcENvbmZpZxIpCghzZXR0aW5ncxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIbWFwcGluZ3MYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYCiABKAgSMAoMaW5zdGFsbGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZCgxpbnN0YWxsZWRfYnkYDCABKAlIAIgBARIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1ChRsYXN0X3B1c2hlZF9tYXBwaW5ncxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNwoObGFzdF9wdXNoZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCDwoNX2luc3RhbGxlZF9ieUIRCg9fbGFzdF9wdXNoZWRfYXQimQEKDVNvdXJjZU1hcHBpbmcSEAoIdG9fbW9kZWwYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkSMgoGZmllbGRzGAMgAygLMiIuYXBwcy52MS5Tb3VyY2VNYXBwaW5nLkZpZWxkc0VudHJ5Gi0KC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilQEKC1NpbmtNYXBwaW5nEhAKCHRvX21vZGVsGAEgASgJEhMKC25hdHVyYWxfa2V5GAIgASgJEjAKBmZpZWxkcxgDIAMoCzIgLmFwcHMudjEuU2lua01hcHBpbmcuRmllbGRzRW50cnkaLQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0ChRQbGFjZW1lbnRGaWVsZENob2ljZRINCgVtb2RlbBgBIAEoCRINCgVmaWVsZBgCIAEoCSLdAgoRQXBwSW5zdGFsbFByZXZpZXcSJAoIbWFuaWZlc3QYASABKAsyEi5hcHBzLnYxLkFwcENvbmZpZxIVCg1tYW5pZmVzdF9oYXNoGAIgASgJEhwKFG9wZXJhdGlvbnNfdG9fY3JlYXRlGAMgAygJEhcKD2hvb2tzX3RvX2NyZWF0ZRgEIAMoCRIcChRwbGFjZW1lbnRzX3RvX2NyZWF0ZRgFIAMoCRI6ChNjcmVkZW50aWFsX3N0cmF0ZWd5GAYgASgOMh0uYXBwcy52MS5DcmVkZW50aWFscy5TdHJhdGVneRIbChNzb3VyY2VfdHlwZXNfdG9fbWFwGAcgAygJEh0KFXNpbmtfY29udHJhY3RzX3RvX21hcBgIIAMoCRIpCiFwbGFjZW1lbnRzX3JlcXVpcmluZ19maWVsZF9jaG9pY2UYCSADKAkSEwoLd2ViaG9va191cmwYCiABKAkiOAoPTGlzdEFwcHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIi4KEExpc3RBcHBzUmVzcG9uc2USGgoEYXBwcxgBIAMoCzIMLmFwcHMudjEuQXBwIkQKDUdldEFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCSIrCg5HZXRBcHBSZXNwb25zZRIZCgNhcHAYASABKAsyDC5hcHBzLnYxLkFwcCJQChFJbnN0YWxsQXBwUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIUCgxtYW5pZmVzdF91cmwYAyABKAkiiQEKEkluc3RhbGxBcHBSZXNwb25zZRIWCg5pbnN0YWxsX3RpY2tldBgBIAEoCRIrCgdwcmV2aWV3GAIgASgLMhouYXBwcy52MS5BcHBJbnN0YWxsUHJldmlldxIuCgpleHBpcmVzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCL/BAoYQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0EhYKDmluc3RhbGxfdGlja2V0GAEgASgJEk4KD3NvdXJjZV9tYXBwaW5ncxgCIAMoCzI1LmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0LlNvdXJjZU1hcHBpbmdzRW50cnkSSgoNc2lua19tYXBwaW5ncxgDIAMoCzIzLmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0LlNpbmtNYXBwaW5nc0VudHJ5Ei4KCHNldHRpbmdzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEl0KF3BsYWNlbWVudF9maWVsZF9jaG9pY2VzGAUgAygLMjwuYXBwcy52MS5Db25maXJtSW5zdGFsbEFwcFJlcXVlc3QuUGxhY2VtZW50RmllbGRDaG9pY2VzRW50cnkSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAgaTQoTU291cmNlTWFwcGluZ3NFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5hcHBzLnYxLlNvdXJjZU1hcHBpbmc6AjgBGkkKEVNpbmtNYXBwaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmFwcHMudjEuU2lua01hcHBpbmc6AjgBGlsKGlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmFwcHMudjEuUGxhY2VtZW50RmllbGRDaG9pY2U6AjgBQgsKCV9zZXR0aW5ncyI2ChlDb25maXJtSW5zdGFsbEFwcFJlc3BvbnNlEhkKA2FwcBgBIAEoCzIMLmFwcHMudjEuQXBwIkcKEFVwZGF0ZUFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCSKWAQoRVXBkYXRlQXBwUmVzcG9uc2USGQoRbmV3X21hbmlmZXN0X2hhc2gYASABKAkSKAoMbmV3X21hbmlmZXN0GAIgASgLMhIuYXBwcy52MS5BcHBDb25maWcSKAoHY2hhbmdlcxgDIAMoCzIXLmFwcHMudjEuTWFuaWZlc3RDaGFuZ2USEgoKbm9fY2hhbmdlcxgEIAEoCCLLAQoOTWFuaWZlc3RDaGFuZ2USLAoFY2xhc3MYASABKA4yHS5hcHBzLnYxLk1hbmlmZXN0Q2hhbmdlLkNsYXNzEgwKBHBhdGgYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiaAoFQ2xhc3MSFQoRQ0xBU1NfVU5TUEVDSUZJRUQQABITCg9DTEFTU19TQUZFX0FVVE8QARIfChtDTEFTU19SRVFVSVJFU19DT05GSVJNQVRJT04QAhISCg5DTEFTU19SRUpFQ1RFRBADImkKF0NvbmZpcm1VcGRhdGVBcHBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGQoRbmV3X21hbmlmZXN0X2hhc2gYBCABKAkiNQoYQ29uZmlybVVwZGF0ZUFwcFJlc3BvbnNlEhkKA2FwcBgBIAEoCzIMLmFwcHMudjEuQXBwIlkKE1VuaW5zdGFsbEFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRINCgVmb3JjZRgEIAEoCCI3ChRVbmluc3RhbGxBcHBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg4KBmZvcmNlZBgCIAEoCCLmBAoUU2V0QXBwTWFwcGluZ1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRJKCg9zb3VyY2VfbWFwcGluZ3MYBCADKAsyMS5hcHBzLnYxLlNldEFwcE1hcHBpbmdSZXF1ZXN0LlNvdXJjZU1hcHBpbmdzRW50cnkSRgoNc2lua19tYXBwaW5ncxgFIAMoCzIvLmFwcHMudjEuU2V0QXBwTWFwcGluZ1JlcXVlc3QuU2lua01hcHBpbmdzRW50cnkSWQoXcGxhY2VtZW50X2ZpZWxkX2Nob2ljZXMYBiADKAsyOC5hcHBzLnYxLlNldEFwcE1hcHBpbmdSZXF1ZXN0LlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAgaTQoTU291cmNlTWFwcGluZ3NFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5hcHBzLnYxLlNvdXJjZU1hcHBpbmc6AjgBGkkKEVNpbmtNYXBwaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmFwcHMudjEuU2lua01hcHBpbmc6AjgBGlsKGlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmFwcHMudjEuUGxhY2VtZW50RmllbGRDaG9pY2U6AjgBIjIKFVNldEFwcE1hcHBpbmdSZXNwb25zZRIZCgNhcHAYASABKAsyDC5hcHBzLnYxLkFwcCJUChdWYWxpZGF0ZU1hbmlmZXN0UmVxdWVzdBIWCgxtYW5pZmVzdF91cmwYASABKAlIABIXCg1tYW5pZmVzdF9qc29uGAIgASgJSABCCAoGc291cmNlIrUBCg9WYWxpZGF0aW9uSXNzdWUSMwoIc2V2ZXJpdHkYASABKA4yIS5hcHBzLnYxLlZhbGlkYXRpb25Jc3N1ZS5TZXZlcml0eRIMCgRwYXRoGAIgASgJEg8KB21lc3NhZ2UYAyABKAkiTgoIU2V2ZXJpdHkSGAoUU0VWRVJJVFlfVU5TUEVDSUZJRUQQABISCg5TRVZFUklUWV9FUlJPUhABEhQKEFNFVkVSSVRZX1dBUk5JTkcQAiJQChhWYWxpZGF0ZU1hbmlmZXN0UmVzcG9uc2USKAoGaXNzdWVzGAEgAygLMhguYXBwcy52MS5WYWxpZGF0aW9uSXNzdWUSCgoCb2sYAiABKAgijgEKF1RyaWdnZXJPcGVyYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhUKDW9wZXJhdGlvbl9rZXkYAyABKAkSKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCAoGX2lucHV0IjAKGFRyaWdnZXJPcGVyYXRpb25SZXNwb25zZRIUCgxleGVjdXRpb25faWQYASABKAkifQoZV3JpdGVBcHBDcmVkZW50aWFsUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghhcHBfbmFtZRgDIAEoCRInCgZ2YWx1ZXMYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ii0KGldyaXRlQXBwQ3JlZGVudGlhbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiUgoXR2V0QXBwQ3JlZGVudGlhbFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkihwEKGEdldEFwcENyZWRlbnRpYWxSZXNwb25zZRIvCghzdHJhdGVneRgBIAEoDjIdLmFwcHMudjEuQ3JlZGVudGlhbHMuU3RyYXRlZ3kSJwoGdmFsdWVzGAIgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdBIRCglwb3B1bGF0ZWQYAyABKAgiVQoaRGVsZXRlQXBwQ3JlZGVudGlhbFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkiLgobRGVsZXRlQXBwQ3JlZGVudGlhbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiVQoaSXNzdWVFeGNoYW5nZVRpY2tldFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkiXQobSXNzdWVFeGNoYW5nZVRpY2tldFJlc3BvbnNlEg4KBnRpY2tldBgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCItChtSZWRlZW1FeGNoYW5nZVRpY2tldFJlcXVlc3QSDgoGdGlja2V0GAEgASgJImQKHFJlZGVlbUV4Y2hhbmdlVGlja2V0UmVzcG9uc2USFAoMc2NvcGVkX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIjIKGVJlZnJlc2hTY29wZWRUb2tlblJlcXVlc3QSFQoNY3VycmVudF90b2tlbhgBIAEoCSJiChpSZWZyZXNoU2NvcGVkVG9rZW5SZXNwb25zZRIUCgxzY29wZWRfdG9rZW4YASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi+wQKCUFwcFN0YXR1cxIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghhcHBfbmFtZRgDIAEoCRI1CgxsYXN0X3N5bmNfYXQYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSACIAQESIgoVbGFzdF9zeW5jX2R1cmF0aW9uX21zGAUgASgDSAGIAQESIwoWbGFzdF9zeW5jX3JlY29yZF9jb3VudBgGIAEoA0gCiAEBEhcKCmxhc3RfZXJyb3IYByABKAlIA4gBARI2Cg1sYXN0X2Vycm9yX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgEiAEBEhsKE3N1YnNjcmlwdGlvbl9oZWFsdGgYCSABKAkSEwoLYXV0aF9zdGF0dXMYCiABKAkSHgoRZGVsZXRpb25fc3RyYXRlZ3kYCyABKAlIBYgBARIrCgVleHRyYRgMIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3RIBogBARIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbCg51cGRhdGVkX2J5X2p0aRgOIAEoCUgHiAEBQg8KDV9sYXN0X3N5bmNfYXRCGAoWX2xhc3Rfc3luY19kdXJhdGlvbl9tc0IZChdfbGFzdF9zeW5jX3JlY29yZF9jb3VudEINCgtfbGFzdF9lcnJvckIQCg5fbGFzdF9lcnJvcl9hdEIUChJfZGVsZXRpb25fc3RyYXRlZ3lCCAoGX2V4dHJhQhEKD191cGRhdGVkX2J5X2p0aSJOChNHZXRBcHBTdGF0dXNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCGFwcF9uYW1lGAMgASgJIjoKFEdldEFwcFN0YXR1c1Jlc3BvbnNlEiIKBnN0YXR1cxgBIAEoCzISLmFwcHMudjEuQXBwU3RhdHVzIjwKFlVwc2VydEFwcFN0YXR1c1JlcXVlc3QSIgoGc3RhdHVzGAEgASgLMhIuYXBwcy52MS5BcHBTdGF0dXMiKgoXVXBzZXJ0QXBwU3RhdHVzUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCCLmAQoIQXBwRXZlbnQSCgoCaWQYASABKAkSEQoJdGVuYW50X2lkGAIgASgJEhIKCnByb2plY3RfaWQYAyABKAkSEAoIYXBwX25hbWUYBCABKAkSDQoFZXZlbnQYBSABKAkSEgoFYWN0b3IYBiABKAlIAIgBARIsCgZkZXRhaWwYByABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAGIAQESLwoLb2NjdXJyZWRfYXQYCCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wQggKBl9hY3RvckIJCgdfZGV0YWlsIl4KFExpc3RBcHBFdmVudHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCGFwcF9uYW1lGAMgASgJEg0KBWxpbWl0GAQgASgFIjoKFUxpc3RBcHBFdmVudHNSZXNwb25zZRIhCgZldmVudHMYASADKAsyES5hcHBzLnYxLkFwcEV2ZW50MpgGCgtBcHBzU2VydmljZRI/CghMaXN0QXBwcxIYLmFwcHMudjEuTGlzdEFwcHNSZXF1ZXN0GhkuYXBwcy52MS5MaXN0QXBwc1Jlc3BvbnNlEjkKBkdldEFwcBIWLmFwcHMudjEuR2V0QXBwUmVxdWVzdBoXLmFwcHMudjEuR2V0QXBwUmVzcG9uc2USRQoKSW5zdGFsbEFwcBIaLmFwcHMudjEuSW5zdGFsbEFwcFJlcXVlc3QaGy5hcHBzLnYxLkluc3RhbGxBcHBSZXNwb25zZRJaChFDb25maXJtSW5zdGFsbEFwcBIhLmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0GiIuYXBwcy52MS5Db25maXJtSW5zdGFsbEFwcFJlc3BvbnNlEkIKCVVwZGF0ZUFwcBIZLmFwcHMudjEuVXBkYXRlQXBwUmVxdWVzdBoaLmFwcHMudjEuVXBkYXRlQXBwUmVzcG9uc2USVwoQQ29uZmlybVVwZGF0ZUFwcBIgLmFwcHMudjEuQ29uZmlybVVwZGF0ZUFwcFJlcXVlc3QaIS5hcHBzLnYxLkNvbmZpcm1VcGRhdGVBcHBSZXNwb25zZRJLCgxVbmluc3RhbGxBcHASHC5hcHBzLnYxLlVuaW5zdGFsbEFwcFJlcXVlc3QaHS5hcHBzLnYxLlVuaW5zdGFsbEFwcFJlc3BvbnNlEk4KDVNldEFwcE1hcHBpbmcSHS5hcHBzLnYxLlNldEFwcE1hcHBpbmdSZXF1ZXN0Gh4uYXBwcy52MS5TZXRBcHBNYXBwaW5nUmVzcG9uc2USVwoQVmFsaWRhdGVNYW5pZmVzdBIgLmFwcHMudjEuVmFsaWRhdGVNYW5pZmVzdFJlcXVlc3QaIS5hcHBzLnYxLlZhbGlkYXRlTWFuaWZlc3RSZXNwb25zZRJXChBUcmlnZ2VyT3BlcmF0aW9uEiAuYXBwcy52MS5UcmlnZ2VyT3BlcmF0aW9uUmVxdWVzdBohLmFwcHMudjEuVHJpZ2dlck9wZXJhdGlvblJlc3BvbnNlMrECChVBcHBDcmVkZW50aWFsc1NlcnZpY2USXQoSV3JpdGVBcHBDcmVkZW50aWFsEiIuYXBwcy52MS5Xcml0ZUFwcENyZWRlbnRpYWxSZXF1ZXN0GiMuYXBwcy52MS5Xcml0ZUFwcENyZWRlbnRpYWxSZXNwb25zZRJXChBHZXRBcHBDcmVkZW50aWFsEiAuYXBwcy52MS5HZXRBcHBDcmVkZW50aWFsUmVxdWVzdBohLmFwcHMudjEuR2V0QXBwQ3JlZGVudGlhbFJlc3BvbnNlEmAKE0RlbGV0ZUFwcENyZWRlbnRpYWwSIy5hcHBzLnYxLkRlbGV0ZUFwcENyZWRlbnRpYWxSZXF1ZXN0GiQuYXBwcy52MS5EZWxldGVBcHBDcmVkZW50aWFsUmVzcG9uc2UytgIKDkFwcEF1dGhTZXJ2aWNlEmAKE0lzc3VlRXhjaGFuZ2VUaWNrZXQSIy5hcHBzLnYxLklzc3VlRXhjaGFuZ2VUaWNrZXRSZXF1ZXN0GiQuYXBwcy52MS5Jc3N1ZUV4Y2hhbmdlVGlja2V0UmVzcG9uc2USYwoUUmVkZWVtRXhjaGFuZ2VUaWNrZXQSJC5hcHBzLnYxLlJlZGVlbUV4Y2hhbmdlVGlja2V0UmVxdWVzdBolLmFwcHMudjEuUmVkZWVtRXhjaGFuZ2VUaWNrZXRSZXNwb25zZRJdChJSZWZyZXNoU2NvcGVkVG9rZW4SIi5hcHBzLnYxLlJlZnJlc2hTY29wZWRUb2tlblJlcXVlc3QaIy5hcHBzLnYxLlJlZnJlc2hTY29wZWRUb2tlblJlc3BvbnNlMoUCChBBcHBTdGF0dXNTZXJ2aWNlEksKDEdldEFwcFN0YXR1cxIcLmFwcHMudjEuR2V0QXBwU3RhdHVzUmVxdWVzdBodLmFwcHMudjEuR2V0QXBwU3RhdHVzUmVzcG9uc2USVAoPVXBzZXJ0QXBwU3RhdHVzEh8uYXBwcy52MS5VcHNlcnRBcHBTdGF0dXNSZXF1ZXN0GiAuYXBwcy52MS5VcHNlcnRBcHBTdGF0dXNSZXNwb25zZRJOCg1MaXN0QXBwRXZlbnRzEh0uYXBwcy52MS5MaXN0QXBwRXZlbnRzUmVxdWVzdBoeLmFwcHMudjEuTGlzdEFwcEV2ZW50c1Jlc3BvbnNlQjVaM2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9hcHBzL3YxO2FwcHN2MWIGcHJvdG8z", [file_apps_v1_apps, file_google_protobuf_struct, file_google_protobuf_timestamp]);
13
+ fileDesc("ChphcHBzL3YxL2FwcHNfc2VydmljZS5wcm90bxIHYXBwcy52MSKRBAoDQXBwEgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEgwKBG5hbWUYBCABKAkSFAoMbWFuaWZlc3RfdXJsGAUgASgJEhUKDW1hbmlmZXN0X2hhc2gYBiABKAkSJAoIbWFuaWZlc3QYByABKAsyEi5hcHBzLnYxLkFwcENvbmZpZxIpCghzZXR0aW5ncxgIIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSKQoIbWFwcGluZ3MYCSABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Eg8KB2VuYWJsZWQYCiABKAgSMAoMaW5zdGFsbGVkX2F0GAsgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIZCgxpbnN0YWxsZWRfYnkYDCABKAlIAIgBARIuCgp1cGRhdGVkX2F0GA0gASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI1ChRsYXN0X3B1c2hlZF9tYXBwaW5ncxgOIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSNwoObGFzdF9wdXNoZWRfYXQYDyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAGIAQFCDwoNX2luc3RhbGxlZF9ieUIRCg9fbGFzdF9wdXNoZWRfYXQimQEKDVNvdXJjZU1hcHBpbmcSEAoIdG9fbW9kZWwYASABKAkSEwoLbmF0dXJhbF9rZXkYAiABKAkSMgoGZmllbGRzGAMgAygLMiIuYXBwcy52MS5Tb3VyY2VNYXBwaW5nLkZpZWxkc0VudHJ5Gi0KC0ZpZWxkc0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgCIAEoCToCOAEilQEKC1NpbmtNYXBwaW5nEhAKCHRvX21vZGVsGAEgASgJEhMKC25hdHVyYWxfa2V5GAIgASgJEjAKBmZpZWxkcxgDIAMoCzIgLmFwcHMudjEuU2lua01hcHBpbmcuRmllbGRzRW50cnkaLQoLRmllbGRzRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASI0ChRQbGFjZW1lbnRGaWVsZENob2ljZRINCgVtb2RlbBgBIAEoCRINCgVmaWVsZBgCIAEoCSLdAgoRQXBwSW5zdGFsbFByZXZpZXcSJAoIbWFuaWZlc3QYASABKAsyEi5hcHBzLnYxLkFwcENvbmZpZxIVCg1tYW5pZmVzdF9oYXNoGAIgASgJEhwKFG9wZXJhdGlvbnNfdG9fY3JlYXRlGAMgAygJEhcKD2hvb2tzX3RvX2NyZWF0ZRgEIAMoCRIcChRwbGFjZW1lbnRzX3RvX2NyZWF0ZRgFIAMoCRI6ChNjcmVkZW50aWFsX3N0cmF0ZWd5GAYgASgOMh0uYXBwcy52MS5DcmVkZW50aWFscy5TdHJhdGVneRIbChNzb3VyY2VfdHlwZXNfdG9fbWFwGAcgAygJEh0KFXNpbmtfY29udHJhY3RzX3RvX21hcBgIIAMoCRIpCiFwbGFjZW1lbnRzX3JlcXVpcmluZ19maWVsZF9jaG9pY2UYCSADKAkSEwoLd2ViaG9va191cmwYCiABKAkiOAoPTGlzdEFwcHNSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJIi4KEExpc3RBcHBzUmVzcG9uc2USGgoEYXBwcxgBIAMoCzIMLmFwcHMudjEuQXBwIkQKDUdldEFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCSIrCg5HZXRBcHBSZXNwb25zZRIZCgNhcHAYASABKAsyDC5hcHBzLnYxLkFwcCJQChFJbnN0YWxsQXBwUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIUCgxtYW5pZmVzdF91cmwYAyABKAkiiQEKEkluc3RhbGxBcHBSZXNwb25zZRIWCg5pbnN0YWxsX3RpY2tldBgBIAEoCRIrCgdwcmV2aWV3GAIgASgLMhouYXBwcy52MS5BcHBJbnN0YWxsUHJldmlldxIuCgpleHBpcmVzX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCL/BAoYQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0EhYKDmluc3RhbGxfdGlja2V0GAEgASgJEk4KD3NvdXJjZV9tYXBwaW5ncxgCIAMoCzI1LmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0LlNvdXJjZU1hcHBpbmdzRW50cnkSSgoNc2lua19tYXBwaW5ncxgDIAMoCzIzLmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXF1ZXN0LlNpbmtNYXBwaW5nc0VudHJ5Ei4KCHNldHRpbmdzGAQgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgAiAEBEl0KF3BsYWNlbWVudF9maWVsZF9jaG9pY2VzGAUgAygLMjwuYXBwcy52MS5Db25maXJtSW5zdGFsbEFwcFJlcXVlc3QuUGxhY2VtZW50RmllbGRDaG9pY2VzRW50cnkSHAoUdXBkYXRlX3B1c2hfc25hcHNob3QYBiABKAgaTQoTU291cmNlTWFwcGluZ3NFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5hcHBzLnYxLlNvdXJjZU1hcHBpbmc6AjgBGkkKEVNpbmtNYXBwaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmFwcHMudjEuU2lua01hcHBpbmc6AjgBGlsKGlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmFwcHMudjEuUGxhY2VtZW50RmllbGRDaG9pY2U6AjgBQgsKCV9zZXR0aW5ncyI2ChlDb25maXJtSW5zdGFsbEFwcFJlc3BvbnNlEhkKA2FwcBgBIAEoCzIMLmFwcHMudjEuQXBwIkcKEFVwZGF0ZUFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCSKWAQoRVXBkYXRlQXBwUmVzcG9uc2USGQoRbmV3X21hbmlmZXN0X2hhc2gYASABKAkSKAoMbmV3X21hbmlmZXN0GAIgASgLMhIuYXBwcy52MS5BcHBDb25maWcSKAoHY2hhbmdlcxgDIAMoCzIXLmFwcHMudjEuTWFuaWZlc3RDaGFuZ2USEgoKbm9fY2hhbmdlcxgEIAEoCCLLAQoOTWFuaWZlc3RDaGFuZ2USLAoFY2xhc3MYASABKA4yHS5hcHBzLnYxLk1hbmlmZXN0Q2hhbmdlLkNsYXNzEgwKBHBhdGgYAiABKAkSEwoLZGVzY3JpcHRpb24YAyABKAkiaAoFQ2xhc3MSFQoRQ0xBU1NfVU5TUEVDSUZJRUQQABITCg9DTEFTU19TQUZFX0FVVE8QARIfChtDTEFTU19SRVFVSVJFU19DT05GSVJNQVRJT04QAhISCg5DTEFTU19SRUpFQ1RFRBADImkKF0NvbmZpcm1VcGRhdGVBcHBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEgwKBG5hbWUYAyABKAkSGQoRbmV3X21hbmlmZXN0X2hhc2gYBCABKAkiNQoYQ29uZmlybVVwZGF0ZUFwcFJlc3BvbnNlEhkKA2FwcBgBIAEoCzIMLmFwcHMudjEuQXBwIlkKE1VuaW5zdGFsbEFwcFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRINCgVmb3JjZRgEIAEoCCI3ChRVbmluc3RhbGxBcHBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg4KBmZvcmNlZBgCIAEoCCLmBAoUU2V0QXBwTWFwcGluZ1JlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSDAoEbmFtZRgDIAEoCRJKCg9zb3VyY2VfbWFwcGluZ3MYBCADKAsyMS5hcHBzLnYxLlNldEFwcE1hcHBpbmdSZXF1ZXN0LlNvdXJjZU1hcHBpbmdzRW50cnkSRgoNc2lua19tYXBwaW5ncxgFIAMoCzIvLmFwcHMudjEuU2V0QXBwTWFwcGluZ1JlcXVlc3QuU2lua01hcHBpbmdzRW50cnkSWQoXcGxhY2VtZW50X2ZpZWxkX2Nob2ljZXMYBiADKAsyOC5hcHBzLnYxLlNldEFwcE1hcHBpbmdSZXF1ZXN0LlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EhwKFHVwZGF0ZV9wdXNoX3NuYXBzaG90GAcgASgIEhUKDXNuYXBzaG90X29ubHkYCCABKAgaTQoTU291cmNlTWFwcGluZ3NFbnRyeRILCgNrZXkYASABKAkSJQoFdmFsdWUYAiABKAsyFi5hcHBzLnYxLlNvdXJjZU1hcHBpbmc6AjgBGkkKEVNpbmtNYXBwaW5nc0VudHJ5EgsKA2tleRgBIAEoCRIjCgV2YWx1ZRgCIAEoCzIULmFwcHMudjEuU2lua01hcHBpbmc6AjgBGlsKGlBsYWNlbWVudEZpZWxkQ2hvaWNlc0VudHJ5EgsKA2tleRgBIAEoCRIsCgV2YWx1ZRgCIAEoCzIdLmFwcHMudjEuUGxhY2VtZW50RmllbGRDaG9pY2U6AjgBIjIKFVNldEFwcE1hcHBpbmdSZXNwb25zZRIZCgNhcHAYASABKAsyDC5hcHBzLnYxLkFwcCJUChdWYWxpZGF0ZU1hbmlmZXN0UmVxdWVzdBIWCgxtYW5pZmVzdF91cmwYASABKAlIABIXCg1tYW5pZmVzdF9qc29uGAIgASgJSABCCAoGc291cmNlIrUBCg9WYWxpZGF0aW9uSXNzdWUSMwoIc2V2ZXJpdHkYASABKA4yIS5hcHBzLnYxLlZhbGlkYXRpb25Jc3N1ZS5TZXZlcml0eRIMCgRwYXRoGAIgASgJEg8KB21lc3NhZ2UYAyABKAkiTgoIU2V2ZXJpdHkSGAoUU0VWRVJJVFlfVU5TUEVDSUZJRUQQABISCg5TRVZFUklUWV9FUlJPUhABEhQKEFNFVkVSSVRZX1dBUk5JTkcQAiJQChhWYWxpZGF0ZU1hbmlmZXN0UmVzcG9uc2USKAoGaXNzdWVzGAEgAygLMhguYXBwcy52MS5WYWxpZGF0aW9uSXNzdWUSCgoCb2sYAiABKAgijgEKF1RyaWdnZXJPcGVyYXRpb25SZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhUKDW9wZXJhdGlvbl9rZXkYAyABKAkSKwoFaW5wdXQYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SACIAQFCCAoGX2lucHV0IjAKGFRyaWdnZXJPcGVyYXRpb25SZXNwb25zZRIUCgxleGVjdXRpb25faWQYASABKAkifQoZQ29tcGxldGVBcHBJbnN0YWxsUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghhcHBfbmFtZRgDIAEoCRInCgZ2YWx1ZXMYBCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0Ii0KGkNvbXBsZXRlQXBwSW5zdGFsbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgifAoaUm90YXRlQXBwQ3JlZGVudGlhbFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkSEgoKZmllbGRfbmFtZRgEIAEoCRIRCglwbGFpbnRleHQYBSABKAwiLgobUm90YXRlQXBwQ3JlZGVudGlhbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiWAodR2V0QXBwQ3JlZGVudGlhbFN0cnVjdFJlcXVlc3QSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkiXAoeR2V0QXBwQ3JlZGVudGlhbFN0cnVjdFJlc3BvbnNlEicKBnZhbHVlcxgBIAEoCzIXLmdvb2dsZS5wcm90b2J1Zi5TdHJ1Y3QSEQoJcG9wdWxhdGVkGAIgASgIImQKKUFwcEluc3RhbGxhdGlvblNlcnZpY2VVbmluc3RhbGxBcHBSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCGFwcF9uYW1lGAMgASgJIj0KKkFwcEluc3RhbGxhdGlvblNlcnZpY2VVbmluc3RhbGxBcHBSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIlUKGklzc3VlRXhjaGFuZ2VUaWNrZXRSZXF1ZXN0EhEKCXRlbmFudF9pZBgBIAEoCRISCgpwcm9qZWN0X2lkGAIgASgJEhAKCGFwcF9uYW1lGAMgASgJIl0KG0lzc3VlRXhjaGFuZ2VUaWNrZXRSZXNwb25zZRIOCgZ0aWNrZXQYASABKAkSLgoKZXhwaXJlc19hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiLQobUmVkZWVtRXhjaGFuZ2VUaWNrZXRSZXF1ZXN0Eg4KBnRpY2tldBgBIAEoCSJkChxSZWRlZW1FeGNoYW5nZVRpY2tldFJlc3BvbnNlEhQKDHNjb3BlZF90b2tlbhgBIAEoCRIuCgpleHBpcmVzX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCIyChlSZWZyZXNoU2NvcGVkVG9rZW5SZXF1ZXN0EhUKDWN1cnJlbnRfdG9rZW4YASABKAkiYgoaUmVmcmVzaFNjb3BlZFRva2VuUmVzcG9uc2USFAoMc2NvcGVkX3Rva2VuGAEgASgJEi4KCmV4cGlyZXNfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIvsECglBcHBTdGF0dXMSEQoJdGVuYW50X2lkGAEgASgJEhIKCnByb2plY3RfaWQYAiABKAkSEAoIYXBwX25hbWUYAyABKAkSNQoMbGFzdF9zeW5jX2F0GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEgAiAEBEiIKFWxhc3Rfc3luY19kdXJhdGlvbl9tcxgFIAEoA0gBiAEBEiMKFmxhc3Rfc3luY19yZWNvcmRfY291bnQYBiABKANIAogBARIXCgpsYXN0X2Vycm9yGAcgASgJSAOIAQESNgoNbGFzdF9lcnJvcl9hdBgIIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIBIgBARIbChNzdWJzY3JpcHRpb25faGVhbHRoGAkgASgJEhMKC2F1dGhfc3RhdHVzGAogASgJEh4KEWRlbGV0aW9uX3N0cmF0ZWd5GAsgASgJSAWIAQESKwoFZXh0cmEYDCABKAsyFy5nb29nbGUucHJvdG9idWYuU3RydWN0SAaIAQESLgoKdXBkYXRlZF9hdBgNIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoOdXBkYXRlZF9ieV9qdGkYDiABKAlIB4gBAUIPCg1fbGFzdF9zeW5jX2F0QhgKFl9sYXN0X3N5bmNfZHVyYXRpb25fbXNCGQoXX2xhc3Rfc3luY19yZWNvcmRfY291bnRCDQoLX2xhc3RfZXJyb3JCEAoOX2xhc3RfZXJyb3JfYXRCFAoSX2RlbGV0aW9uX3N0cmF0ZWd5QggKBl9leHRyYUIRCg9fdXBkYXRlZF9ieV9qdGkiTgoTR2V0QXBwU3RhdHVzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghhcHBfbmFtZRgDIAEoCSI6ChRHZXRBcHBTdGF0dXNSZXNwb25zZRIiCgZzdGF0dXMYASABKAsyEi5hcHBzLnYxLkFwcFN0YXR1cyI8ChZVcHNlcnRBcHBTdGF0dXNSZXF1ZXN0EiIKBnN0YXR1cxgBIAEoCzISLmFwcHMudjEuQXBwU3RhdHVzIioKF1Vwc2VydEFwcFN0YXR1c1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgi5gEKCEFwcEV2ZW50EgoKAmlkGAEgASgJEhEKCXRlbmFudF9pZBgCIAEoCRISCgpwcm9qZWN0X2lkGAMgASgJEhAKCGFwcF9uYW1lGAQgASgJEg0KBWV2ZW50GAUgASgJEhIKBWFjdG9yGAYgASgJSACIAQESLAoGZGV0YWlsGAcgASgLMhcuZ29vZ2xlLnByb3RvYnVmLlN0cnVjdEgBiAEBEi8KC29jY3VycmVkX2F0GAggASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcEIICgZfYWN0b3JCCQoHX2RldGFpbCJeChRMaXN0QXBwRXZlbnRzUmVxdWVzdBIRCgl0ZW5hbnRfaWQYASABKAkSEgoKcHJvamVjdF9pZBgCIAEoCRIQCghhcHBfbmFtZRgDIAEoCRINCgVsaW1pdBgEIAEoBSI6ChVMaXN0QXBwRXZlbnRzUmVzcG9uc2USIQoGZXZlbnRzGAEgAygLMhEuYXBwcy52MS5BcHBFdmVudDKYBgoLQXBwc1NlcnZpY2USPwoITGlzdEFwcHMSGC5hcHBzLnYxLkxpc3RBcHBzUmVxdWVzdBoZLmFwcHMudjEuTGlzdEFwcHNSZXNwb25zZRI5CgZHZXRBcHASFi5hcHBzLnYxLkdldEFwcFJlcXVlc3QaFy5hcHBzLnYxLkdldEFwcFJlc3BvbnNlEkUKCkluc3RhbGxBcHASGi5hcHBzLnYxLkluc3RhbGxBcHBSZXF1ZXN0GhsuYXBwcy52MS5JbnN0YWxsQXBwUmVzcG9uc2USWgoRQ29uZmlybUluc3RhbGxBcHASIS5hcHBzLnYxLkNvbmZpcm1JbnN0YWxsQXBwUmVxdWVzdBoiLmFwcHMudjEuQ29uZmlybUluc3RhbGxBcHBSZXNwb25zZRJCCglVcGRhdGVBcHASGS5hcHBzLnYxLlVwZGF0ZUFwcFJlcXVlc3QaGi5hcHBzLnYxLlVwZGF0ZUFwcFJlc3BvbnNlElcKEENvbmZpcm1VcGRhdGVBcHASIC5hcHBzLnYxLkNvbmZpcm1VcGRhdGVBcHBSZXF1ZXN0GiEuYXBwcy52MS5Db25maXJtVXBkYXRlQXBwUmVzcG9uc2USSwoMVW5pbnN0YWxsQXBwEhwuYXBwcy52MS5Vbmluc3RhbGxBcHBSZXF1ZXN0Gh0uYXBwcy52MS5Vbmluc3RhbGxBcHBSZXNwb25zZRJOCg1TZXRBcHBNYXBwaW5nEh0uYXBwcy52MS5TZXRBcHBNYXBwaW5nUmVxdWVzdBoeLmFwcHMudjEuU2V0QXBwTWFwcGluZ1Jlc3BvbnNlElcKEFZhbGlkYXRlTWFuaWZlc3QSIC5hcHBzLnYxLlZhbGlkYXRlTWFuaWZlc3RSZXF1ZXN0GiEuYXBwcy52MS5WYWxpZGF0ZU1hbmlmZXN0UmVzcG9uc2USVwoQVHJpZ2dlck9wZXJhdGlvbhIgLmFwcHMudjEuVHJpZ2dlck9wZXJhdGlvblJlcXVlc3QaIS5hcHBzLnYxLlRyaWdnZXJPcGVyYXRpb25SZXNwb25zZTK9AwoWQXBwSW5zdGFsbGF0aW9uU2VydmljZRJdChJDb21wbGV0ZUFwcEluc3RhbGwSIi5hcHBzLnYxLkNvbXBsZXRlQXBwSW5zdGFsbFJlcXVlc3QaIy5hcHBzLnYxLkNvbXBsZXRlQXBwSW5zdGFsbFJlc3BvbnNlEmAKE1JvdGF0ZUFwcENyZWRlbnRpYWwSIy5hcHBzLnYxLlJvdGF0ZUFwcENyZWRlbnRpYWxSZXF1ZXN0GiQuYXBwcy52MS5Sb3RhdGVBcHBDcmVkZW50aWFsUmVzcG9uc2USaQoWR2V0QXBwQ3JlZGVudGlhbFN0cnVjdBImLmFwcHMudjEuR2V0QXBwQ3JlZGVudGlhbFN0cnVjdFJlcXVlc3QaJy5hcHBzLnYxLkdldEFwcENyZWRlbnRpYWxTdHJ1Y3RSZXNwb25zZRJ3CgxVbmluc3RhbGxBcHASMi5hcHBzLnYxLkFwcEluc3RhbGxhdGlvblNlcnZpY2VVbmluc3RhbGxBcHBSZXF1ZXN0GjMuYXBwcy52MS5BcHBJbnN0YWxsYXRpb25TZXJ2aWNlVW5pbnN0YWxsQXBwUmVzcG9uc2UytgIKDkFwcEF1dGhTZXJ2aWNlEmAKE0lzc3VlRXhjaGFuZ2VUaWNrZXQSIy5hcHBzLnYxLklzc3VlRXhjaGFuZ2VUaWNrZXRSZXF1ZXN0GiQuYXBwcy52MS5Jc3N1ZUV4Y2hhbmdlVGlja2V0UmVzcG9uc2USYwoUUmVkZWVtRXhjaGFuZ2VUaWNrZXQSJC5hcHBzLnYxLlJlZGVlbUV4Y2hhbmdlVGlja2V0UmVxdWVzdBolLmFwcHMudjEuUmVkZWVtRXhjaGFuZ2VUaWNrZXRSZXNwb25zZRJdChJSZWZyZXNoU2NvcGVkVG9rZW4SIi5hcHBzLnYxLlJlZnJlc2hTY29wZWRUb2tlblJlcXVlc3QaIy5hcHBzLnYxLlJlZnJlc2hTY29wZWRUb2tlblJlc3BvbnNlMoUCChBBcHBTdGF0dXNTZXJ2aWNlEksKDEdldEFwcFN0YXR1cxIcLmFwcHMudjEuR2V0QXBwU3RhdHVzUmVxdWVzdBodLmFwcHMudjEuR2V0QXBwU3RhdHVzUmVzcG9uc2USVAoPVXBzZXJ0QXBwU3RhdHVzEh8uYXBwcy52MS5VcHNlcnRBcHBTdGF0dXNSZXF1ZXN0GiAuYXBwcy52MS5VcHNlcnRBcHBTdGF0dXNSZXNwb25zZRJOCg1MaXN0QXBwRXZlbnRzEh0uYXBwcy52MS5MaXN0QXBwRXZlbnRzUmVxdWVzdBoeLmFwcHMudjEuTGlzdEFwcEV2ZW50c1Jlc3BvbnNlQjVaM2dpdGh1Yi5jb20vZWlkZXN0dWRpby9mb2lyL2dlbi9wcm90by9hcHBzL3YxO2FwcHN2MWIGcHJvdG8z", [file_apps_v1_apps, file_google_protobuf_struct, file_google_protobuf_timestamp]);
14
14
 
15
15
  /**
16
16
  * Describes the message apps.v1.App.
@@ -226,144 +226,158 @@ export const TriggerOperationResponseSchema = /*@__PURE__*/
226
226
  messageDesc(file_apps_v1_apps_service, 26);
227
227
 
228
228
  /**
229
- * Describes the message apps.v1.WriteAppCredentialRequest.
230
- * Use `create(WriteAppCredentialRequestSchema)` to create a new message.
229
+ * Describes the message apps.v1.CompleteAppInstallRequest.
230
+ * Use `create(CompleteAppInstallRequestSchema)` to create a new message.
231
231
  */
232
- export const WriteAppCredentialRequestSchema = /*@__PURE__*/
232
+ export const CompleteAppInstallRequestSchema = /*@__PURE__*/
233
233
  messageDesc(file_apps_v1_apps_service, 27);
234
234
 
235
235
  /**
236
- * Describes the message apps.v1.WriteAppCredentialResponse.
237
- * Use `create(WriteAppCredentialResponseSchema)` to create a new message.
236
+ * Describes the message apps.v1.CompleteAppInstallResponse.
237
+ * Use `create(CompleteAppInstallResponseSchema)` to create a new message.
238
238
  */
239
- export const WriteAppCredentialResponseSchema = /*@__PURE__*/
239
+ export const CompleteAppInstallResponseSchema = /*@__PURE__*/
240
240
  messageDesc(file_apps_v1_apps_service, 28);
241
241
 
242
242
  /**
243
- * Describes the message apps.v1.GetAppCredentialRequest.
244
- * Use `create(GetAppCredentialRequestSchema)` to create a new message.
243
+ * Describes the message apps.v1.RotateAppCredentialRequest.
244
+ * Use `create(RotateAppCredentialRequestSchema)` to create a new message.
245
245
  */
246
- export const GetAppCredentialRequestSchema = /*@__PURE__*/
246
+ export const RotateAppCredentialRequestSchema = /*@__PURE__*/
247
247
  messageDesc(file_apps_v1_apps_service, 29);
248
248
 
249
249
  /**
250
- * Describes the message apps.v1.GetAppCredentialResponse.
251
- * Use `create(GetAppCredentialResponseSchema)` to create a new message.
250
+ * Describes the message apps.v1.RotateAppCredentialResponse.
251
+ * Use `create(RotateAppCredentialResponseSchema)` to create a new message.
252
252
  */
253
- export const GetAppCredentialResponseSchema = /*@__PURE__*/
253
+ export const RotateAppCredentialResponseSchema = /*@__PURE__*/
254
254
  messageDesc(file_apps_v1_apps_service, 30);
255
255
 
256
256
  /**
257
- * Describes the message apps.v1.DeleteAppCredentialRequest.
258
- * Use `create(DeleteAppCredentialRequestSchema)` to create a new message.
257
+ * Describes the message apps.v1.GetAppCredentialStructRequest.
258
+ * Use `create(GetAppCredentialStructRequestSchema)` to create a new message.
259
259
  */
260
- export const DeleteAppCredentialRequestSchema = /*@__PURE__*/
260
+ export const GetAppCredentialStructRequestSchema = /*@__PURE__*/
261
261
  messageDesc(file_apps_v1_apps_service, 31);
262
262
 
263
263
  /**
264
- * Describes the message apps.v1.DeleteAppCredentialResponse.
265
- * Use `create(DeleteAppCredentialResponseSchema)` to create a new message.
264
+ * Describes the message apps.v1.GetAppCredentialStructResponse.
265
+ * Use `create(GetAppCredentialStructResponseSchema)` to create a new message.
266
266
  */
267
- export const DeleteAppCredentialResponseSchema = /*@__PURE__*/
267
+ export const GetAppCredentialStructResponseSchema = /*@__PURE__*/
268
268
  messageDesc(file_apps_v1_apps_service, 32);
269
269
 
270
+ /**
271
+ * Describes the message apps.v1.AppInstallationServiceUninstallAppRequest.
272
+ * Use `create(AppInstallationServiceUninstallAppRequestSchema)` to create a new message.
273
+ */
274
+ export const AppInstallationServiceUninstallAppRequestSchema = /*@__PURE__*/
275
+ messageDesc(file_apps_v1_apps_service, 33);
276
+
277
+ /**
278
+ * Describes the message apps.v1.AppInstallationServiceUninstallAppResponse.
279
+ * Use `create(AppInstallationServiceUninstallAppResponseSchema)` to create a new message.
280
+ */
281
+ export const AppInstallationServiceUninstallAppResponseSchema = /*@__PURE__*/
282
+ messageDesc(file_apps_v1_apps_service, 34);
283
+
270
284
  /**
271
285
  * Describes the message apps.v1.IssueExchangeTicketRequest.
272
286
  * Use `create(IssueExchangeTicketRequestSchema)` to create a new message.
273
287
  */
274
288
  export const IssueExchangeTicketRequestSchema = /*@__PURE__*/
275
- messageDesc(file_apps_v1_apps_service, 33);
289
+ messageDesc(file_apps_v1_apps_service, 35);
276
290
 
277
291
  /**
278
292
  * Describes the message apps.v1.IssueExchangeTicketResponse.
279
293
  * Use `create(IssueExchangeTicketResponseSchema)` to create a new message.
280
294
  */
281
295
  export const IssueExchangeTicketResponseSchema = /*@__PURE__*/
282
- messageDesc(file_apps_v1_apps_service, 34);
296
+ messageDesc(file_apps_v1_apps_service, 36);
283
297
 
284
298
  /**
285
299
  * Describes the message apps.v1.RedeemExchangeTicketRequest.
286
300
  * Use `create(RedeemExchangeTicketRequestSchema)` to create a new message.
287
301
  */
288
302
  export const RedeemExchangeTicketRequestSchema = /*@__PURE__*/
289
- messageDesc(file_apps_v1_apps_service, 35);
303
+ messageDesc(file_apps_v1_apps_service, 37);
290
304
 
291
305
  /**
292
306
  * Describes the message apps.v1.RedeemExchangeTicketResponse.
293
307
  * Use `create(RedeemExchangeTicketResponseSchema)` to create a new message.
294
308
  */
295
309
  export const RedeemExchangeTicketResponseSchema = /*@__PURE__*/
296
- messageDesc(file_apps_v1_apps_service, 36);
310
+ messageDesc(file_apps_v1_apps_service, 38);
297
311
 
298
312
  /**
299
313
  * Describes the message apps.v1.RefreshScopedTokenRequest.
300
314
  * Use `create(RefreshScopedTokenRequestSchema)` to create a new message.
301
315
  */
302
316
  export const RefreshScopedTokenRequestSchema = /*@__PURE__*/
303
- messageDesc(file_apps_v1_apps_service, 37);
317
+ messageDesc(file_apps_v1_apps_service, 39);
304
318
 
305
319
  /**
306
320
  * Describes the message apps.v1.RefreshScopedTokenResponse.
307
321
  * Use `create(RefreshScopedTokenResponseSchema)` to create a new message.
308
322
  */
309
323
  export const RefreshScopedTokenResponseSchema = /*@__PURE__*/
310
- messageDesc(file_apps_v1_apps_service, 38);
324
+ messageDesc(file_apps_v1_apps_service, 40);
311
325
 
312
326
  /**
313
327
  * Describes the message apps.v1.AppStatus.
314
328
  * Use `create(AppStatusSchema)` to create a new message.
315
329
  */
316
330
  export const AppStatusSchema = /*@__PURE__*/
317
- messageDesc(file_apps_v1_apps_service, 39);
331
+ messageDesc(file_apps_v1_apps_service, 41);
318
332
 
319
333
  /**
320
334
  * Describes the message apps.v1.GetAppStatusRequest.
321
335
  * Use `create(GetAppStatusRequestSchema)` to create a new message.
322
336
  */
323
337
  export const GetAppStatusRequestSchema = /*@__PURE__*/
324
- messageDesc(file_apps_v1_apps_service, 40);
338
+ messageDesc(file_apps_v1_apps_service, 42);
325
339
 
326
340
  /**
327
341
  * Describes the message apps.v1.GetAppStatusResponse.
328
342
  * Use `create(GetAppStatusResponseSchema)` to create a new message.
329
343
  */
330
344
  export const GetAppStatusResponseSchema = /*@__PURE__*/
331
- messageDesc(file_apps_v1_apps_service, 41);
345
+ messageDesc(file_apps_v1_apps_service, 43);
332
346
 
333
347
  /**
334
348
  * Describes the message apps.v1.UpsertAppStatusRequest.
335
349
  * Use `create(UpsertAppStatusRequestSchema)` to create a new message.
336
350
  */
337
351
  export const UpsertAppStatusRequestSchema = /*@__PURE__*/
338
- messageDesc(file_apps_v1_apps_service, 42);
352
+ messageDesc(file_apps_v1_apps_service, 44);
339
353
 
340
354
  /**
341
355
  * Describes the message apps.v1.UpsertAppStatusResponse.
342
356
  * Use `create(UpsertAppStatusResponseSchema)` to create a new message.
343
357
  */
344
358
  export const UpsertAppStatusResponseSchema = /*@__PURE__*/
345
- messageDesc(file_apps_v1_apps_service, 43);
359
+ messageDesc(file_apps_v1_apps_service, 45);
346
360
 
347
361
  /**
348
362
  * Describes the message apps.v1.AppEvent.
349
363
  * Use `create(AppEventSchema)` to create a new message.
350
364
  */
351
365
  export const AppEventSchema = /*@__PURE__*/
352
- messageDesc(file_apps_v1_apps_service, 44);
366
+ messageDesc(file_apps_v1_apps_service, 46);
353
367
 
354
368
  /**
355
369
  * Describes the message apps.v1.ListAppEventsRequest.
356
370
  * Use `create(ListAppEventsRequestSchema)` to create a new message.
357
371
  */
358
372
  export const ListAppEventsRequestSchema = /*@__PURE__*/
359
- messageDesc(file_apps_v1_apps_service, 45);
373
+ messageDesc(file_apps_v1_apps_service, 47);
360
374
 
361
375
  /**
362
376
  * Describes the message apps.v1.ListAppEventsResponse.
363
377
  * Use `create(ListAppEventsResponseSchema)` to create a new message.
364
378
  */
365
379
  export const ListAppEventsResponseSchema = /*@__PURE__*/
366
- messageDesc(file_apps_v1_apps_service, 46);
380
+ messageDesc(file_apps_v1_apps_service, 48);
367
381
 
368
382
  /**
369
383
  * @generated from service apps.v1.AppsService
@@ -372,9 +386,9 @@ export const AppsService = /*@__PURE__*/
372
386
  serviceDesc(file_apps_v1_apps_service, 0);
373
387
 
374
388
  /**
375
- * @generated from service apps.v1.AppCredentialsService
389
+ * @generated from service apps.v1.AppInstallationService
376
390
  */
377
- export const AppCredentialsService = /*@__PURE__*/
391
+ export const AppInstallationService = /*@__PURE__*/
378
392
  serviceDesc(file_apps_v1_apps_service, 1);
379
393
 
380
394
  /**