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 Video Intelligence API Version v1p2beta1
 *
 * \section ApiInfo API Version Information
 *

 *
API
 *          Cloud Video Intelligence API
 *
API Versionv1p2beta1
 *
API Rev20190131 (1491)
 *
API Docs
 *
 *              https://cloud.google.com/video-intelligence/docs/
 *
Discovery Namevideointelligence
 *

 *
 * \section ForMoreInfo For More Information
 *
 * The complete API documentation for using Cloud Video Intelligence API can be found at
 * https://cloud.google.com/video-intelligence/docs/.
 *
 * 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.CloudVideoIntelligence.v1p2beta1
{
    /// The CloudVideoIntelligence Service.
    public class CloudVideoIntelligenceService : Google.Apis.Services.BaseClientService
    {
        /// The API version.
        public const string Version = "v1p2beta1";

        /// 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 CloudVideoIntelligenceService() :
            this(new Google.Apis.Services.BaseClientService.Initializer()) {}

        /// Constructs a new service.
        /// <param name="initializer">The service initializer.</param>
        public CloudVideoIntelligenceService(Google.Apis.Services.BaseClientService.Initializer initializer)
            : base(initializer)
        {
            videos = new VideosResource(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 "videointelligence"; }
        }

        /// Gets the service base URI.
        public override string BaseUri
        {
            get { return "https://videointelligence.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://videointelligence.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 Video Intelligence 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 Video Intelligence 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 VideosResource videos;

        /// Gets the Videos resource.
        public virtual VideosResource Videos
        {
            get { return videos; }
        }
    }

    ///A base abstract class for CloudVideoIntelligence requests.
    public abstract class CloudVideoIntelligenceBaseServiceRequest<TResponse> : Google.Apis.Requests.ClientServiceRequest<TResponse>
    {
        ///Constructs a new CloudVideoIntelligenceBaseServiceRequest instance.
        protected CloudVideoIntelligenceBaseServiceRequest(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 CloudVideoIntelligence 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 "videos" collection of methods.
    public class VideosResource
    {
        private const string Resource = "videos";

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

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

        }

        /// Performs asynchronous video annotation. Progress and results can be retrieved through the
        /// `google.longrunning.Operations` interface. `Operation.metadata` contains `AnnotateVideoProgress` (progress).
        /// `Operation.response` contains `AnnotateVideoResponse` (results).
        /// <param name="body">The body of the request.</param>
        public virtual AnnotateRequest Annotate(Google.Apis.CloudVideoIntelligence.v1p2beta1.Data.GoogleCloudVideointelligenceV1p2beta1AnnotateVideoRequest body)
        {
            return new AnnotateRequest(service, body);
        }

        /// Performs asynchronous video annotation. Progress and results can be retrieved through the
        /// `google.longrunning.Operations` interface. `Operation.metadata` contains `AnnotateVideoProgress` (progress).
        /// `Operation.response` contains `AnnotateVideoResponse` (results).
        public class AnnotateRequest : CloudVideoIntelligenceBaseServiceRequest<Google.Apis.CloudVideoIntelligence.v1p2beta1.Data.GoogleLongrunningOperation>
        {
            /// Constructs a new Annotate request.
            public AnnotateRequest(Google.Apis.Services.IClientService service, Google.Apis.CloudVideoIntelligence.v1p2beta1.Data.GoogleCloudVideointelligenceV1p2beta1AnnotateVideoRequest body)
                : base(service)
            {
                Body = body;
                InitParameters();
            }

            /// Gets or sets the body of this request.
            Google.Apis.CloudVideoIntelligence.v1p2beta1.Data.GoogleCloudVideointelligenceV1p2beta1AnnotateVideoRequest 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 "annotate"; }
            }

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

            ///Gets the REST path.
            public override string RestPath
            {
                get { return "v1p2beta1/videos:annotate"; }
            }

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

            }

        }
    }
}

namespace Google.Apis.CloudVideoIntelligence.v1p2beta1.Data
{

    /// Video annotation progress. Included in the `metadata` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1AnnotateVideoProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Progress metadata for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationProgress")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1VideoAnnotationProgress> AnnotationProgress { get; set; }

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

    /// Video annotation response. Included in the `response` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1AnnotateVideoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Annotation results for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationResults")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1VideoAnnotationResults> AnnotationResults { get; set; }

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

    /// Detected entity from video analysis.
    public class GoogleCloudVideointelligenceV1Entity : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Textual description, e.g. `Fixed-gear bicycle`.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search
        /// API](https://developers.google.com/knowledge-graph/).
        [Newtonsoft.Json.JsonPropertyAttribute("entityId")]
        public virtual string EntityId { get; set; }

        /// Language code for `description` in BCP-47 format.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Explicit content annotation (based on per-frame visual signals only). If no explicit content has been
    /// detected in a frame, no annotations are present for that frame.
    public class GoogleCloudVideointelligenceV1ExplicitContentAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// All video frames where explicit content was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1ExplicitContentFrame> Frames { get; set; }

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

    /// Video frame level annotation results for explicit content.
    public class GoogleCloudVideointelligenceV1ExplicitContentFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Likelihood of the pornography content..
        [Newtonsoft.Json.JsonPropertyAttribute("pornographyLikelihood")]
        public virtual string PornographyLikelihood { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Label annotation.
    public class GoogleCloudVideointelligenceV1LabelAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Common categories for the detected entity. E.g. when the label is `Terrier` the category is likely
        /// `dog`. And in some cases there might be more than one categories e.g. `Terrier` could also be a
        /// `pet`.
        [Newtonsoft.Json.JsonPropertyAttribute("categoryEntities")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1Entity> CategoryEntities { get; set; }

        /// Detected entity.
        [Newtonsoft.Json.JsonPropertyAttribute("entity")]
        public virtual GoogleCloudVideointelligenceV1Entity Entity { get; set; }

        /// All video frames where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1LabelFrame> Frames { get; set; }

        /// All video segments where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1LabelSegment> Segments { get; set; }

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

    /// Video frame level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1LabelFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Video segment level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1LabelSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Video segment where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1VideoSegment Segment { get; set; }

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

    /// Alternative hypotheses (a.k.a. n-best list).
    public class GoogleCloudVideointelligenceV1SpeechRecognitionAlternative : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater
        /// likelihood that the recognized words are correct. This field is typically provided only for the top
        /// hypothesis, and only for `is_final=true` results. Clients should not rely on the `confidence` field as it is
        /// not guaranteed to be accurate or consistent. The default of 0.0 is a sentinel value indicating `confidence`
        /// was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Transcript text representing the words that the user spoke.
        [Newtonsoft.Json.JsonPropertyAttribute("transcript")]
        public virtual string Transcript { get; set; }

        /// A list of word-specific information for each recognized word.
        [Newtonsoft.Json.JsonPropertyAttribute("words")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1WordInfo> Words { get; set; }

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

    /// A speech recognition result corresponding to a portion of the audio.
    public class GoogleCloudVideointelligenceV1SpeechTranscription : Google.Apis.Requests.IDirectResponseSchema
    {
        /// May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`).
        /// These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most
        /// probable, as ranked by the recognizer.
        [Newtonsoft.Json.JsonPropertyAttribute("alternatives")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1SpeechRecognitionAlternative> Alternatives { get; set; }

        /// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the
        /// language in this result. This language code was detected to have the most likelihood of being spoken in the
        /// audio.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Annotation progress for a single video.
    public class GoogleCloudVideointelligenceV1VideoAnnotationProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.
        [Newtonsoft.Json.JsonPropertyAttribute("progressPercent")]
        public virtual System.Nullable<int> ProgressPercent { get; set; }

        /// Time when the request was received.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Time of the most recent update.
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

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

    /// Annotation results for a single video.
    public class GoogleCloudVideointelligenceV1VideoAnnotationResults : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed
        /// and some may fail.
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual GoogleRpcStatus Error { get; set; }

        /// Explicit content annotation.
        [Newtonsoft.Json.JsonPropertyAttribute("explicitAnnotation")]
        public virtual GoogleCloudVideointelligenceV1ExplicitContentAnnotation ExplicitAnnotation { get; set; }

        /// Label annotations on frame level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("frameLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1LabelAnnotation> FrameLabelAnnotations { get; set; }

        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Label annotations on video level or user specified segment level. There is exactly one element for
        /// each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("segmentLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1LabelAnnotation> SegmentLabelAnnotations { get; set; }

        /// Shot annotations. Each shot is represented as a video segment.
        [Newtonsoft.Json.JsonPropertyAttribute("shotAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1VideoSegment> ShotAnnotations { get; set; }

        /// Label annotations on shot level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("shotLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1LabelAnnotation> ShotLabelAnnotations { get; set; }

        /// Speech transcription.
        [Newtonsoft.Json.JsonPropertyAttribute("speechTranscriptions")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1SpeechTranscription> SpeechTranscriptions { get; set; }

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

    /// Video segment.
    public class GoogleCloudVideointelligenceV1VideoSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Time-offset, relative to the beginning of the video, corresponding to the end of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("endTimeOffset")]
        public virtual object EndTimeOffset { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the start of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("startTimeOffset")]
        public virtual object StartTimeOffset { get; set; }

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

    /// Word-specific information for recognized words. Word information is only included in the response when
    /// certain request parameters are set, such as `enable_word_time_offsets`.
    public class GoogleCloudVideointelligenceV1WordInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated
        /// greater likelihood that the recognized words are correct. This field is set only for the top alternative.
        /// This field is not guaranteed to be accurate and users should not rely on it to be always provided. The
        /// default of 0.0 is a sentinel value indicating `confidence` was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the end of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Output only. A distinct integer value is assigned for every speaker within the audio. This field
        /// specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to
        /// diarization_speaker_count, and is only set if speaker diarization is enabled.
        [Newtonsoft.Json.JsonPropertyAttribute("speakerTag")]
        public virtual System.Nullable<int> SpeakerTag { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the start of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The word corresponding to this set of information.
        [Newtonsoft.Json.JsonPropertyAttribute("word")]
        public virtual string Word { get; set; }

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

    /// Video annotation progress. Included in the `metadata` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1beta2AnnotateVideoProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Progress metadata for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationProgress")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2VideoAnnotationProgress> AnnotationProgress { get; set; }

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

    /// Video annotation response. Included in the `response` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1beta2AnnotateVideoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Annotation results for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationResults")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2VideoAnnotationResults> AnnotationResults { get; set; }

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

    /// Detected entity from video analysis.
    public class GoogleCloudVideointelligenceV1beta2Entity : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Textual description, e.g. `Fixed-gear bicycle`.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search
        /// API](https://developers.google.com/knowledge-graph/).
        [Newtonsoft.Json.JsonPropertyAttribute("entityId")]
        public virtual string EntityId { get; set; }

        /// Language code for `description` in BCP-47 format.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Explicit content annotation (based on per-frame visual signals only). If no explicit content has been
    /// detected in a frame, no annotations are present for that frame.
    public class GoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// All video frames where explicit content was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2ExplicitContentFrame> Frames { get; set; }

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

    /// Video frame level annotation results for explicit content.
    public class GoogleCloudVideointelligenceV1beta2ExplicitContentFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Likelihood of the pornography content..
        [Newtonsoft.Json.JsonPropertyAttribute("pornographyLikelihood")]
        public virtual string PornographyLikelihood { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Label annotation.
    public class GoogleCloudVideointelligenceV1beta2LabelAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Common categories for the detected entity. E.g. when the label is `Terrier` the category is likely
        /// `dog`. And in some cases there might be more than one categories e.g. `Terrier` could also be a
        /// `pet`.
        [Newtonsoft.Json.JsonPropertyAttribute("categoryEntities")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2Entity> CategoryEntities { get; set; }

        /// Detected entity.
        [Newtonsoft.Json.JsonPropertyAttribute("entity")]
        public virtual GoogleCloudVideointelligenceV1beta2Entity Entity { get; set; }

        /// All video frames where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2LabelFrame> Frames { get; set; }

        /// All video segments where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2LabelSegment> Segments { get; set; }

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

    /// Video frame level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1beta2LabelFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Video segment level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1beta2LabelSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Video segment where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1beta2VideoSegment Segment { get; set; }

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

    /// Alternative hypotheses (a.k.a. n-best list).
    public class GoogleCloudVideointelligenceV1beta2SpeechRecognitionAlternative : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater
        /// likelihood that the recognized words are correct. This field is typically provided only for the top
        /// hypothesis, and only for `is_final=true` results. Clients should not rely on the `confidence` field as it is
        /// not guaranteed to be accurate or consistent. The default of 0.0 is a sentinel value indicating `confidence`
        /// was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Transcript text representing the words that the user spoke.
        [Newtonsoft.Json.JsonPropertyAttribute("transcript")]
        public virtual string Transcript { get; set; }

        /// A list of word-specific information for each recognized word.
        [Newtonsoft.Json.JsonPropertyAttribute("words")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2WordInfo> Words { get; set; }

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

    /// A speech recognition result corresponding to a portion of the audio.
    public class GoogleCloudVideointelligenceV1beta2SpeechTranscription : Google.Apis.Requests.IDirectResponseSchema
    {
        /// May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`).
        /// These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most
        /// probable, as ranked by the recognizer.
        [Newtonsoft.Json.JsonPropertyAttribute("alternatives")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2SpeechRecognitionAlternative> Alternatives { get; set; }

        /// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the
        /// language in this result. This language code was detected to have the most likelihood of being spoken in the
        /// audio.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Annotation progress for a single video.
    public class GoogleCloudVideointelligenceV1beta2VideoAnnotationProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.
        [Newtonsoft.Json.JsonPropertyAttribute("progressPercent")]
        public virtual System.Nullable<int> ProgressPercent { get; set; }

        /// Time when the request was received.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Time of the most recent update.
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

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

    /// Annotation results for a single video.
    public class GoogleCloudVideointelligenceV1beta2VideoAnnotationResults : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed
        /// and some may fail.
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual GoogleRpcStatus Error { get; set; }

        /// Explicit content annotation.
        [Newtonsoft.Json.JsonPropertyAttribute("explicitAnnotation")]
        public virtual GoogleCloudVideointelligenceV1beta2ExplicitContentAnnotation ExplicitAnnotation { get; set; }

        /// Label annotations on frame level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("frameLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2LabelAnnotation> FrameLabelAnnotations { get; set; }

        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Label annotations on video level or user specified segment level. There is exactly one element for
        /// each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("segmentLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2LabelAnnotation> SegmentLabelAnnotations { get; set; }

        /// Shot annotations. Each shot is represented as a video segment.
        [Newtonsoft.Json.JsonPropertyAttribute("shotAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2VideoSegment> ShotAnnotations { get; set; }

        /// Label annotations on shot level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("shotLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2LabelAnnotation> ShotLabelAnnotations { get; set; }

        /// Speech transcription.
        [Newtonsoft.Json.JsonPropertyAttribute("speechTranscriptions")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1beta2SpeechTranscription> SpeechTranscriptions { get; set; }

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

    /// Video segment.
    public class GoogleCloudVideointelligenceV1beta2VideoSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Time-offset, relative to the beginning of the video, corresponding to the end of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("endTimeOffset")]
        public virtual object EndTimeOffset { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the start of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("startTimeOffset")]
        public virtual object StartTimeOffset { get; set; }

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

    /// Word-specific information for recognized words. Word information is only included in the response when
    /// certain request parameters are set, such as `enable_word_time_offsets`.
    public class GoogleCloudVideointelligenceV1beta2WordInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated
        /// greater likelihood that the recognized words are correct. This field is set only for the top alternative.
        /// This field is not guaranteed to be accurate and users should not rely on it to be always provided. The
        /// default of 0.0 is a sentinel value indicating `confidence` was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the end of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Output only. A distinct integer value is assigned for every speaker within the audio. This field
        /// specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to
        /// diarization_speaker_count, and is only set if speaker diarization is enabled.
        [Newtonsoft.Json.JsonPropertyAttribute("speakerTag")]
        public virtual System.Nullable<int> SpeakerTag { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the start of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The word corresponding to this set of information.
        [Newtonsoft.Json.JsonPropertyAttribute("word")]
        public virtual string Word { get; set; }

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

    /// Video annotation progress. Included in the `metadata` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1p1beta1AnnotateVideoProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Progress metadata for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationProgress")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1VideoAnnotationProgress> AnnotationProgress { get; set; }

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

    /// Video annotation response. Included in the `response` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1p1beta1AnnotateVideoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Annotation results for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationResults")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1VideoAnnotationResults> AnnotationResults { get; set; }

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

    /// Detected entity from video analysis.
    public class GoogleCloudVideointelligenceV1p1beta1Entity : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Textual description, e.g. `Fixed-gear bicycle`.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search
        /// API](https://developers.google.com/knowledge-graph/).
        [Newtonsoft.Json.JsonPropertyAttribute("entityId")]
        public virtual string EntityId { get; set; }

        /// Language code for `description` in BCP-47 format.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Explicit content annotation (based on per-frame visual signals only). If no explicit content has been
    /// detected in a frame, no annotations are present for that frame.
    public class GoogleCloudVideointelligenceV1p1beta1ExplicitContentAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// All video frames where explicit content was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1ExplicitContentFrame> Frames { get; set; }

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

    /// Video frame level annotation results for explicit content.
    public class GoogleCloudVideointelligenceV1p1beta1ExplicitContentFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Likelihood of the pornography content..
        [Newtonsoft.Json.JsonPropertyAttribute("pornographyLikelihood")]
        public virtual string PornographyLikelihood { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Label annotation.
    public class GoogleCloudVideointelligenceV1p1beta1LabelAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Common categories for the detected entity. E.g. when the label is `Terrier` the category is likely
        /// `dog`. And in some cases there might be more than one categories e.g. `Terrier` could also be a
        /// `pet`.
        [Newtonsoft.Json.JsonPropertyAttribute("categoryEntities")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1Entity> CategoryEntities { get; set; }

        /// Detected entity.
        [Newtonsoft.Json.JsonPropertyAttribute("entity")]
        public virtual GoogleCloudVideointelligenceV1p1beta1Entity Entity { get; set; }

        /// All video frames where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1LabelFrame> Frames { get; set; }

        /// All video segments where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1LabelSegment> Segments { get; set; }

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

    /// Video frame level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1p1beta1LabelFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Video segment level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1p1beta1LabelSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Video segment where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1p1beta1VideoSegment Segment { get; set; }

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

    /// Alternative hypotheses (a.k.a. n-best list).
    public class GoogleCloudVideointelligenceV1p1beta1SpeechRecognitionAlternative : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater
        /// likelihood that the recognized words are correct. This field is typically provided only for the top
        /// hypothesis, and only for `is_final=true` results. Clients should not rely on the `confidence` field as it is
        /// not guaranteed to be accurate or consistent. The default of 0.0 is a sentinel value indicating `confidence`
        /// was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Transcript text representing the words that the user spoke.
        [Newtonsoft.Json.JsonPropertyAttribute("transcript")]
        public virtual string Transcript { get; set; }

        /// A list of word-specific information for each recognized word.
        [Newtonsoft.Json.JsonPropertyAttribute("words")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1WordInfo> Words { get; set; }

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

    /// A speech recognition result corresponding to a portion of the audio.
    public class GoogleCloudVideointelligenceV1p1beta1SpeechTranscription : Google.Apis.Requests.IDirectResponseSchema
    {
        /// May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`).
        /// These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most
        /// probable, as ranked by the recognizer.
        [Newtonsoft.Json.JsonPropertyAttribute("alternatives")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1SpeechRecognitionAlternative> Alternatives { get; set; }

        /// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the
        /// language in this result. This language code was detected to have the most likelihood of being spoken in the
        /// audio.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Annotation progress for a single video.
    public class GoogleCloudVideointelligenceV1p1beta1VideoAnnotationProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.
        [Newtonsoft.Json.JsonPropertyAttribute("progressPercent")]
        public virtual System.Nullable<int> ProgressPercent { get; set; }

        /// Time when the request was received.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Time of the most recent update.
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

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

    /// Annotation results for a single video.
    public class GoogleCloudVideointelligenceV1p1beta1VideoAnnotationResults : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed
        /// and some may fail.
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual GoogleRpcStatus Error { get; set; }

        /// Explicit content annotation.
        [Newtonsoft.Json.JsonPropertyAttribute("explicitAnnotation")]
        public virtual GoogleCloudVideointelligenceV1p1beta1ExplicitContentAnnotation ExplicitAnnotation { get; set; }

        /// Label annotations on frame level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("frameLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1LabelAnnotation> FrameLabelAnnotations { get; set; }

        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Label annotations on video level or user specified segment level. There is exactly one element for
        /// each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("segmentLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1LabelAnnotation> SegmentLabelAnnotations { get; set; }

        /// Shot annotations. Each shot is represented as a video segment.
        [Newtonsoft.Json.JsonPropertyAttribute("shotAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1VideoSegment> ShotAnnotations { get; set; }

        /// Label annotations on shot level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("shotLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1LabelAnnotation> ShotLabelAnnotations { get; set; }

        /// Speech transcription.
        [Newtonsoft.Json.JsonPropertyAttribute("speechTranscriptions")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p1beta1SpeechTranscription> SpeechTranscriptions { get; set; }

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

    /// Video segment.
    public class GoogleCloudVideointelligenceV1p1beta1VideoSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Time-offset, relative to the beginning of the video, corresponding to the end of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("endTimeOffset")]
        public virtual object EndTimeOffset { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the start of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("startTimeOffset")]
        public virtual object StartTimeOffset { get; set; }

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

    /// Word-specific information for recognized words. Word information is only included in the response when
    /// certain request parameters are set, such as `enable_word_time_offsets`.
    public class GoogleCloudVideointelligenceV1p1beta1WordInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated
        /// greater likelihood that the recognized words are correct. This field is set only for the top alternative.
        /// This field is not guaranteed to be accurate and users should not rely on it to be always provided. The
        /// default of 0.0 is a sentinel value indicating `confidence` was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the end of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Output only. A distinct integer value is assigned for every speaker within the audio. This field
        /// specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to
        /// diarization_speaker_count, and is only set if speaker diarization is enabled.
        [Newtonsoft.Json.JsonPropertyAttribute("speakerTag")]
        public virtual System.Nullable<int> SpeakerTag { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the start of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The word corresponding to this set of information.
        [Newtonsoft.Json.JsonPropertyAttribute("word")]
        public virtual string Word { get; set; }

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

    /// Video annotation progress. Included in the `metadata` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1p2beta1AnnotateVideoProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Progress metadata for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationProgress")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1VideoAnnotationProgress> AnnotationProgress { get; set; }

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

    /// Video annotation request.
    public class GoogleCloudVideointelligenceV1p2beta1AnnotateVideoRequest : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Requested video annotation features.
        [Newtonsoft.Json.JsonPropertyAttribute("features")]
        public virtual System.Collections.Generic.IList<string> Features { get; set; }

        /// The video data bytes. If unset, the input video(s) should be specified via `input_uri`. If set,
        /// `input_uri` should be unset.
        [Newtonsoft.Json.JsonPropertyAttribute("inputContent")]
        public virtual string InputContent { get; set; }

        /// Input video location. Currently, only [Google Cloud Storage](https://cloud.google.com/storage/)
        /// URIs are supported, which must be specified in the following format: `gs://bucket-id/object-id` (other URI
        /// formats return google.rpc.Code.INVALID_ARGUMENT). For more information, see [Request URIs](/storage/docs
        /// /reference-uris). A video URI may include wildcards in `object-id`, and thus identify multiple videos.
        /// Supported wildcards: '*' to match 0 or more characters; '?' to match 1 character. If unset, the input video
        /// should be embedded in the request as `input_content`. If set, `input_content` should be unset.
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Optional cloud region where annotation should take place. Supported cloud regions: `us-east1`, `us-
        /// west1`, `europe-west1`, `asia-east1`. If no region is specified, a region will be determined based on video
        /// file location.
        [Newtonsoft.Json.JsonPropertyAttribute("locationId")]
        public virtual string LocationId { get; set; }

        /// Optional location where the output (in JSON format) should be stored. Currently, only [Google Cloud
        /// Storage](https://cloud.google.com/storage/) URIs are supported, which must be specified in the following
        /// format: `gs://bucket-id/object-id` (other URI formats return google.rpc.Code.INVALID_ARGUMENT). For more
        /// information, see [Request URIs](/storage/docs/reference-uris).
        [Newtonsoft.Json.JsonPropertyAttribute("outputUri")]
        public virtual string OutputUri { get; set; }

        /// Additional video context and/or feature-specific parameters.
        [Newtonsoft.Json.JsonPropertyAttribute("videoContext")]
        public virtual GoogleCloudVideointelligenceV1p2beta1VideoContext VideoContext { get; set; }

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

    /// Video annotation response. Included in the `response` field of the `Operation` returned by the
    /// `GetOperation` call of the `google::longrunning::Operations` service.
    public class GoogleCloudVideointelligenceV1p2beta1AnnotateVideoResponse : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Annotation results for all videos specified in `AnnotateVideoRequest`.
        [Newtonsoft.Json.JsonPropertyAttribute("annotationResults")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1VideoAnnotationResults> AnnotationResults { get; set; }

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

    /// Detected entity from video analysis.
    public class GoogleCloudVideointelligenceV1p2beta1Entity : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Textual description, e.g. `Fixed-gear bicycle`.
        [Newtonsoft.Json.JsonPropertyAttribute("description")]
        public virtual string Description { get; set; }

        /// Opaque entity ID. Some IDs may be available in [Google Knowledge Graph Search
        /// API](https://developers.google.com/knowledge-graph/).
        [Newtonsoft.Json.JsonPropertyAttribute("entityId")]
        public virtual string EntityId { get; set; }

        /// Language code for `description` in BCP-47 format.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Explicit content annotation (based on per-frame visual signals only). If no explicit content has been
    /// detected in a frame, no annotations are present for that frame.
    public class GoogleCloudVideointelligenceV1p2beta1ExplicitContentAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// All video frames where explicit content was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1ExplicitContentFrame> Frames { get; set; }

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

    /// Config for EXPLICIT_CONTENT_DETECTION.
    public class GoogleCloudVideointelligenceV1p2beta1ExplicitContentDetectionConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Model to use for explicit content detection. Supported values: "builtin/stable" (the default if
        /// unset) and "builtin/latest".
        [Newtonsoft.Json.JsonPropertyAttribute("model")]
        public virtual string Model { get; set; }

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

    /// Video frame level annotation results for explicit content.
    public class GoogleCloudVideointelligenceV1p2beta1ExplicitContentFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Likelihood of the pornography content..
        [Newtonsoft.Json.JsonPropertyAttribute("pornographyLikelihood")]
        public virtual string PornographyLikelihood { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Label annotation.
    public class GoogleCloudVideointelligenceV1p2beta1LabelAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Common categories for the detected entity. E.g. when the label is `Terrier` the category is likely
        /// `dog`. And in some cases there might be more than one categories e.g. `Terrier` could also be a
        /// `pet`.
        [Newtonsoft.Json.JsonPropertyAttribute("categoryEntities")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1Entity> CategoryEntities { get; set; }

        /// Detected entity.
        [Newtonsoft.Json.JsonPropertyAttribute("entity")]
        public virtual GoogleCloudVideointelligenceV1p2beta1Entity Entity { get; set; }

        /// All video frames where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1LabelFrame> Frames { get; set; }

        /// All video segments where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1LabelSegment> Segments { get; set; }

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

    /// Config for LABEL_DETECTION.
    public class GoogleCloudVideointelligenceV1p2beta1LabelDetectionConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// What labels should be detected with LABEL_DETECTION, in addition to video-level labels or segment-
        /// level labels. If unspecified, defaults to `SHOT_MODE`.
        [Newtonsoft.Json.JsonPropertyAttribute("labelDetectionMode")]
        public virtual string LabelDetectionMode { get; set; }

        /// Model to use for label detection. Supported values: "builtin/stable" (the default if unset) and
        /// "builtin/latest".
        [Newtonsoft.Json.JsonPropertyAttribute("model")]
        public virtual string Model { get; set; }

        /// Whether the video has been shot from a stationary (i.e. non-moving) camera. When set to true, might
        /// improve detection accuracy for moving objects. Should be used with `SHOT_AND_FRAME_MODE` enabled.
        [Newtonsoft.Json.JsonPropertyAttribute("stationaryCamera")]
        public virtual System.Nullable<bool> StationaryCamera { get; set; }

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

    /// Video frame level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1p2beta1LabelFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the video frame for this
        /// location.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Video segment level annotation results for label detection.
    public class GoogleCloudVideointelligenceV1p2beta1LabelSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence that the label is accurate. Range: [0, 1].
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Video segment where a label was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1p2beta1VideoSegment Segment { get; set; }

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

    /// Normalized bounding box. The normalized vertex coordinates are relative to the original image. Range:
    /// [0, 1].
    public class GoogleCloudVideointelligenceV1p2beta1NormalizedBoundingBox : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Bottom Y coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("bottom")]
        public virtual System.Nullable<float> Bottom { get; set; }

        /// Left X coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("left")]
        public virtual System.Nullable<float> Left { get; set; }

        /// Right X coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("right")]
        public virtual System.Nullable<float> Right { get; set; }

        /// Top Y coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("top")]
        public virtual System.Nullable<float> Top { get; set; }

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

    /// Normalized bounding polygon for text (that might not be aligned with axis). Contains list of the corner
    /// points in clockwise order starting from top-left corner. For example, for a rectangular bounding box: When the
    /// text is horizontal it might look like: 0----1 |    | 3----2
    ///
    /// When it's clockwise rotated 180 degrees around the top-left corner it becomes: 2----3 |    | 1----0
    ///
    /// and the vertex order will still be (0, 1, 2, 3). Note that values can be less than 0, or greater than 1 due to
    /// trignometric calculations for location of the box.
    public class GoogleCloudVideointelligenceV1p2beta1NormalizedBoundingPoly : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Normalized vertices of the bounding polygon.
        [Newtonsoft.Json.JsonPropertyAttribute("vertices")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1NormalizedVertex> Vertices { get; set; }

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

    /// A vertex represents a 2D point in the image. NOTE: the normalized vertex coordinates are relative to
    /// the original image and range from 0 to 1.
    public class GoogleCloudVideointelligenceV1p2beta1NormalizedVertex : Google.Apis.Requests.IDirectResponseSchema
    {
        /// X coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("x")]
        public virtual System.Nullable<float> X { get; set; }

        /// Y coordinate.
        [Newtonsoft.Json.JsonPropertyAttribute("y")]
        public virtual System.Nullable<float> Y { get; set; }

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

    /// Annotations corresponding to one tracked object.
    public class GoogleCloudVideointelligenceV1p2beta1ObjectTrackingAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Object category's labeling confidence of this track.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Entity to specify the object category that this track is labeled as.
        [Newtonsoft.Json.JsonPropertyAttribute("entity")]
        public virtual GoogleCloudVideointelligenceV1p2beta1Entity Entity { get; set; }

        /// Information corresponding to all frames where this object track appears. Non-streaming batch mode:
        /// it may be one or multiple ObjectTrackingFrame messages in frames. Streaming mode: it can only be one
        /// ObjectTrackingFrame message in frames.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1ObjectTrackingFrame> Frames { get; set; }

        /// Non-streaming batch mode ONLY. Each object track corresponds to one video segment where it
        /// appears.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1p2beta1VideoSegment Segment { get; set; }

        /// Streaming mode ONLY. In streaming mode, we do not know the end time of a tracked object before it
        /// is completed. Hence, there is no VideoSegment info returned. Instead, we provide a unique identifiable
        /// integer track_id so that the customers can correlate the results of the ongoing ObjectTrackAnnotation of the
        /// same track_id over time.
        [Newtonsoft.Json.JsonPropertyAttribute("trackId")]
        public virtual System.Nullable<long> TrackId { get; set; }

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

    /// Video frame level annotations for object detection and tracking. This field stores per frame location,
    /// time offset, and confidence.
    public class GoogleCloudVideointelligenceV1p2beta1ObjectTrackingFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The normalized bounding box location of this object track for the frame.
        [Newtonsoft.Json.JsonPropertyAttribute("normalizedBoundingBox")]
        public virtual GoogleCloudVideointelligenceV1p2beta1NormalizedBoundingBox NormalizedBoundingBox { get; set; }

        /// The timestamp of the frame in microseconds.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Config for SHOT_CHANGE_DETECTION.
    public class GoogleCloudVideointelligenceV1p2beta1ShotChangeDetectionConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Model to use for shot change detection. Supported values: "builtin/stable" (the default if unset)
        /// and "builtin/latest".
        [Newtonsoft.Json.JsonPropertyAttribute("model")]
        public virtual string Model { get; set; }

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

    /// Provides "hints" to the speech recognizer to favor specific words and phrases in the results.
    public class GoogleCloudVideointelligenceV1p2beta1SpeechContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// *Optional* A list of strings containing words and phrases "hints" so that the speech recognition is
        /// more likely to recognize them. This can be used to improve the accuracy for specific words and phrases, for
        /// example, if specific commands are typically spoken by the user. This can also be used to add additional
        /// words to the vocabulary of the recognizer. See [usage
        /// limits](https://cloud.google.com/speech/limits#content).
        [Newtonsoft.Json.JsonPropertyAttribute("phrases")]
        public virtual System.Collections.Generic.IList<string> Phrases { get; set; }

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

    /// Alternative hypotheses (a.k.a. n-best list).
    public class GoogleCloudVideointelligenceV1p2beta1SpeechRecognitionAlternative : Google.Apis.Requests.IDirectResponseSchema
    {
        /// The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated greater
        /// likelihood that the recognized words are correct. This field is typically provided only for the top
        /// hypothesis, and only for `is_final=true` results. Clients should not rely on the `confidence` field as it is
        /// not guaranteed to be accurate or consistent. The default of 0.0 is a sentinel value indicating `confidence`
        /// was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Transcript text representing the words that the user spoke.
        [Newtonsoft.Json.JsonPropertyAttribute("transcript")]
        public virtual string Transcript { get; set; }

        /// A list of word-specific information for each recognized word.
        [Newtonsoft.Json.JsonPropertyAttribute("words")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1WordInfo> Words { get; set; }

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

    /// A speech recognition result corresponding to a portion of the audio.
    public class GoogleCloudVideointelligenceV1p2beta1SpeechTranscription : Google.Apis.Requests.IDirectResponseSchema
    {
        /// May contain one or more recognition hypotheses (up to the maximum specified in `max_alternatives`).
        /// These alternatives are ordered in terms of accuracy, with the top (first) alternative being the most
        /// probable, as ranked by the recognizer.
        [Newtonsoft.Json.JsonPropertyAttribute("alternatives")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1SpeechRecognitionAlternative> Alternatives { get; set; }

        /// Output only. The [BCP-47](https://www.rfc-editor.org/rfc/bcp/bcp47.txt) language tag of the
        /// language in this result. This language code was detected to have the most likelihood of being spoken in the
        /// audio.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

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

    /// Config for SPEECH_TRANSCRIPTION.
    public class GoogleCloudVideointelligenceV1p2beta1SpeechTranscriptionConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// *Optional* For file formats, such as MXF or MKV, supporting multiple audio tracks, specify up to
        /// two tracks. Default: track 0.
        [Newtonsoft.Json.JsonPropertyAttribute("audioTracks")]
        public virtual System.Collections.Generic.IList<System.Nullable<int>> AudioTracks { get; set; }

        /// *Optional* If set, specifies the estimated number of speakers in the conversation. If not set,
        /// defaults to '2'. Ignored unless enable_speaker_diarization is set to true.
        [Newtonsoft.Json.JsonPropertyAttribute("diarizationSpeakerCount")]
        public virtual System.Nullable<int> DiarizationSpeakerCount { get; set; }

        /// *Optional* If 'true', adds punctuation to recognition result hypotheses. This feature is only
        /// available in select languages. Setting this for requests in other languages has no effect at all. The
        /// default 'false' value does not add punctuation to result hypotheses. NOTE: "This is currently offered as an
        /// experimental service, complimentary to all users. In the future this may be exclusively available as a
        /// premium feature."
        [Newtonsoft.Json.JsonPropertyAttribute("enableAutomaticPunctuation")]
        public virtual System.Nullable<bool> EnableAutomaticPunctuation { get; set; }

        /// *Optional* If 'true', enables speaker detection for each recognized word in the top alternative of
        /// the recognition result using a speaker_tag provided in the WordInfo. Note: When this is true, we send all
        /// the words from the beginning of the audio for the top alternative in every consecutive responses. This is
        /// done in order to improve our speaker tags as our models learn to identify the speakers in the conversation
        /// over time.
        [Newtonsoft.Json.JsonPropertyAttribute("enableSpeakerDiarization")]
        public virtual System.Nullable<bool> EnableSpeakerDiarization { get; set; }

        /// *Optional* If `true`, the top result includes a list of words and the confidence for those words.
        /// If `false`, no word-level confidence information is returned. The default is `false`.
        [Newtonsoft.Json.JsonPropertyAttribute("enableWordConfidence")]
        public virtual System.Nullable<bool> EnableWordConfidence { get; set; }

        /// *Optional* If set to `true`, the server will attempt to filter out profanities, replacing all but
        /// the initial character in each filtered word with asterisks, e.g. "f***". If set to `false` or omitted,
        /// profanities won't be filtered out.
        [Newtonsoft.Json.JsonPropertyAttribute("filterProfanity")]
        public virtual System.Nullable<bool> FilterProfanity { get; set; }

        /// *Required* The language of the supplied audio as a [BCP-47](https://www.rfc-
        /// editor.org/rfc/bcp/bcp47.txt) language tag. Example: "en-US". See [Language
        /// Support](https://cloud.google.com/speech/docs/languages) for a list of the currently supported language
        /// codes.
        [Newtonsoft.Json.JsonPropertyAttribute("languageCode")]
        public virtual string LanguageCode { get; set; }

        /// *Optional* Maximum number of recognition hypotheses to be returned. Specifically, the maximum
        /// number of `SpeechRecognitionAlternative` messages within each `SpeechTranscription`. The server may return
        /// fewer than `max_alternatives`. Valid values are `0`-`30`. A value of `0` or `1` will return a maximum of
        /// one. If omitted, will return a maximum of one.
        [Newtonsoft.Json.JsonPropertyAttribute("maxAlternatives")]
        public virtual System.Nullable<int> MaxAlternatives { get; set; }

        /// *Optional* A means to provide context to assist the speech recognition.
        [Newtonsoft.Json.JsonPropertyAttribute("speechContexts")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1SpeechContext> SpeechContexts { get; set; }

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

    /// Annotations related to one detected OCR text snippet. This will contain the corresponding text,
    /// confidence value, and frame level information for each detection.
    public class GoogleCloudVideointelligenceV1p2beta1TextAnnotation : Google.Apis.Requests.IDirectResponseSchema
    {
        /// All video segments where OCR detected text appears.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1TextSegment> Segments { get; set; }

        /// The detected text.
        [Newtonsoft.Json.JsonPropertyAttribute("text")]
        public virtual string Text { get; set; }

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

    /// Config for TEXT_DETECTION.
    public class GoogleCloudVideointelligenceV1p2beta1TextDetectionConfig : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Language hint can be specified if the language to be detected is known a priori. It can increase
        /// the accuracy of the detection. Language hint must be language code in BCP-47 format.
        ///
        /// Automatic language detection is performed if no hint is provided.
        [Newtonsoft.Json.JsonPropertyAttribute("languageHints")]
        public virtual System.Collections.Generic.IList<string> LanguageHints { get; set; }

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

    /// Video frame level annotation results for text annotation (OCR). Contains information regarding
    /// timestamp and bounding box locations for the frames containing detected OCR text snippets.
    public class GoogleCloudVideointelligenceV1p2beta1TextFrame : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Bounding polygon of the detected text for this frame.
        [Newtonsoft.Json.JsonPropertyAttribute("rotatedBoundingBox")]
        public virtual GoogleCloudVideointelligenceV1p2beta1NormalizedBoundingPoly RotatedBoundingBox { get; set; }

        /// Timestamp of this frame.
        [Newtonsoft.Json.JsonPropertyAttribute("timeOffset")]
        public virtual object TimeOffset { get; set; }

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

    /// Video segment level annotation results for text detection.
    public class GoogleCloudVideointelligenceV1p2beta1TextSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Confidence for the track of detected text. It is calculated as the highest over all frames where
        /// OCR detected text appears.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Information related to the frames where OCR detected text appears.
        [Newtonsoft.Json.JsonPropertyAttribute("frames")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1TextFrame> Frames { get; set; }

        /// Video segment where a text snippet was detected.
        [Newtonsoft.Json.JsonPropertyAttribute("segment")]
        public virtual GoogleCloudVideointelligenceV1p2beta1VideoSegment Segment { get; set; }

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

    /// Annotation progress for a single video.
    public class GoogleCloudVideointelligenceV1p2beta1VideoAnnotationProgress : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Approximate percentage processed thus far. Guaranteed to be 100 when fully processed.
        [Newtonsoft.Json.JsonPropertyAttribute("progressPercent")]
        public virtual System.Nullable<int> ProgressPercent { get; set; }

        /// Time when the request was received.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// Time of the most recent update.
        [Newtonsoft.Json.JsonPropertyAttribute("updateTime")]
        public virtual object UpdateTime { get; set; }

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

    /// Annotation results for a single video.
    public class GoogleCloudVideointelligenceV1p2beta1VideoAnnotationResults : Google.Apis.Requests.IDirectResponseSchema
    {
        /// If set, indicates an error. Note that for a single `AnnotateVideoRequest` some videos may succeed
        /// and some may fail.
        [Newtonsoft.Json.JsonPropertyAttribute("error")]
        public virtual GoogleRpcStatus Error { get; set; }

        /// Explicit content annotation.
        [Newtonsoft.Json.JsonPropertyAttribute("explicitAnnotation")]
        public virtual GoogleCloudVideointelligenceV1p2beta1ExplicitContentAnnotation ExplicitAnnotation { get; set; }

        /// Label annotations on frame level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("frameLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1LabelAnnotation> FrameLabelAnnotations { get; set; }

        /// Video file location in [Google Cloud Storage](https://cloud.google.com/storage/).
        [Newtonsoft.Json.JsonPropertyAttribute("inputUri")]
        public virtual string InputUri { get; set; }

        /// Annotations for list of objects detected and tracked in video.
        [Newtonsoft.Json.JsonPropertyAttribute("objectAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1ObjectTrackingAnnotation> ObjectAnnotations { get; set; }

        /// Label annotations on video level or user specified segment level. There is exactly one element for
        /// each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("segmentLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1LabelAnnotation> SegmentLabelAnnotations { get; set; }

        /// Shot annotations. Each shot is represented as a video segment.
        [Newtonsoft.Json.JsonPropertyAttribute("shotAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1VideoSegment> ShotAnnotations { get; set; }

        /// Label annotations on shot level. There is exactly one element for each unique label.
        [Newtonsoft.Json.JsonPropertyAttribute("shotLabelAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1LabelAnnotation> ShotLabelAnnotations { get; set; }

        /// Speech transcription.
        [Newtonsoft.Json.JsonPropertyAttribute("speechTranscriptions")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1SpeechTranscription> SpeechTranscriptions { get; set; }

        /// OCR text detection and tracking. Annotations for list of detected text snippets. Each will have
        /// list of frame information associated with it.
        [Newtonsoft.Json.JsonPropertyAttribute("textAnnotations")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1TextAnnotation> TextAnnotations { get; set; }

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

    /// Video context and/or feature-specific parameters.
    public class GoogleCloudVideointelligenceV1p2beta1VideoContext : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Config for EXPLICIT_CONTENT_DETECTION.
        [Newtonsoft.Json.JsonPropertyAttribute("explicitContentDetectionConfig")]
        public virtual GoogleCloudVideointelligenceV1p2beta1ExplicitContentDetectionConfig ExplicitContentDetectionConfig { get; set; }

        /// Config for LABEL_DETECTION.
        [Newtonsoft.Json.JsonPropertyAttribute("labelDetectionConfig")]
        public virtual GoogleCloudVideointelligenceV1p2beta1LabelDetectionConfig LabelDetectionConfig { get; set; }

        /// Video segments to annotate. The segments may overlap and are not required to be contiguous or span
        /// the whole video. If unspecified, each video is treated as a single segment.
        [Newtonsoft.Json.JsonPropertyAttribute("segments")]
        public virtual System.Collections.Generic.IList<GoogleCloudVideointelligenceV1p2beta1VideoSegment> Segments { get; set; }

        /// Config for SHOT_CHANGE_DETECTION.
        [Newtonsoft.Json.JsonPropertyAttribute("shotChangeDetectionConfig")]
        public virtual GoogleCloudVideointelligenceV1p2beta1ShotChangeDetectionConfig ShotChangeDetectionConfig { get; set; }

        /// Config for SPEECH_TRANSCRIPTION.
        [Newtonsoft.Json.JsonPropertyAttribute("speechTranscriptionConfig")]
        public virtual GoogleCloudVideointelligenceV1p2beta1SpeechTranscriptionConfig SpeechTranscriptionConfig { get; set; }

        /// Config for TEXT_DETECTION.
        [Newtonsoft.Json.JsonPropertyAttribute("textDetectionConfig")]
        public virtual GoogleCloudVideointelligenceV1p2beta1TextDetectionConfig TextDetectionConfig { get; set; }

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

    /// Video segment.
    public class GoogleCloudVideointelligenceV1p2beta1VideoSegment : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Time-offset, relative to the beginning of the video, corresponding to the end of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("endTimeOffset")]
        public virtual object EndTimeOffset { get; set; }

        /// Time-offset, relative to the beginning of the video, corresponding to the start of the segment
        /// (inclusive).
        [Newtonsoft.Json.JsonPropertyAttribute("startTimeOffset")]
        public virtual object StartTimeOffset { get; set; }

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

    /// Word-specific information for recognized words. Word information is only included in the response when
    /// certain request parameters are set, such as `enable_word_time_offsets`.
    public class GoogleCloudVideointelligenceV1p2beta1WordInfo : Google.Apis.Requests.IDirectResponseSchema
    {
        /// Output only. The confidence estimate between 0.0 and 1.0. A higher number indicates an estimated
        /// greater likelihood that the recognized words are correct. This field is set only for the top alternative.
        /// This field is not guaranteed to be accurate and users should not rely on it to be always provided. The
        /// default of 0.0 is a sentinel value indicating `confidence` was not set.
        [Newtonsoft.Json.JsonPropertyAttribute("confidence")]
        public virtual System.Nullable<float> Confidence { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the end of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("endTime")]
        public virtual object EndTime { get; set; }

        /// Output only. A distinct integer value is assigned for every speaker within the audio. This field
        /// specifies which one of those speakers was detected to have spoken this word. Value ranges from 1 up to
        /// diarization_speaker_count, and is only set if speaker diarization is enabled.
        [Newtonsoft.Json.JsonPropertyAttribute("speakerTag")]
        public virtual System.Nullable<int> SpeakerTag { get; set; }

        /// Time offset relative to the beginning of the audio, and corresponding to the start of the spoken
        /// word. This field is only set if `enable_word_time_offsets=true` and only in the top hypothesis. This is an
        /// experimental feature and the accuracy of the time offset can vary.
        [Newtonsoft.Json.JsonPropertyAttribute("startTime")]
        public virtual object StartTime { get; set; }

        /// The word corresponding to this set of information.
        [Newtonsoft.Json.JsonPropertyAttribute("word")]
        public virtual string Word { 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 GoogleLongrunningOperation : 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 GoogleRpcStatus 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; }
    }

    /// 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 GoogleRpcStatus : 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; }
    }
}