text:
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
// the License. You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
// an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
// specific language governing permissions and limitations under the License.

//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by google-apis-code-generator 1.5.1
//     C# generator version: 1.38.0
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

/**
 * \brief
 *   Cloud TPU API Version v1alpha1
 *
 * \section ApiInfo API Version Information
 *

 *
API
 *          Cloud TPU API
 *
API Versionv1alpha1
 *
API Rev20181219 (1448)
 *
API Docs
 *
 *              https://cloud.google.com/tpu/
 *
Discovery Nametpu
 *

 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Cloud TPU API can be found at
 * https://cloud.google.com/tpu/.
 *
 * For more information about the Google APIs Client Library for .NET, see
 *
 * https://developers.google.com/api-client-library/dotnet/get_started
 */

namespace Google.Apis.TPU.v1alpha1
{
    /// The TPU Service.
    public class TPUService : Google.Apis.Services.BaseClientService
    {
        /// The API version.
        public const string Version = "v1alpha1";

        /// The discovery version used to generate this service.
        public static Google.Apis.Discovery.DiscoveryVersion DiscoveryVersionUsed =
            Google.Apis.Discovery.DiscoveryVersion.Version_1_0;

        /// Constructs a new service.
        public TPUService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// Constructs a new service.
        /// <param name="initializer">The service initializer.</param>
        public TPUService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            projects = new ProjectsResource(this);
        }

        /// Gets the service supported features.
        public override System.Collections.Generic.IList<string> Features
        {
            get { return new string[0]; }
        }

        /// Gets the service name.
        public override string Name
        {
            get { return "tpu"; }
        }

        /// Gets the service base URI.
        public override string BaseUri
        {
            get { return "https://tpu.googleapis.com/"; }
        }

        /// Gets the service base path.
        public override string BasePath
        {
            get { return ""; }
        }

        #if !NET40
        /// Gets the batch base URI; <c>null</c> if unspecified.
        public override string BatchUri
        {
            get { return "https://tpu.googleapis.com/batch"; }
        }

        /// Gets the batch base path; <c>null</c> if unspecified.
        public override string BatchPath
        {
            get { return "batch"; }
        }
        #endif

        /// Available OAuth 2.0 scopes for use with the Cloud TPU API.
        public class Scope
        {
            /// View and manage your data across Google Cloud Platform services
            public static string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

        }

        /// Available OAuth 2.0 scope constants for use with the Cloud TPU API.
        public static class ScopeConstants
        {
            /// View and manage your data across Google Cloud Platform services
            public const string CloudPlatform = "https://www.googleapis.com/auth/cloud-platform";

        }

        private readonly ProjectsResource projects;

        /// Gets the Projects resource.
        public virtual ProjectsResource Projects
        {
            get { return projects; }
        }
    }

    ///A base abstract class for TPU requests.
    public abstract class TPUBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///Constructs a new TPUBaseServiceRequest instance.
        protected TPUBaseServiceRequest(Google.Apis.Services.IClientService service)
            : base(service)
        {
        }

        /// V1 error format.
        [Google.Apis.Util.RequestParameterAttribute("$.xgafv", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<XgafvEnum> Xgafv { get; set; }

        /// V1 error format.
        public enum XgafvEnum
        {
            /// v1 error format
            [Google.Apis.Util.StringValueAttribute("1")]
            Value1,
            /// v2 error format
            [Google.Apis.Util.StringValueAttribute("2")]
            Value2,
        }

        /// OAuth access token.
        [Google.Apis.Util.RequestParameterAttribute("access_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string AccessToken { get; set; }

        /// Data format for response.
        /// [default: json]
        [Google.Apis.Util.RequestParameterAttribute("alt", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<AltEnum> Alt { get; set; }

        /// Data format for response.
        public enum AltEnum
        {
            /// Responses with Content-Type of application/json
            [Google.Apis.Util.StringValueAttribute("json")]
            Json,
            /// Media download with context-dependent Content-Type
            [Google.Apis.Util.StringValueAttribute("media")]
            Media,
            /// Responses with Content-Type of application/x-protobuf
            [Google.Apis.Util.StringValueAttribute("proto")]
            Proto,
        }

        /// JSONP
        [Google.Apis.Util.RequestParameterAttribute("callback", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Callback { get; set; }

        /// Selector specifying which fields to include in a partial response.
        [Google.Apis.Util.RequestParameterAttribute("fields", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Fields { get; set; }

        /// API key. Your API key identifies your project and provides you with API access, quota, and reports.
        /// Required unless you provide an OAuth 2.0 token.
        [Google.Apis.Util.RequestParameterAttribute("key", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string Key { get; set; }

        /// OAuth 2.0 token for the current user.
        [Google.Apis.Util.RequestParameterAttribute("oauth_token", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string OauthToken { get; set; }

        /// Returns response with indentations and line breaks.
        /// [default: true]
        [Google.Apis.Util.RequestParameterAttribute("prettyPrint", Google.Apis.Util.RequestParameterType.Query)]
        public virtual System.Nullable<bool> PrettyPrint { get; set; }

        /// Available to use for quota purposes for server-side applications. Can be any arbitrary string
        /// assigned to a user, but should not exceed 40 characters.
        [Google.Apis.Util.RequestParameterAttribute("quotaUser", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string QuotaUser { get; set; }

        /// Legacy upload protocol for media (e.g. "media", "multipart").
        [Google.Apis.Util.RequestParameterAttribute("uploadType", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadType { get; set; }

        /// Upload protocol for media (e.g. "raw", "multipart").
        [Google.Apis.Util.RequestParameterAttribute("upload_protocol", Google.Apis.Util.RequestParameterType.Query)]
        public virtual string UploadProtocol { get; set; }

        /// Initializes TPU parameter list.
        protected override void InitParameters()
        {
            base.InitParameters();

            RequestParameters.Add(
                "$.xgafv", new Google.Apis.Discovery.Parameter
                {
                    Name = "$.xgafv",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "access_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "access_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "alt", new Google.Apis.Discovery.Parameter
                {
                    Name = "alt",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "json",
                    Pattern = null,
                });
            RequestParameters.Add(
                "callback", new Google.Apis.Discovery.Parameter
                {
                    Name = "callback",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "fields", new Google.Apis.Discovery.Parameter
                {
                    Name = "fields",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "key", new Google.Apis.Discovery.Parameter
                {
                    Name = "key",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "oauth_token", new Google.Apis.Discovery.Parameter
                {
                    Name = "oauth_token",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "prettyPrint", new Google.Apis.Discovery.Parameter
                {
                    Name = "prettyPrint",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = "true",
                    Pattern = null,
                });
            RequestParameters.Add(
                "quotaUser", new Google.Apis.Discovery.Parameter
                {
                    Name = "quotaUser",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "uploadType", new Google.Apis.Discovery.Parameter
                {
                    Name = "uploadType",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
            RequestParameters.Add(
                "upload_protocol", new Google.Apis.Discovery.Parameter
                {
                    Name = "upload_protocol",
                    IsRequired = false,
                    ParameterType = "query",
                    DefaultValue = null,
                    Pattern = null,
                });
        }
    }

    /// The "projects" collection of methods.
    public class ProjectsResource
    {
        private const string Resource = "projects";

        /// The service which this resource belongs to.
        private readonly Google.Apis.Services.IClientService service;

        /// Constructs a new resource.
        public ProjectsResource(Google.Apis.Services.IClientService service)
        {
            this.service = service;
            locations = new LocationsResource(service);

        }

        private readonly LocationsResource locations;

        /// Gets the Locations resource.
        public virtual LocationsResource Locations
        {
            get { return locations; }
        }

        /// The "locations" collection of methods.
        public class LocationsResource
        {
            private const string Resource = "locations";

            /// The service which this resource belongs to.
            private readonly Google.Apis.Services.IClientService service;

            /// Constructs a new resource.
            public LocationsResource(Google.Apis.Services.IClientService service)
            {
                this.service = service;
                acceleratorTypes = new AcceleratorTypesResource(service);
                nodes = new NodesResource(service);
                operations = new OperationsResource(service);
                tensorflowVersions = new TensorflowVersionsResource(service);

            }

            private readonly AcceleratorTypesResource acceleratorTypes;

            /// Gets the AcceleratorTypes resource.
            public virtual AcceleratorTypesResource AcceleratorTypes
            {
                get { return acceleratorTypes; }
            }

            /// The "acceleratorTypes" collection of methods.
            public class AcceleratorTypesResource
            {
                private const string Resource = "acceleratorTypes";

                /// The service which this resource belongs to.
                private readonly Google.Apis.Services.IClientService service;

                /// Constructs a new resource.
                public AcceleratorTypesResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }

                /// Gets AcceleratorType.
                /// <param name="name">The resource name.</param>
                public virtual GetRequest Get(string name)
                {
                    return new GetRequest(service, name);
                }

                /// Gets AcceleratorType.
                public class GetRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.AcceleratorType>
                {
                    /// Constructs a new Get request.
                    public GetRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Get parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/acceleratorTypes/[^/]+$",
                            });
                    }

                }

                /// Lists accelerator types supported by this API.
                /// <param name="parent">The parent resource name.</param>
                public virtual ListRequest List(string parent)
                {
                    return new ListRequest(service, parent);
                }

                /// Lists accelerator types supported by this API.
                public class ListRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.ListAcceleratorTypesResponse>
                {
                    /// Constructs a new List request.
                    public ListRequest(Google.Apis.Services.IClientService service, string parent)
                        : base(service)
                    {
                        Parent = parent;
                        InitParameters();
                    }

                    /// The parent resource name.
                    [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Parent { get; private set; }

                    /// List filter.
                    [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string Filter { get; set; }

                    /// The next_page_token value returned from a previous List request, if any.
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// Sort results.
                    [Google.Apis.Util.RequestParameterAttribute("orderBy", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string OrderBy { get; set; }

                    /// The maximum number of items to return.
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+parent}/acceleratorTypes"; }
                    }

                    /// Initializes List parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "parent", new Google.Apis.Discovery.Parameter
                            {
                                Name = "parent",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+$",
                            });
                        RequestParameters.Add(
                            "filter", new Google.Apis.Discovery.Parameter
                            {
                                Name = "filter",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "orderBy", new Google.Apis.Discovery.Parameter
                            {
                                Name = "orderBy",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }
            private readonly NodesResource nodes;

            /// Gets the Nodes resource.
            public virtual NodesResource Nodes
            {
                get { return nodes; }
            }

            /// The "nodes" collection of methods.
            public class NodesResource
            {
                private const string Resource = "nodes";

                /// The service which this resource belongs to.
                private readonly Google.Apis.Services.IClientService service;

                /// Constructs a new resource.
                public NodesResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }

                /// Creates a node.
                /// <param name="body">The body of the request.</param>
                /// <param name="parent">The parent resource name.</param>
                public virtual CreateRequest Create(Google.Apis.TPU.v1alpha1.Data.Node body, string parent)
                {
                    return new CreateRequest(service, body, parent);
                }

                /// Creates a node.
                public class CreateRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Create request.
                    public CreateRequest(Google.Apis.Services.IClientService service, Google.Apis.TPU.v1alpha1.Data.Node body, string parent)
                        : base(service)
                    {
                        Parent = parent;
                        Body = body;
                        InitParameters();
                    }

                    /// The parent resource name.
                    [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Parent { get; private set; }

                    /// The unqualified resource name.
                    [Google.Apis.Util.RequestParameterAttribute("nodeId", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string NodeId { get; set; }

                    /// Gets or sets the body of this request.
                    Google.Apis.TPU.v1alpha1.Data.Node Body { get; set; }

                    ///Returns the body of the request.
                    protected override object GetBody() { return Body; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "create"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+parent}/nodes"; }
                    }

                    /// Initializes Create parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "parent", new Google.Apis.Discovery.Parameter
                            {
                                Name = "parent",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+$",
                            });
                        RequestParameters.Add(
                            "nodeId", new Google.Apis.Discovery.Parameter
                            {
                                Name = "nodeId",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// Deletes a node.
                /// <param name="name">The resource name.</param>
                public virtual DeleteRequest Delete(string name)
                {
                    return new DeleteRequest(service, name);
                }

                /// Deletes a node.
                public class DeleteRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Delete request.
                    public DeleteRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "delete"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "DELETE"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Delete parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
                            });
                    }

                }

                /// Gets the details of a node.
                /// <param name="name">The resource name.</param>
                public virtual GetRequest Get(string name)
                {
                    return new GetRequest(service, name);
                }

                /// Gets the details of a node.
                public class GetRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Node>
                {
                    /// Constructs a new Get request.
                    public GetRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Get parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
                            });
                    }

                }

                /// Lists nodes.
                /// <param name="parent">The parent resource name.</param>
                public virtual ListRequest List(string parent)
                {
                    return new ListRequest(service, parent);
                }

                /// Lists nodes.
                public class ListRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.ListNodesResponse>
                {
                    /// Constructs a new List request.
                    public ListRequest(Google.Apis.Services.IClientService service, string parent)
                        : base(service)
                    {
                        Parent = parent;
                        InitParameters();
                    }

                    /// The parent resource name.
                    [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Parent { get; private set; }

                    /// The next_page_token value returned from a previous List request, if any.
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// The maximum number of items to return.
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+parent}/nodes"; }
                    }

                    /// Initializes List parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "parent", new Google.Apis.Discovery.Parameter
                            {
                                Name = "parent",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+$",
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }

                /// Reimages a node's OS.
                /// <param name="body">The body of the request.</param>
                /// <param name="name">The resource name.</param>
                public virtual ReimageRequest Reimage(Google.Apis.TPU.v1alpha1.Data.ReimageNodeRequest body, string name)
                {
                    return new ReimageRequest(service, body, name);
                }

                /// Reimages a node's OS.
                public class ReimageRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Reimage request.
                    public ReimageRequest(Google.Apis.Services.IClientService service, Google.Apis.TPU.v1alpha1.Data.ReimageNodeRequest body, string name)
                        : base(service)
                    {
                        Name = name;
                        Body = body;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    /// Gets or sets the body of this request.
                    Google.Apis.TPU.v1alpha1.Data.ReimageNodeRequest Body { get; set; }

                    ///Returns the body of the request.
                    protected override object GetBody() { return Body; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "reimage"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}:reimage"; }
                    }

                    /// Initializes Reimage parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
                            });
                    }

                }

                /// Starts a node.
                /// <param name="body">The body of the request.</param>
                /// <param name="name">The resource name.</param>
                public virtual StartRequest Start(Google.Apis.TPU.v1alpha1.Data.StartNodeRequest body, string name)
                {
                    return new StartRequest(service, body, name);
                }

                /// Starts a node.
                public class StartRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Start request.
                    public StartRequest(Google.Apis.Services.IClientService service, Google.Apis.TPU.v1alpha1.Data.StartNodeRequest body, string name)
                        : base(service)
                    {
                        Name = name;
                        Body = body;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    /// Gets or sets the body of this request.
                    Google.Apis.TPU.v1alpha1.Data.StartNodeRequest Body { get; set; }

                    ///Returns the body of the request.
                    protected override object GetBody() { return Body; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "start"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}:start"; }
                    }

                    /// Initializes Start parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
                            });
                    }

                }

                /// Stops a node.
                /// <param name="body">The body of the request.</param>
                /// <param name="name">The resource name.</param>
                public virtual StopRequest Stop(Google.Apis.TPU.v1alpha1.Data.StopNodeRequest body, string name)
                {
                    return new StopRequest(service, body, name);
                }

                /// Stops a node.
                public class StopRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Stop request.
                    public StopRequest(Google.Apis.Services.IClientService service, Google.Apis.TPU.v1alpha1.Data.StopNodeRequest body, string name)
                        : base(service)
                    {
                        Name = name;
                        Body = body;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    /// Gets or sets the body of this request.
                    Google.Apis.TPU.v1alpha1.Data.StopNodeRequest Body { get; set; }

                    ///Returns the body of the request.
                    protected override object GetBody() { return Body; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "stop"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}:stop"; }
                    }

                    /// Initializes Stop parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/nodes/[^/]+$",
                            });
                    }

                }
            }
            private readonly OperationsResource operations;

            /// Gets the Operations resource.
            public virtual OperationsResource Operations
            {
                get { return operations; }
            }

            /// The "operations" collection of methods.
            public class OperationsResource
            {
                private const string Resource = "operations";

                /// The service which this resource belongs to.
                private readonly Google.Apis.Services.IClientService service;

                /// Constructs a new resource.
                public OperationsResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }

                /// Starts asynchronous cancellation on a long-running operation.  The server makes a best
                /// effort to cancel the operation, but success is not guaranteed.  If the server doesn't support this
                /// method, it returns `google.rpc.Code.UNIMPLEMENTED`.  Clients can use Operations.GetOperation or
                /// other methods to check whether the cancellation succeeded or whether the operation completed despite
                /// cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an
                /// operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to
                /// `Code.CANCELLED`.
                /// <param name="name">The name of the operation resource to be cancelled.</param>
                public virtual CancelRequest Cancel(string name)
                {
                    return new CancelRequest(service, name);
                }

                /// Starts asynchronous cancellation on a long-running operation.  The server makes a best
                /// effort to cancel the operation, but success is not guaranteed.  If the server doesn't support this
                /// method, it returns `google.rpc.Code.UNIMPLEMENTED`.  Clients can use Operations.GetOperation or
                /// other methods to check whether the cancellation succeeded or whether the operation completed despite
                /// cancellation. On successful cancellation, the operation is not deleted; instead, it becomes an
                /// operation with an Operation.error value with a google.rpc.Status.code of 1, corresponding to
                /// `Code.CANCELLED`.
                public class CancelRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Empty>
                {
                    /// Constructs a new Cancel request.
                    public CancelRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The name of the operation resource to be cancelled.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "cancel"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "POST"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}:cancel"; }
                    }

                    /// Initializes Cancel parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                            });
                    }

                }

                /// Deletes a long-running operation. This method indicates that the client is no longer
                /// interested in the operation result. It does not cancel the operation. If the server doesn't support
                /// this method, it returns `google.rpc.Code.UNIMPLEMENTED`.
                /// <param name="name">The name of the operation resource to be deleted.</param>
                public virtual DeleteRequest Delete(string name)
                {
                    return new DeleteRequest(service, name);
                }

                /// Deletes a long-running operation. This method indicates that the client is no longer
                /// interested in the operation result. It does not cancel the operation. If the server doesn't support
                /// this method, it returns `google.rpc.Code.UNIMPLEMENTED`.
                public class DeleteRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Empty>
                {
                    /// Constructs a new Delete request.
                    public DeleteRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The name of the operation resource to be deleted.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "delete"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "DELETE"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Delete parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                            });
                    }

                }

                /// Gets the latest state of a long-running operation.  Clients can use this method to poll the
                /// operation result at intervals as recommended by the API service.
                /// <param name="name">The name of the operation resource.</param>
                public virtual GetRequest Get(string name)
                {
                    return new GetRequest(service, name);
                }

                /// Gets the latest state of a long-running operation.  Clients can use this method to poll the
                /// operation result at intervals as recommended by the API service.
                public class GetRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Operation>
                {
                    /// Constructs a new Get request.
                    public GetRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The name of the operation resource.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Get parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/operations/[^/]+$",
                            });
                    }

                }

                /// Lists operations that match the specified filter in the request. If the server doesn't
                /// support this method, it returns `UNIMPLEMENTED`.
                ///
                /// NOTE: the `name` binding allows API services to override the binding to use different resource name
                /// schemes, such as `users/operations`. To override the binding, API services can add a binding such as
                /// `"/v1/{name=users}/operations"` to their service configuration. For backwards compatibility, the
                /// default name includes the operations collection id, however overriding users must ensure the name
                /// binding is the parent resource, without the operations collection id.
                /// <param name="name">The name of the operation's parent resource.</param>
                public virtual ListRequest List(string name)
                {
                    return new ListRequest(service, name);
                }

                /// Lists operations that match the specified filter in the request. If the server doesn't
                /// support this method, it returns `UNIMPLEMENTED`.
                ///
                /// NOTE: the `name` binding allows API services to override the binding to use different resource name
                /// schemes, such as `users/operations`. To override the binding, API services can add a binding such as
                /// `"/v1/{name=users}/operations"` to their service configuration. For backwards compatibility, the
                /// default name includes the operations collection id, however overriding users must ensure the name
                /// binding is the parent resource, without the operations collection id.
                public class ListRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.ListOperationsResponse>
                {
                    /// Constructs a new List request.
                    public ListRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The name of the operation's parent resource.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    /// The standard list filter.
                    [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string Filter { get; set; }

                    /// The standard list page token.
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// The standard list page size.
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}/operations"; }
                    }

                    /// Initializes List parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+$",
                            });
                        RequestParameters.Add(
                            "filter", new Google.Apis.Discovery.Parameter
                            {
                                Name = "filter",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }
            private readonly TensorflowVersionsResource tensorflowVersions;

            /// Gets the TensorflowVersions resource.
            public virtual TensorflowVersionsResource TensorflowVersions
            {
                get { return tensorflowVersions; }
            }

            /// The "tensorflowVersions" collection of methods.
            public class TensorflowVersionsResource
            {
                private const string Resource = "tensorflowVersions";

                /// The service which this resource belongs to.
                private readonly Google.Apis.Services.IClientService service;

                /// Constructs a new resource.
                public TensorflowVersionsResource(Google.Apis.Services.IClientService service)
                {
                    this.service = service;

                }

                /// Gets TensorFlow Version.
                /// <param name="name">The resource name.</param>
                public virtual GetRequest Get(string name)
                {
                    return new GetRequest(service, name);
                }

                /// Gets TensorFlow Version.
                public class GetRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.TensorFlowVersion>
                {
                    /// Constructs a new Get request.
                    public GetRequest(Google.Apis.Services.IClientService service, string name)
                        : base(service)
                    {
                        Name = name;
                        InitParameters();
                    }

                    /// The resource name.
                    [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Name { get; private set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "get"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+name}"; }
                    }

                    /// Initializes Get parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "name", new Google.Apis.Discovery.Parameter
                            {
                                Name = "name",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+/tensorflowVersions/[^/]+$",
                            });
                    }

                }

                /// Lists TensorFlow versions supported by this API.
                /// <param name="parent">The parent resource name.</param>
                public virtual ListRequest List(string parent)
                {
                    return new ListRequest(service, parent);
                }

                /// Lists TensorFlow versions supported by this API.
                public class ListRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.ListTensorFlowVersionsResponse>
                {
                    /// Constructs a new List request.
                    public ListRequest(Google.Apis.Services.IClientService service, string parent)
                        : base(service)
                    {
                        Parent = parent;
                        InitParameters();
                    }

                    /// The parent resource name.
                    [Google.Apis.Util.RequestParameterAttribute("parent", Google.Apis.Util.RequestParameterType.Path)]
                    public virtual string Parent { get; private set; }

                    /// List filter.
                    [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string Filter { get; set; }

                    /// The next_page_token value returned from a previous List request, if any.
                    [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string PageToken { get; set; }

                    /// Sort results.
                    [Google.Apis.Util.RequestParameterAttribute("orderBy", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual string OrderBy { get; set; }

                    /// The maximum number of items to return.
                    [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                    public virtual System.Nullable<int> PageSize { get; set; }

                    ///Gets the method name.
                    public override string MethodName
                    {
                        get { return "list"; }
                    }

                    ///Gets the HTTP method.
                    public override string HttpMethod
                    {
                        get { return "GET"; }
                    }

                    ///Gets the REST path.
                    public override string RestPath
                    {
                        get { return "v1alpha1/{+parent}/tensorflowVersions"; }
                    }

                    /// Initializes List parameter list.
                    protected override void InitParameters()
                    {
                        base.InitParameters();

                        RequestParameters.Add(
                            "parent", new Google.Apis.Discovery.Parameter
                            {
                                Name = "parent",
                                IsRequired = true,
                                ParameterType = "path",
                                DefaultValue = null,
                                Pattern = @"^projects/[^/]+/locations/[^/]+$",
                            });
                        RequestParameters.Add(
                            "filter", new Google.Apis.Discovery.Parameter
                            {
                                Name = "filter",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageToken", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageToken",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "orderBy", new Google.Apis.Discovery.Parameter
                            {
                                Name = "orderBy",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                        RequestParameters.Add(
                            "pageSize", new Google.Apis.Discovery.Parameter
                            {
                                Name = "pageSize",
                                IsRequired = false,
                                ParameterType = "query",
                                DefaultValue = null,
                                Pattern = null,
                            });
                    }

                }
            }

            /// Gets information about a location.
            /// <param name="name">Resource name for the location.</param>
            public virtual GetRequest Get(string name)
            {
                return new GetRequest(service, name);
            }

            /// Gets information about a location.
            public class GetRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.Location>
            {
                /// Constructs a new Get request.
                public GetRequest(Google.Apis.Services.IClientService service, string name)
                    : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                /// Resource name for the location.
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                ///Gets the method name.
                public override string MethodName
                {
                    get { return "get"; }
                }

                ///Gets the HTTP method.
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///Gets the REST path.
                public override string RestPath
                {
                    get { return "v1alpha1/{+name}"; }
                }

                /// Initializes Get parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "name", new Google.Apis.Discovery.Parameter
                        {
                            Name = "name",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = @"^projects/[^/]+/locations/[^/]+$",
                        });
                }

            }

            /// Lists information about the supported locations for this service.
            /// <param name="name">The resource that owns the locations collection, if applicable.</param>
            public virtual ListRequest List(string name)
            {
                return new ListRequest(service, name);
            }

            /// Lists information about the supported locations for this service.
            public class ListRequest : TPUBaseServiceRequest<Google.Apis.TPU.v1alpha1.Data.ListLocationsResponse>
            {
                /// Constructs a new List request.
                public ListRequest(Google.Apis.Services.IClientService service, string name)
                    : base(service)
                {
                    Name = name;
                    InitParameters();
                }

                /// The resource that owns the locations collection, if applicable.
                [Google.Apis.Util.RequestParameterAttribute("name", Google.Apis.Util.RequestParameterType.Path)]
                public virtual string Name { get; private set; }

                /// The standard list filter.
                [Google.Apis.Util.RequestParameterAttribute("filter", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string Filter { get; set; }

                /// The standard list page token.
                [Google.Apis.Util.RequestParameterAttribute("pageToken", Google.Apis.Util.RequestParameterType.Query)]
                public virtual string PageToken { get; set; }

                /// The standard list page size.
                [Google.Apis.Util.RequestParameterAttribute("pageSize", Google.Apis.Util.RequestParameterType.Query)]
                public virtual System.Nullable<int> PageSize { get; set; }

                ///Gets the method name.
                public override string MethodName
                {
                    get { return "list"; }
                }

                ///Gets the HTTP method.
                public override string HttpMethod
                {
                    get { return "GET"; }
                }

                ///Gets the REST path.
                public override string RestPath
                {
                    get { return "v1alpha1/{+name}/locations"; }
                }

                /// Initializes List parameter list.
                protected override void InitParameters()
                {
                    base.InitParameters();

                    RequestParameters.Add(
                        "name", new Google.Apis.Discovery.Parameter
                        {
                            Name = "name",
                            IsRequired = true,
                            ParameterType = "path",
                            DefaultValue = null,
                            Pattern = @"^projects/[^/]+$",
                        });
                    RequestParameters.Add(
                        "filter", new Google.Apis.Discovery.Parameter
                        {
                            Name = "filter",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageToken", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageToken",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                    RequestParameters.Add(
                        "pageSize", new Google.Apis.Discovery.Parameter
                        {
                            Name = "pageSize",
                            IsRequired = false,
                            ParameterType = "query",
                            DefaultValue = null,
                            Pattern = null,
                        });
                }

            }
        }
    }
}

namespace Google.Apis.TPU.v1alpha1.Data
{

    /// A accelerator type that a Node can be configured with.
    public class AcceleratorType : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The resource name.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// the accelerator type.
        [Newtonsoft.Json.JsonPropertyAttribute("type")]
        public virtual string Type { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A
    /// typical example is to use it as the request or the response type of an API method. For instance:
    ///
    /// service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }
    ///
    /// The JSON representation for `Empty` is empty JSON object `{}`.
    public class Empty : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for ListAcceleratorTypes.
    public class ListAcceleratorTypesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The listed nodes.
        [Newtonsoft.Json.JsonPropertyAttribute("acceleratorTypes")]
        public virtual System.Collections.Generic.IList<AcceleratorType> AcceleratorTypes { get; set; }

        /// The next page token or empty if none.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// The response message for Locations.ListLocations.
    public class ListLocationsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// A list of locations that matches the specified filter in the request.
        [Newtonsoft.Json.JsonPropertyAttribute("locations")]
        public virtual System.Collections.Generic.IList<Location> Locations { get; set; }

        /// The standard List next-page token.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for ListNodes.
    public class ListNodesResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The next page token or empty if none.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The listed nodes.
        [Newtonsoft.Json.JsonPropertyAttribute("nodes")]
        public virtual System.Collections.Generic.IList<Node> Nodes { get; set; }

        /// Locations that could not be reached.
        [Newtonsoft.Json.JsonPropertyAttribute("unreachable")]
        public virtual System.Collections.Generic.IList<string> Unreachable { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// The response message for Operations.ListOperations.
    public class ListOperationsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The standard List next-page token.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// A list of operations that matches the specified filter in the request.
        [Newtonsoft.Json.JsonPropertyAttribute("operations")]
        public virtual System.Collections.Generic.IList<Operation> Operations { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Response for ListTensorFlowVersions.
    public class ListTensorFlowVersionsResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The next page token or empty if none.
        [Newtonsoft.Json.JsonPropertyAttribute("nextPageToken")]
        public virtual string NextPageToken { get; set; }

        /// The listed nodes.
        [Newtonsoft.Json.JsonPropertyAttribute("tensorflowVersions")]
        public virtual System.Collections.Generic.IList<TensorFlowVersion> TensorflowVersions { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A resource that represents Google Cloud Platform location.
    public class Location : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The friendly name for this location, typically a nearby city name. For example, "Tokyo".
        [Newtonsoft.Json.JsonPropertyAttribute("displayName")]
        public virtual string DisplayName { get; set; }

        /// Cross-service attributes for the location. For example
        ///
        /// {"cloud.googleapis.com/region": "us-east1"}
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; }

        /// The canonical id for this location. For example: `"us-east1"`.
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual string LocationId { get; set; }

        /// Service-specific metadata. For example the available capacity at the given location.
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,object> Metadata { get; set; }

        /// Resource name for the location, which may vary between implementations. For example: `"projects
        /// /example-project/locations/us-east1"`
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A network endpoint over which a TPU worker can be reached.
    public class NetworkEndpoint : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The IP address of this network endpoint.
        [Newtonsoft.Json.JsonPropertyAttribute("ipAddress")]
        public virtual string IpAddress { get; set; }

        /// The port of this network endpoint.
        [Newtonsoft.Json.JsonPropertyAttribute("port")]
        public virtual System.Nullable<int> Port { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A TPU instance.
    public class Node : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The type of hardware accelerators associated with this node. Required.
        [Newtonsoft.Json.JsonPropertyAttribute("acceleratorType")]
        public virtual string AcceleratorType { get; set; }

        /// The CIDR block that the TPU node will use when selecting an IP address. This CIDR block must be a
        /// /29 block; the Compute Engine networks API forbids a smaller block, and using a larger block would be
        /// wasteful (a node can only consume one IP address). Errors will occur if the CIDR block has already been used
        /// for a currently existing TPU node, the CIDR block conflicts with any subnetworks in the user's provided
        /// network, or the provided network is peered with another network that is using that CIDR block.
        /// Required.
        [Newtonsoft.Json.JsonPropertyAttribute("cidrBlock")]
        public virtual string CidrBlock { get; set; }

        /// Output only. The time when the node was created.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// The user-supplied description of the TPU. Maximum of 512 characters.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// The health status of the TPU node.
        [Newtonsoft.Json.JsonPropertyAttribute("health")]
        public virtual string Health { get; set; }

        /// Output only. If this field is populated, it contains a description of why the TPU Node is
        /// unhealthy.
        [Newtonsoft.Json.JsonPropertyAttribute("healthDescription")]
        public virtual string HealthDescription { get; set; }

        /// Output only. DEPRECATED! Use network_endpoints instead. The network address for the TPU Node as
        /// visible to Compute Engine instances.
        [Newtonsoft.Json.JsonPropertyAttribute("ipAddress")]
        public virtual string IpAddress { get; set; }

        /// Resource labels to represent user-provided metadata.
        [Newtonsoft.Json.JsonPropertyAttribute("labels")]
        public virtual System.Collections.Generic.IDictionary<string,string> Labels { get; set; }

        /// Output only. The immutable name of the TPU
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The name of a network they wish to peer the TPU node to. It must be a preexisting Compute Engine
        /// network inside of the project on which this API has been activated. If none is provided, "default" will be
        /// used.
        [Newtonsoft.Json.JsonPropertyAttribute("network")]
        public virtual string Network { get; set; }

        /// Output only. The network endpoints where TPU workers can be accessed and sent work. It is
        /// recommended that Tensorflow clients of the node reach out to the 0th entry in this map first.
        [Newtonsoft.Json.JsonPropertyAttribute("networkEndpoints")]
        public virtual System.Collections.Generic.IList<NetworkEndpoint> NetworkEndpoints { get; set; }

        /// Output only. DEPRECATED! Use network_endpoints instead. The network port for the TPU Node as
        /// visible to Compute Engine instances.
        [Newtonsoft.Json.JsonPropertyAttribute("port")]
        public virtual string Port { get; set; }

        [Newtonsoft.Json.JsonPropertyAttribute("schedulingConfig")]
        public virtual SchedulingConfig SchedulingConfig { get; set; }

        /// Output only. The service account used to run the tensor flow services within the node. To share
        /// resources, including Google Cloud Storage data, with the Tensorflow job running in the Node, this account
        /// must have permissions to that data.
        [Newtonsoft.Json.JsonPropertyAttribute("serviceAccount")]
        public virtual string ServiceAccount { get; set; }

        /// Output only. The current state for the TPU Node.
        [Newtonsoft.Json.JsonPropertyAttribute("state")]
        public virtual string State { get; set; }

        /// The version of Tensorflow running in the Node. Required.
        [Newtonsoft.Json.JsonPropertyAttribute("tensorflowVersion")]
        public virtual string TensorflowVersion { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// This resource represents a long-running operation that is the result of a network API call.
    public class Operation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If the value is `false`, it means the operation is still in progress. If `true`, the operation is
        /// completed, and either `error` or `response` is available.
        [Newtonsoft.Json.JsonPropertyAttribute("done")]
        public virtual System.Nullable<bool> Done { get; set; }

        /// The error result of the operation in case of failure or cancellation.
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual Status Error { get; set; }

        /// Service-specific metadata associated with the operation.  It typically contains progress
        /// information and common metadata such as create time. Some services might not provide such metadata.  Any
        /// method that returns a long-running operation should document the metadata type, if any.
        [Newtonsoft.Json.JsonPropertyAttribute("metadata")]
        public virtual System.Collections.Generic.IDictionary<string,object> Metadata { get; set; }

        /// The server-assigned name, which is only unique within the same service that originally returns it.
        /// If you use the default HTTP mapping, the `name` should have the format of
        /// `operations/some/unique/name`.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// The normal response of the operation in case of success.  If the original method returns no data on
        /// success, such as `Delete`, the response is `google.protobuf.Empty`.  If the original method is standard
        /// `Get`/`Create`/`Update`, the response should be the resource.  For other methods, the response should have
        /// the type `XxxResponse`, where `Xxx` is the original method name.  For example, if the original method name
        /// is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
        [Newtonsoft.Json.JsonPropertyAttribute("response")]
        public virtual System.Collections.Generic.IDictionary<string,object> Response { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Represents the metadata of the long-running operation.
    public class OperationMetadata : Google.Apis.Requests.IDirectResponseSchema
    {
        /// [Output only] API version used to start the operation.
        [Newtonsoft.Json.JsonPropertyAttribute("apiVersion")]
        public virtual string ApiVersion { get; set; }

        /// [Output only] Identifies whether the user has requested cancellation of the operation. Operations
        /// that have successfully been cancelled have Operation.error value with a google.rpc.Status.code of 1,
        /// corresponding to `Code.CANCELLED`.
        [Newtonsoft.Json.JsonPropertyAttribute("cancelRequested")]
        public virtual System.Nullable<bool> CancelRequested { get; set; }

        /// [Output only] The time the operation was created.
        [Newtonsoft.Json.JsonPropertyAttribute("createTime")]
        public virtual object CreateTime { get; set; }

        /// [Output only] The time the operation finished running.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// [Output only] Human-readable status of the operation, if any.
        [Newtonsoft.Json.JsonPropertyAttribute("statusDetail")]
        public virtual string StatusDetail { get; set; }

        /// [Output only] Server-defined resource path for the target of the operation.
        [Newtonsoft.Json.JsonPropertyAttribute("target")]
        public virtual string Target { get; set; }

        /// [Output only] Name of the verb executed by the operation.
        [Newtonsoft.Json.JsonPropertyAttribute("verb")]
        public virtual string Verb { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request for ReimageNode.
    public class ReimageNodeRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The version for reimage to create.
        [Newtonsoft.Json.JsonPropertyAttribute("tensorflowVersion")]
        public virtual string TensorflowVersion { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    public class SchedulingConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        [Newtonsoft.Json.JsonPropertyAttribute("preemptible")]
        public virtual System.Nullable<bool> Preemptible { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request for StartNode.
    public class StartNodeRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// The `Status` type defines a logical error model that is suitable for different programming
    /// environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). The error model
    /// is designed to be:
    ///
    /// - Simple to use and understand for most users - Flexible enough to meet unexpected needs
    ///
    /// # Overview
    ///
    /// The `Status` message contains three pieces of data: error code, error message, and error details. The error code
    /// should be an enum value of google.rpc.Code, but it may accept additional error codes if needed.  The error
    /// message should be a developer-facing English message that helps developers *understand* and *resolve* the error.
    /// If a localized user-facing error message is needed, put the localized message in the error details or localize
    /// it in the client. The optional error details may contain arbitrary information about the error. There is a
    /// predefined set of error detail types in the package `google.rpc` that can be used for common error conditions.
    ///
    /// # Language mapping
    ///
    /// The `Status` message is the logical representation of the error model, but it is not necessarily the actual wire
    /// format. When the `Status` message is exposed in different client libraries and different wire protocols, it can
    /// be mapped differently. For example, it will likely be mapped to some exceptions in Java, but more likely mapped
    /// to some error codes in C.
    ///
    /// # Other uses
    ///
    /// The error model and the `Status` message can be used in a variety of environments, either with or without APIs,
    /// to provide a consistent developer experience across different environments.
    ///
    /// Example uses of this error model include:
    ///
    /// - Partial errors. If a service needs to return partial errors to the client, it may embed the `Status` in the
    /// normal response to indicate the partial errors.
    ///
    /// - Workflow errors. A typical workflow has multiple steps. Each step may have a `Status` message for error
    /// reporting.
    ///
    /// - Batch operations. If a client uses batch request and batch response, the `Status` message should be used
    /// directly inside batch response, one for each error sub-response.
    ///
    /// - Asynchronous operations. If an API call embeds asynchronous operation results in its response, the status of
    /// those operations should be represented directly using the `Status` message.
    ///
    /// - Logging. If some API errors are stored in logs, the message `Status` could be used directly after any
    /// stripping needed for security/privacy reasons.
    public class Status : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The status code, which should be an enum value of google.rpc.Code.
        [Newtonsoft.Json.JsonPropertyAttribute("code")]
        public virtual System.Nullable<int> Code { get; set; }

        /// A list of messages that carry the error details.  There is a common set of message types for APIs
        /// to use.
        [Newtonsoft.Json.JsonPropertyAttribute("details")]
        public virtual System.Collections.Generic.IList<System.Collections.Generic.IDictionary<string,object>> Details { get; set; }

        /// A developer-facing error message, which should be in English. Any user-facing error message should
        /// be localized and sent in the google.rpc.Status.details field, or localized by the client.
        [Newtonsoft.Json.JsonPropertyAttribute("message")]
        public virtual string Message { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// Request for StopNode.
    public class StopNodeRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }

    /// A tensorflow version that a Node can be configured with.
    public class TensorFlowVersion : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The resource name.
        [Newtonsoft.Json.JsonPropertyAttribute("name")]
        public virtual string Name { get; set; }

        /// the tensorflow version.
        [Newtonsoft.Json.JsonPropertyAttribute("version")]
        public virtual string Version { get; set; }

        /// The ETag of the item.
        public virtual string ETag { get; set; }
    }
}


text:
var should = require('chai').should();

var LocationUtil = require('../src/location-util.js').LocationUtil;

describe('#origin()', function () {
    it('should get origin', function () {
        var l = new LocationUtil('http://example.com:8080/foo?bar=buz#frag');
        l.origin().should.equal('http://example.com:8080');
    });

    it('should get origin which is omitted scheme', function () {
        var l = new LocationUtil('example.com:8080/foo?bar=buz#frag');
        l.origin().should.equal('example.com:8080');
    });

    it('should get origin which is omitted port', function () {
        var l = new LocationUtil('http://example.com/foo?bar=buz#frag');
        l.origin().should.equal('http://example.com');
    });

    it('should get origin which is omitted scheme and port', function () {
        var l = new LocationUtil('example.com/foo?bar=buz#frag');
        l.origin().should.equal('example.com');
    });

    it('should be pass on complex behavior', function () {
        var l = new LocationUtil('http://example.com:3000/foo?bar=buz#frag');
        l.url('/user?id=123#name').origin().should.equal('http://example.com:3000');
        l.path('/entry').origin().should.equal('http://example.com:3000');
        l.search('date', '20140401', 'id', null).origin().should.equal('http://example.com:3000');
        l.hash('').origin().should.equal('http://example.com:3000');
    });
});

redpajama_set_name: RedPajamaGithub


text:
using Newtonsoft.Json;

namespace Nest
{
	[JsonObject(MemberSerialization.OptIn)]
	public interface IBinaryProperty : IProperty
	{
	}

	public class BinaryProperty : Property, IBinaryProperty
	{
		public BinaryProperty() : base("binary") { }
	}

	public class BinaryPropertyDescriptor<T>
		: PropertyDescriptorBase<BinaryPropertyDescriptor<T>, IBinaryProperty, T>, IBinaryProperty
		where T : class
	{
		public BinaryPropertyDescriptor() : base("binary") { }
	}
}


text:
<configuration xmlns="urn:hornetq"
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="urn:hornetq /schema/hornetq-configuration.xsd">

   <bindings-directory>target/server0/data/messaging/bindings</bindings-directory>

   <journal-directory>target/server0/data/messaging/journal</journal-directory>

   <large-messages-directory>target/server0/data/messaging/largemessages</large-messages-directory>

   <paging-directory>target/server0/data/messaging/paging</paging-directory>
   <!-- Acceptors -->
   <acceptors>
      <acceptor name="netty-acceptor">
         <factory-class>org.hornetq.core.remoting.impl.netty.NettyAcceptorFactory</factory-class>
         <param key="tcp-no-delay" value="false"/>
         <param key="tcp-send-buffer-size" value="1048576"/>
         <param key="tcp-receive-buffer-size" value="1048576"/>
      </acceptor>
   </acceptors>

   <security-enabled>false</security-enabled>

   <persistence-enabled>true</persistence-enabled>

   <journal-sync-non-transactional>true</journal-sync-non-transactional>
   <journal-sync-transactional>true</journal-sync-transactional>
   <journal-type>ASYNCIO</journal-type>
   <journal-min-files>20</journal-min-files>
   <journal-buffer-timeout>20000</journal-buffer-timeout>
   <log-journal-write-rate>false</log-journal-write-rate>
   <run-sync-speed-test>false</run-sync-speed-test>

   <!-- <perf-blast-pages>5000</perf-blast-pages> -->

   <queues>
	   <queue name="perfQueue">
	   	<address>perfAddress</address>
	   </queue>
   </queues>

<!--
   <address-settings>
      <address-setting match="perfAddress">
         <max-size-bytes>10485760</max-size-bytes>
         <address-full-policy>BLOCK</address-full-policy>
      </address-setting>
   </address-settings>
-->

</configuration>


text:
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.azure.security.keyvault.certificates;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.time.OffsetDateTime;

/**
 * The attributes of an issuer managed by the Key Vault service.
 */
class IssuerAttributes {
    /**
     * Determines whether the issuer is enabled.
     */
    @JsonProperty(value = "enabled")
    private Boolean enabled;

    /**
     * Creation time in UTC.
     */
    @JsonProperty("created")
    private OffsetDateTime created;

    /**
     * Last updated time in UTC.
     */
    @JsonProperty("updated")
    private OffsetDateTime updated;

    /**
     * Get the enabled value.
     *
     * @return the enabled value
     */
    Boolean enabled() {
        return this.enabled;
    }

    /**
     * Set the enabled value.
     *
     * @param enabled the enabled value to set
     * @return the IssuerAttributes object itself.
     */
    IssuerAttributes enabled(Boolean enabled) {
        this.enabled = enabled;
        return this;
    }

    /**
     * Get the created UTC time.
     *
     * @return the created value
     */
    OffsetDateTime created() {
        return created;
    }

    /**
     * Get the updated UTC time.
     *
     * @return the updated UTC time.
     */
    OffsetDateTime updated() {
        return updated;
    }
}


text:
package ch.uzh.csg.reimbursement.dto;

import lombok.Value;

@Value
public class AttachmentPdfDto implements IPdfDto {

	private String base64String;

}