service.proto 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630
  1. // Copyright 2022 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.cloud.iap.v1;
  16. import "google/api/annotations.proto";
  17. import "google/api/client.proto";
  18. import "google/api/field_behavior.proto";
  19. import "google/api/resource.proto";
  20. import "google/iam/v1/iam_policy.proto";
  21. import "google/iam/v1/policy.proto";
  22. import "google/protobuf/duration.proto";
  23. import "google/protobuf/empty.proto";
  24. import "google/protobuf/field_mask.proto";
  25. import "google/protobuf/wrappers.proto";
  26. option csharp_namespace = "Google.Cloud.Iap.V1";
  27. option go_package = "google.golang.org/genproto/googleapis/cloud/iap/v1;iap";
  28. option java_multiple_files = true;
  29. option java_package = "com.google.cloud.iap.v1";
  30. option php_namespace = "Google\\Cloud\\Iap\\V1";
  31. option ruby_package = "Google::Cloud::Iap::V1";
  32. option (google.api.resource_definition) = {
  33. type: "iap.googleapis.com/TunnelLocation"
  34. pattern: "projects/{project}/iap_tunnel/locations/{location}"
  35. };
  36. // APIs for Identity-Aware Proxy Admin configurations.
  37. service IdentityAwareProxyAdminService {
  38. option (google.api.default_host) = "iap.googleapis.com";
  39. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  40. // Sets the access control policy for an Identity-Aware Proxy protected
  41. // resource. Replaces any existing policy.
  42. // More information about managing access via IAP can be found at:
  43. // https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api
  44. rpc SetIamPolicy(google.iam.v1.SetIamPolicyRequest) returns (google.iam.v1.Policy) {
  45. option (google.api.http) = {
  46. post: "/v1/{resource=**}:setIamPolicy"
  47. body: "*"
  48. };
  49. }
  50. // Gets the access control policy for an Identity-Aware Proxy protected
  51. // resource.
  52. // More information about managing access via IAP can be found at:
  53. // https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api
  54. rpc GetIamPolicy(google.iam.v1.GetIamPolicyRequest) returns (google.iam.v1.Policy) {
  55. option (google.api.http) = {
  56. post: "/v1/{resource=**}:getIamPolicy"
  57. body: "*"
  58. };
  59. }
  60. // Returns permissions that a caller has on the Identity-Aware Proxy protected
  61. // resource.
  62. // More information about managing access via IAP can be found at:
  63. // https://cloud.google.com/iap/docs/managing-access#managing_access_via_the_api
  64. rpc TestIamPermissions(google.iam.v1.TestIamPermissionsRequest) returns (google.iam.v1.TestIamPermissionsResponse) {
  65. option (google.api.http) = {
  66. post: "/v1/{resource=**}:testIamPermissions"
  67. body: "*"
  68. };
  69. }
  70. // Gets the IAP settings on a particular IAP protected resource.
  71. rpc GetIapSettings(GetIapSettingsRequest) returns (IapSettings) {
  72. option (google.api.http) = {
  73. get: "/v1/{name=**}:iapSettings"
  74. };
  75. }
  76. // Updates the IAP settings on a particular IAP protected resource. It
  77. // replaces all fields unless the `update_mask` is set.
  78. rpc UpdateIapSettings(UpdateIapSettingsRequest) returns (IapSettings) {
  79. option (google.api.http) = {
  80. patch: "/v1/{iap_settings.name=**}:iapSettings"
  81. body: "iap_settings"
  82. };
  83. }
  84. // Lists the existing TunnelDestGroups. To group across all locations, use a
  85. // `-` as the location ID. For example:
  86. // `/v1/projects/123/iap_tunnel/locations/-/destGroups`
  87. rpc ListTunnelDestGroups(ListTunnelDestGroupsRequest) returns (ListTunnelDestGroupsResponse) {
  88. option (google.api.http) = {
  89. get: "/v1/{parent=projects/*/iap_tunnel/locations/*}/destGroups"
  90. };
  91. option (google.api.method_signature) = "parent";
  92. }
  93. // Creates a new TunnelDestGroup.
  94. rpc CreateTunnelDestGroup(CreateTunnelDestGroupRequest) returns (TunnelDestGroup) {
  95. option (google.api.http) = {
  96. post: "/v1/{parent=projects/*/iap_tunnel/locations/*}/destGroups"
  97. body: "tunnel_dest_group"
  98. };
  99. option (google.api.method_signature) = "parent,tunnel_dest_group,tunnel_dest_group_id";
  100. }
  101. // Retrieves an existing TunnelDestGroup.
  102. rpc GetTunnelDestGroup(GetTunnelDestGroupRequest) returns (TunnelDestGroup) {
  103. option (google.api.http) = {
  104. get: "/v1/{name=projects/*/iap_tunnel/locations/*/destGroups/*}"
  105. };
  106. option (google.api.method_signature) = "name";
  107. }
  108. // Deletes a TunnelDestGroup.
  109. rpc DeleteTunnelDestGroup(DeleteTunnelDestGroupRequest) returns (google.protobuf.Empty) {
  110. option (google.api.http) = {
  111. delete: "/v1/{name=projects/*/iap_tunnel/locations/*/destGroups/*}"
  112. };
  113. option (google.api.method_signature) = "name";
  114. }
  115. // Updates a TunnelDestGroup.
  116. rpc UpdateTunnelDestGroup(UpdateTunnelDestGroupRequest) returns (TunnelDestGroup) {
  117. option (google.api.http) = {
  118. patch: "/v1/{tunnel_dest_group.name=projects/*/iap_tunnel/locations/*/destGroups/*}"
  119. body: "tunnel_dest_group"
  120. };
  121. option (google.api.method_signature) = "tunnel_dest_group,update_mask";
  122. }
  123. }
  124. // The request to ListTunnelDestGroups.
  125. message ListTunnelDestGroupsRequest {
  126. // Required. Google Cloud Project ID and location.
  127. // In the following format:
  128. // `projects/{project_number/id}/iap_tunnel/locations/{location}`.
  129. // A `-` can be used for the location to group across all locations.
  130. string parent = 1 [
  131. (google.api.field_behavior) = REQUIRED,
  132. (google.api.resource_reference) = {
  133. type: "iap.googleapis.com/TunnelLocation"
  134. }
  135. ];
  136. // The maximum number of groups to return. The service might return fewer than
  137. // this value.
  138. // If unspecified, at most 100 groups are returned.
  139. // The maximum value is 1000; values above 1000 are coerced to 1000.
  140. int32 page_size = 2;
  141. // A page token, received from a previous `ListTunnelDestGroups`
  142. // call. Provide this to retrieve the subsequent page.
  143. //
  144. // When paginating, all other parameters provided to
  145. // `ListTunnelDestGroups` must match the call that provided the page
  146. // token.
  147. string page_token = 3;
  148. }
  149. // The response from ListTunnelDestGroups.
  150. message ListTunnelDestGroupsResponse {
  151. // TunnelDestGroup existing in the project.
  152. repeated TunnelDestGroup tunnel_dest_groups = 1;
  153. // A token that you can send as `page_token` to retrieve the next page.
  154. // If this field is omitted, there are no subsequent pages.
  155. string next_page_token = 2;
  156. }
  157. // The request to CreateTunnelDestGroup.
  158. message CreateTunnelDestGroupRequest {
  159. // Required. Google Cloud Project ID and location.
  160. // In the following format:
  161. // `projects/{project_number/id}/iap_tunnel/locations/{location}`.
  162. string parent = 1 [
  163. (google.api.field_behavior) = REQUIRED,
  164. (google.api.resource_reference) = {
  165. child_type: "iap.googleapis.com/TunnelDestGroup"
  166. }
  167. ];
  168. // Required. The TunnelDestGroup to create.
  169. TunnelDestGroup tunnel_dest_group = 2 [(google.api.field_behavior) = REQUIRED];
  170. // Required. The ID to use for the TunnelDestGroup, which becomes the final component of
  171. // the resource name.
  172. //
  173. // This value must be 4-63 characters, and valid characters
  174. // are `[a-z][0-9]-`.
  175. string tunnel_dest_group_id = 3 [(google.api.field_behavior) = REQUIRED];
  176. }
  177. // The request to GetTunnelDestGroup.
  178. message GetTunnelDestGroupRequest {
  179. // Required. Name of the TunnelDestGroup to be fetched.
  180. // In the following format:
  181. // `projects/{project_number/id}/iap_tunnel/locations/{location}/destGroups/{dest_group}`.
  182. string name = 1 [
  183. (google.api.field_behavior) = REQUIRED,
  184. (google.api.resource_reference) = {
  185. type: "iap.googleapis.com/TunnelDestGroup"
  186. }
  187. ];
  188. }
  189. // The request to DeleteTunnelDestGroup.
  190. message DeleteTunnelDestGroupRequest {
  191. // Required. Name of the TunnelDestGroup to delete.
  192. // In the following format:
  193. // `projects/{project_number/id}/iap_tunnel/locations/{location}/destGroups/{dest_group}`.
  194. string name = 1 [
  195. (google.api.field_behavior) = REQUIRED,
  196. (google.api.resource_reference) = {
  197. type: "iap.googleapis.com/TunnelDestGroup"
  198. }
  199. ];
  200. }
  201. // The request to UpdateTunnelDestGroup.
  202. message UpdateTunnelDestGroupRequest {
  203. // Required. The new values for the TunnelDestGroup.
  204. TunnelDestGroup tunnel_dest_group = 1 [(google.api.field_behavior) = REQUIRED];
  205. // A field mask that specifies which IAP settings to update.
  206. // If omitted, then all of the settings are updated. See
  207. // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
  208. google.protobuf.FieldMask update_mask = 2;
  209. }
  210. // A TunnelDestGroup.
  211. message TunnelDestGroup {
  212. option (google.api.resource) = {
  213. type: "iap.googleapis.com/TunnelDestGroup"
  214. pattern: "projects/{project}/iap_tunnel/locations/{location}/destGroups/{dest_group}"
  215. };
  216. // Required. Immutable. Identifier for the TunnelDestGroup. Must be unique within the
  217. // project.
  218. string name = 1 [
  219. (google.api.field_behavior) = REQUIRED,
  220. (google.api.field_behavior) = IMMUTABLE
  221. ];
  222. // null List of CIDRs that this group applies to.
  223. repeated string cidrs = 2 [(google.api.field_behavior) = UNORDERED_LIST];
  224. // null List of FQDNs that this group applies to.
  225. repeated string fqdns = 3 [(google.api.field_behavior) = UNORDERED_LIST];
  226. }
  227. // API to programmatically create, list and retrieve Identity Aware Proxy (IAP)
  228. // OAuth brands; and create, retrieve, delete and reset-secret of IAP OAuth
  229. // clients.
  230. service IdentityAwareProxyOAuthService {
  231. option (google.api.default_host) = "iap.googleapis.com";
  232. option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
  233. // Lists the existing brands for the project.
  234. rpc ListBrands(ListBrandsRequest) returns (ListBrandsResponse) {
  235. option (google.api.http) = {
  236. get: "/v1/{parent=projects/*}/brands"
  237. };
  238. }
  239. // Constructs a new OAuth brand for the project if one does not exist.
  240. // The created brand is "internal only", meaning that OAuth clients created
  241. // under it only accept requests from users who belong to the same Google
  242. // Workspace organization as the project. The brand is created in an
  243. // un-reviewed status. NOTE: The "internal only" status can be manually
  244. // changed in the Google Cloud Console. Requires that a brand does not already
  245. // exist for the project, and that the specified support email is owned by the
  246. // caller.
  247. rpc CreateBrand(CreateBrandRequest) returns (Brand) {
  248. option (google.api.http) = {
  249. post: "/v1/{parent=projects/*}/brands"
  250. body: "brand"
  251. };
  252. }
  253. // Retrieves the OAuth brand of the project.
  254. rpc GetBrand(GetBrandRequest) returns (Brand) {
  255. option (google.api.http) = {
  256. get: "/v1/{name=projects/*/brands/*}"
  257. };
  258. }
  259. // Creates an Identity Aware Proxy (IAP) OAuth client. The client is owned
  260. // by IAP. Requires that the brand for the project exists and that it is
  261. // set for internal-only use.
  262. rpc CreateIdentityAwareProxyClient(CreateIdentityAwareProxyClientRequest) returns (IdentityAwareProxyClient) {
  263. option (google.api.http) = {
  264. post: "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
  265. body: "identity_aware_proxy_client"
  266. };
  267. }
  268. // Lists the existing clients for the brand.
  269. rpc ListIdentityAwareProxyClients(ListIdentityAwareProxyClientsRequest) returns (ListIdentityAwareProxyClientsResponse) {
  270. option (google.api.http) = {
  271. get: "/v1/{parent=projects/*/brands/*}/identityAwareProxyClients"
  272. };
  273. }
  274. // Retrieves an Identity Aware Proxy (IAP) OAuth client.
  275. // Requires that the client is owned by IAP.
  276. rpc GetIdentityAwareProxyClient(GetIdentityAwareProxyClientRequest) returns (IdentityAwareProxyClient) {
  277. option (google.api.http) = {
  278. get: "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
  279. };
  280. }
  281. // Resets an Identity Aware Proxy (IAP) OAuth client secret. Useful if the
  282. // secret was compromised. Requires that the client is owned by IAP.
  283. rpc ResetIdentityAwareProxyClientSecret(ResetIdentityAwareProxyClientSecretRequest) returns (IdentityAwareProxyClient) {
  284. option (google.api.http) = {
  285. post: "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}:resetSecret"
  286. body: "*"
  287. };
  288. }
  289. // Deletes an Identity Aware Proxy (IAP) OAuth client. Useful for removing
  290. // obsolete clients, managing the number of clients in a given project, and
  291. // cleaning up after tests. Requires that the client is owned by IAP.
  292. rpc DeleteIdentityAwareProxyClient(DeleteIdentityAwareProxyClientRequest) returns (google.protobuf.Empty) {
  293. option (google.api.http) = {
  294. delete: "/v1/{name=projects/*/brands/*/identityAwareProxyClients/*}"
  295. };
  296. }
  297. }
  298. // The request sent to GetIapSettings.
  299. message GetIapSettingsRequest {
  300. // Required. The resource name for which to retrieve the settings.
  301. // Authorization: Requires the `getSettings` permission for the associated
  302. // resource.
  303. string name = 1 [(google.api.field_behavior) = REQUIRED];
  304. }
  305. // The request sent to UpdateIapSettings.
  306. message UpdateIapSettingsRequest {
  307. // Required. The new values for the IAP settings to be updated.
  308. // Authorization: Requires the `updateSettings` permission for the associated
  309. // resource.
  310. IapSettings iap_settings = 1 [(google.api.field_behavior) = REQUIRED];
  311. // The field mask specifying which IAP settings should be updated.
  312. // If omitted, the all of the settings are updated. See
  313. // https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#fieldmask
  314. google.protobuf.FieldMask update_mask = 2;
  315. }
  316. // The IAP configurable settings.
  317. message IapSettings {
  318. // Required. The resource name of the IAP protected resource.
  319. string name = 1 [(google.api.field_behavior) = REQUIRED];
  320. // Top level wrapper for all access related setting in IAP
  321. AccessSettings access_settings = 5;
  322. // Top level wrapper for all application related settings in IAP
  323. ApplicationSettings application_settings = 6;
  324. }
  325. // Access related settings for IAP protected apps.
  326. message AccessSettings {
  327. // GCIP claims and endpoint configurations for 3p identity providers.
  328. GcipSettings gcip_settings = 1;
  329. // Configuration to allow cross-origin requests via IAP.
  330. CorsSettings cors_settings = 2;
  331. // Settings to configure IAP's OAuth behavior.
  332. OAuthSettings oauth_settings = 3;
  333. // Settings to configure reauthentication policies in IAP.
  334. ReauthSettings reauth_settings = 6;
  335. }
  336. // Allows customers to configure tenant_id for GCIP instance per-app.
  337. message GcipSettings {
  338. // GCIP tenant ids that are linked to the IAP resource.
  339. // tenant_ids could be a string beginning with a number character to indicate
  340. // authenticating with GCIP tenant flow, or in the format of _<ProjectNumber>
  341. // to indicate authenticating with GCIP agent flow.
  342. // If agent flow is used, tenant_ids should only contain one single element,
  343. // while for tenant flow, tenant_ids can contain multiple elements.
  344. repeated string tenant_ids = 1;
  345. // Login page URI associated with the GCIP tenants.
  346. // Typically, all resources within the same project share the same login page,
  347. // though it could be overridden at the sub resource level.
  348. google.protobuf.StringValue login_page_uri = 2;
  349. }
  350. // Allows customers to configure HTTP request paths that'll allow HTTP OPTIONS
  351. // call to bypass authentication and authorization.
  352. message CorsSettings {
  353. // Configuration to allow HTTP OPTIONS calls to skip authorization. If
  354. // undefined, IAP will not apply any special logic to OPTIONS requests.
  355. google.protobuf.BoolValue allow_http_options = 1;
  356. }
  357. // Configuration for OAuth login&consent flow behavior as well as for OAuth
  358. // Credentials.
  359. message OAuthSettings {
  360. // Domain hint to send as hd=? parameter in OAuth request flow. Enables
  361. // redirect to primary IDP by skipping Google's login screen.
  362. // https://developers.google.com/identity/protocols/OpenIDConnect#hd-param
  363. // Note: IAP does not verify that the id token's hd claim matches this value
  364. // since access behavior is managed by IAM policies.
  365. google.protobuf.StringValue login_hint = 2;
  366. }
  367. // Configuration for IAP reauthentication policies.
  368. message ReauthSettings {
  369. // Types of reauthentication methods supported by IAP.
  370. enum Method {
  371. // Reauthentication disabled.
  372. METHOD_UNSPECIFIED = 0;
  373. // Mimics the behavior as if the user had logged out and tried to log in
  374. // again. Users with 2SV (2-step verification) enabled see their 2SV
  375. // challenges if they did not opt to have their second factor responses
  376. // saved. Apps Core (GSuites) admins can configure settings to disable 2SV
  377. // cookies and require 2SV for all Apps Core users in their domains.
  378. LOGIN = 1;
  379. // User must type their password.
  380. PASSWORD = 2;
  381. // User must use their secure key 2nd factor device.
  382. SECURE_KEY = 3;
  383. }
  384. // Type of policy in the case of hierarchial policies.
  385. enum PolicyType {
  386. // Default value. This value is unused.
  387. POLICY_TYPE_UNSPECIFIED = 0;
  388. // This policy acts as a minimum to other policies, lower in the hierarchy.
  389. // Effective policy may only be the same or stricter.
  390. MINIMUM = 1;
  391. // This policy acts as a default if no other reauth policy is set.
  392. DEFAULT = 2;
  393. }
  394. // Reauth method required by the policy.
  395. Method method = 1;
  396. // Reauth session lifetime, how long before a user has to reauthenticate
  397. // again.
  398. google.protobuf.Duration max_age = 2;
  399. // How IAP determines the effective policy in cases of hierarchial policies.
  400. // Policies are merged from higher in the hierarchy to lower in the hierarchy.
  401. PolicyType policy_type = 3;
  402. }
  403. // Wrapper over application specific settings for IAP.
  404. message ApplicationSettings {
  405. // Settings to configure IAP's behavior for a CSM mesh.
  406. CsmSettings csm_settings = 1;
  407. // Customization for Access Denied page.
  408. AccessDeniedPageSettings access_denied_page_settings = 2;
  409. // The Domain value to set for cookies generated by IAP. This value is not
  410. // validated by the API, but will be ignored at runtime if invalid.
  411. google.protobuf.StringValue cookie_domain = 3;
  412. }
  413. // Configuration for RCTokens generated for CSM workloads protected by IAP.
  414. // RCTokens are IAP generated JWTs that can be verified at the application. The
  415. // RCToken is primarily used for ISTIO deployments, and can be scoped to a
  416. // single mesh by configuring the audience field accordingly
  417. message CsmSettings {
  418. // Audience claim set in the generated RCToken. This value is not validated by
  419. // IAP.
  420. google.protobuf.StringValue rctoken_aud = 1;
  421. }
  422. // Custom content configuration for access denied page.
  423. // IAP allows customers to define a custom URI to use as the error page when
  424. // access is denied to users. If IAP prevents access to this page, the default
  425. // IAP error page will be displayed instead.
  426. message AccessDeniedPageSettings {
  427. // The URI to be redirected to when access is denied.
  428. google.protobuf.StringValue access_denied_page_uri = 1;
  429. // Whether to generate a troubleshooting URL on access denied events to this
  430. // application.
  431. google.protobuf.BoolValue generate_troubleshooting_uri = 2;
  432. }
  433. // The request sent to ListBrands.
  434. message ListBrandsRequest {
  435. // Required. GCP Project number/id.
  436. // In the following format: projects/{project_number/id}.
  437. string parent = 1 [(google.api.field_behavior) = REQUIRED];
  438. }
  439. // Response message for ListBrands.
  440. message ListBrandsResponse {
  441. // Brands existing in the project.
  442. repeated Brand brands = 1;
  443. }
  444. // The request sent to CreateBrand.
  445. message CreateBrandRequest {
  446. // Required. GCP Project number/id under which the brand is to be created.
  447. // In the following format: projects/{project_number/id}.
  448. string parent = 1 [(google.api.field_behavior) = REQUIRED];
  449. // Required. The brand to be created.
  450. Brand brand = 2 [(google.api.field_behavior) = REQUIRED];
  451. }
  452. // The request sent to GetBrand.
  453. message GetBrandRequest {
  454. // Required. Name of the brand to be fetched.
  455. // In the following format: projects/{project_number/id}/brands/{brand}.
  456. string name = 1 [(google.api.field_behavior) = REQUIRED];
  457. }
  458. // The request sent to ListIdentityAwareProxyClients.
  459. message ListIdentityAwareProxyClientsRequest {
  460. // Required. Full brand path.
  461. // In the following format: projects/{project_number/id}/brands/{brand}.
  462. string parent = 1 [(google.api.field_behavior) = REQUIRED];
  463. // The maximum number of clients to return. The service may return fewer than
  464. // this value.
  465. // If unspecified, at most 100 clients will be returned.
  466. // The maximum value is 1000; values above 1000 will be coerced to 1000.
  467. int32 page_size = 2;
  468. // A page token, received from a previous `ListIdentityAwareProxyClients`
  469. // call. Provide this to retrieve the subsequent page.
  470. //
  471. // When paginating, all other parameters provided to
  472. // `ListIdentityAwareProxyClients` must match the call that provided the page
  473. // token.
  474. string page_token = 3;
  475. }
  476. // Response message for ListIdentityAwareProxyClients.
  477. message ListIdentityAwareProxyClientsResponse {
  478. // Clients existing in the brand.
  479. repeated IdentityAwareProxyClient identity_aware_proxy_clients = 1;
  480. // A token, which can be send as `page_token` to retrieve the next page.
  481. // If this field is omitted, there are no subsequent pages.
  482. string next_page_token = 2;
  483. }
  484. // The request sent to CreateIdentityAwareProxyClient.
  485. message CreateIdentityAwareProxyClientRequest {
  486. // Required. Path to create the client in.
  487. // In the following format:
  488. // projects/{project_number/id}/brands/{brand}.
  489. // The project must belong to a G Suite account.
  490. string parent = 1 [(google.api.field_behavior) = REQUIRED];
  491. // Required. Identity Aware Proxy Client to be created.
  492. IdentityAwareProxyClient identity_aware_proxy_client = 2 [(google.api.field_behavior) = REQUIRED];
  493. }
  494. // The request sent to GetIdentityAwareProxyClient.
  495. message GetIdentityAwareProxyClientRequest {
  496. // Required. Name of the Identity Aware Proxy client to be fetched.
  497. // In the following format:
  498. // projects/{project_number/id}/brands/{brand}/identityAwareProxyClients/{client_id}.
  499. string name = 1 [(google.api.field_behavior) = REQUIRED];
  500. }
  501. // The request sent to ResetIdentityAwareProxyClientSecret.
  502. message ResetIdentityAwareProxyClientSecretRequest {
  503. // Required. Name of the Identity Aware Proxy client to that will have its
  504. // secret reset. In the following format:
  505. // projects/{project_number/id}/brands/{brand}/identityAwareProxyClients/{client_id}.
  506. string name = 1 [(google.api.field_behavior) = REQUIRED];
  507. }
  508. // The request sent to DeleteIdentityAwareProxyClient.
  509. message DeleteIdentityAwareProxyClientRequest {
  510. // Required. Name of the Identity Aware Proxy client to be deleted.
  511. // In the following format:
  512. // projects/{project_number/id}/brands/{brand}/identityAwareProxyClients/{client_id}.
  513. string name = 1 [(google.api.field_behavior) = REQUIRED];
  514. }
  515. // OAuth brand data.
  516. // NOTE: Only contains a portion of the data that describes a brand.
  517. message Brand {
  518. // Output only. Identifier of the brand.
  519. // NOTE: GCP project number achieves the same brand identification purpose as
  520. // only one brand per project can be created.
  521. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  522. // Support email displayed on the OAuth consent screen.
  523. string support_email = 2;
  524. // Application name displayed on OAuth consent screen.
  525. string application_title = 3;
  526. // Output only. Whether the brand is only intended for usage inside the
  527. // G Suite organization only.
  528. bool org_internal_only = 4 [(google.api.field_behavior) = OUTPUT_ONLY];
  529. }
  530. // Contains the data that describes an Identity Aware Proxy owned client.
  531. message IdentityAwareProxyClient {
  532. // Output only. Unique identifier of the OAuth client.
  533. string name = 1 [(google.api.field_behavior) = OUTPUT_ONLY];
  534. // Output only. Client secret of the OAuth client.
  535. string secret = 2 [(google.api.field_behavior) = OUTPUT_ONLY];
  536. // Human-friendly name given to the OAuth client.
  537. string display_name = 3;
  538. }