@@ -23,6 +23,7 @@ import {
2323 CallOptions ,
2424 Descriptors ,
2525 ClientOptions ,
26+ GrpcClientOptions ,
2627 LROperation ,
2728 PaginationCallback ,
2829 GaxCall ,
@@ -72,7 +73,7 @@ export class ServiceManagerClient {
7273 *
7374 * @param {object } [options] - The configuration object.
7475 * The options accepted by the constructor are described in detail
75- * in [this document](https://github.com/googleapis/gax-nodejs/blob/master /client-libraries.md#creating-the-client-instance).
76+ * in [this document](https://github.com/googleapis/gax-nodejs/blob/main /client-libraries.md#creating-the-client-instance).
7677 * The common options are:
7778 * @param {object } [options.credentials] - Credentials object.
7879 * @param {string } [options.credentials.client_email]
@@ -95,11 +96,10 @@ export class ServiceManagerClient {
9596 * API remote host.
9697 * @param {gax.ClientConfig } [options.clientConfig] - Client configuration override.
9798 * Follows the structure of {@link gapicConfig}.
98- * @param {boolean } [options.fallback] - Use HTTP fallback mode.
99- * In fallback mode, a special browser-compatible transport implementation is used
100- * instead of gRPC transport. In browser context (if the `window` object is defined)
101- * the fallback mode is enabled automatically; set `options.fallback` to `false`
102- * if you need to override this behavior.
99+ * @param {boolean | "rest" } [options.fallback] - Use HTTP fallback mode.
100+ * Pass "rest" to use HTTP/1.1 REST API instead of gRPC.
101+ * For more information, please check the
102+ * {@link https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#http11-rest-api-mode documentation}.
103103 */
104104 constructor ( opts ?: ClientOptions ) {
105105 // Ensure that options include all the required fields.
@@ -184,16 +184,57 @@ export class ServiceManagerClient {
184184 } ;
185185
186186 const protoFilesRoot = this . _gaxModule . protobuf . Root . fromJSON ( jsonProtos ) ;
187-
188187 // This API contains "long-running operations", which return a
189188 // an Operation object that allows for tracking of the operation,
190189 // rather than holding a request open.
191-
190+ const lroOptions : GrpcClientOptions = {
191+ auth : this . auth ,
192+ grpc : 'grpc' in this . _gaxGrpc ? this . _gaxGrpc . grpc : undefined ,
193+ } ;
194+ if ( opts . fallback === 'rest' ) {
195+ lroOptions . protoJson = protoFilesRoot ;
196+ lroOptions . httpRules = [
197+ {
198+ selector : 'google.iam.v1.IAMPolicy.GetIamPolicy' ,
199+ post : '/v1/{resource=services/*}:getIamPolicy' ,
200+ body : '*' ,
201+ additional_bindings : [
202+ {
203+ post : '/v1/{resource=services/*/consumers/*}:getIamPolicy' ,
204+ body : '*' ,
205+ } ,
206+ ] ,
207+ } ,
208+ {
209+ selector : 'google.iam.v1.IAMPolicy.SetIamPolicy' ,
210+ post : '/v1/{resource=services/*}:setIamPolicy' ,
211+ body : '*' ,
212+ additional_bindings : [
213+ {
214+ post : '/v1/{resource=services/*/consumers/*}:setIamPolicy' ,
215+ body : '*' ,
216+ } ,
217+ ] ,
218+ } ,
219+ {
220+ selector : 'google.iam.v1.IAMPolicy.TestIamPermissions' ,
221+ post : '/v1/{resource=services/*}:testIamPermissions' ,
222+ body : '*' ,
223+ additional_bindings : [
224+ {
225+ post : '/v1/{resource=services/*/consumers/*}:testIamPermissions' ,
226+ body : '*' ,
227+ } ,
228+ ] ,
229+ } ,
230+ {
231+ selector : 'google.longrunning.Operations.ListOperations' ,
232+ get : '/v1/operations' ,
233+ } ,
234+ ] ;
235+ }
192236 this . operationsClient = this . _gaxModule
193- . lro ( {
194- auth : this . auth ,
195- grpc : 'grpc' in this . _gaxGrpc ? this . _gaxGrpc . grpc : undefined ,
196- } )
237+ . lro ( lroOptions )
197238 . operationsClient ( opts ) ;
198239 const createServiceResponse = protoFilesRoot . lookup (
199240 '.google.api.servicemanagement.v1.ManagedService'
0 commit comments