// Copyright 2026 Google LLC
//
// 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.

syntax = "proto3";

package google.ads.admanager.v1;

option csharp_namespace = "Google.Ads.AdManager.V1";
option go_package = "google.golang.org/genproto/googleapis/ads/admanager/v1;admanager";
option java_multiple_files = true;
option java_outer_classname = "LiveStreamEventEnumsProto";
option java_package = "com.google.ads.admanager.v1";
option php_namespace = "Google\\Ads\\AdManager\\V1";
option ruby_package = "Google::Ads::AdManager::V1";

// Wrapper message for
// [SlateStatus][google.ads.admanager.v1.SlateStatusEnum.SlateStatus]
message SlateStatusEnum {
  // Describes the status of a Slate object.
  enum SlateStatus {
    // Default value. This value is unused.
    SLATE_STATUS_UNSPECIFIED = 0;

    // Indicates the Slate has been created and is eligible for streaming.
    ACTIVE = 1;

    // Indicates the Slate has been archived.
    ARCHIVED = 2;
  }
}

// Wrapper message for
// [LiveStreamEventStatus][google.ads.admanager.v1.LiveStreamEventStatusEnum.LiveStreamEventStatus]
message LiveStreamEventStatusEnum {
  // Describes the status of a LiveStreamEvent object.
  enum LiveStreamEventStatus {
    // Default value. This value is unused.
    LIVE_STREAM_EVENT_STATUS_UNSPECIFIED = 0;

    // Indicates the LiveStreamEvent has been created and is eligible
    // for streaming.
    ACTIVE = 1;

    // Indicates that the stream is still being served, but ad insertion should
    // be paused temporarily.
    ADS_PAUSED = 2;

    // Indicates the LiveStreamEvent has been archived.
    ARCHIVED = 3;

    // Indicates the LiveStreamEvent has been paused. This
    // can be made #ACTIVE at later time.
    PAUSED = 4;
  }
}

// Wrapper message for
// [AdBreakMarkupType][google.ads.admanager.v1.AdBreakMarkupTypeEnum.AdBreakMarkupType]
message AdBreakMarkupTypeEnum {
  // Describes the SCTE ad break markups for a LiveStreamEvent.
  enum AdBreakMarkupType {
    // Default value. This value is unused.
    AD_BREAK_MARKUP_TYPE_UNSPECIFIED = 0;

    // The DATERANGE ad break marker type. This mark up type is only
    // applicable for HLS live streams.
    HLS_DATERANGE_SPLICE = 1;

    // The CUE-OUT/CUE-IN ad break marker type. This mark up type is only
    // applicable for HLS live streams.
    HLS_EXT_CUE = 2;

    // The CUE (Adobe/Azure Prime Time) ad break marker type. This mark up type
    // is only applicable for HLS live streams.
    HLS_PRIMETIME_SPLICE = 3;

    // The SCTE35 Binary Time Signal: Break Start/End ad break marker type. This
    // mark up type is only applicable for HLS and DASH live streams.
    SCTE35_BINARY_BREAK_START_END = 4;

    // The SCTE35 Binary Time Signal: Provider Ad Start/End ad break marker
    // type. This mark up type is only applicable for HLS and DASH live streams.
    SCTE35_BINARY_PROVIDER_AD_START_END = 5;

    // The SCTE35 Binary Time Signal: Provider Placement Opportunity Start/End
    // ad break marker type. This mark up type is only applicable for HLS and
    // DASH live streams.
    SCTE35_BINARY_PROVIDER_PLACEMENT_OP_START_END = 6;

    // The SCTE35 Binary Splice Insert ad break marker type. This mark up type
    // is only applicable for HLS and DASH live streams.
    SCTE35_BINARY_SPLICE_INSERT = 7;

    // The SCTE35 XML Splice In/Out ad break marker type. This markup type is
    // only applicable for DASH live streams.
    SCTE35_XML_SPLICE_INSERT = 11;
  }
}

// Wrapper message for
// [LiveStreamEventStreamingFormat][google.ads.admanager.v1.LiveStreamEventStreamingFormatEnum.LiveStreamEventStreamingFormat]
message LiveStreamEventStreamingFormatEnum {
  // The LiveStreamEvent streaming format.
  enum LiveStreamEventStreamingFormat {
    // Default value. This value is unused.
    LIVE_STREAM_EVENT_STREAMING_FORMAT_UNSPECIFIED = 0;

    // The format of the live stream media is MPEG-DASH.
    DASH = 1;

    // The format of the live stream media is HTTP Live Streaming.
    HLS = 2;
  }
}

// Wrapper message for
// [DynamicAdInsertionType][google.ads.admanager.v1.DynamicAdInsertionTypeEnum.DynamicAdInsertionType]
message DynamicAdInsertionTypeEnum {
  // Describes how the live stream will have ads dynamically inserted into
  // playlists.
  enum DynamicAdInsertionType {
    // Default value. This value is unused.
    DYNAMIC_AD_INSERTION_TYPE_UNSPECIFIED = 0;

    // Content manifest is served by Google DAI. Content and ads are stitched
    // together into a unique video manifest per user.
    LINEAR = 1;

    // Ads manifest is served by Google DAI, containing unique ad pod segments
    // for the video player to switch to from the content stream, or for the
    // partner to stitch directly into the user content manifest.
    POD_SERVING_MANIFEST = 2;

    // Content manifest is served by the partner, embedding Google DAI ad
    // segment URLs which redirect to unique Google DAI ad segments per user.
    POD_SERVING_REDIRECT = 3;
  }
}

// Wrapper message for
// [HlsSettingsPlaylistType][google.ads.admanager.v1.HlsSettingsPlaylistTypeEnum.HlsSettingsPlaylistType]
message HlsSettingsPlaylistTypeEnum {
  // Describes the type of the playlist associated with this live stream. This
  // is analogous to the EXT-X-PLAYLIST-TYPE HLS tag. Use
  // HlsSettingsPlaylistType.EVENT for streams with the value
  // "#EXT-X-PLAYLIST-TYPE:EVENT" and use HlsSettingsPlaylistType.LIVE for
  // streams without the tag.
  enum HlsSettingsPlaylistType {
    // Default value. This value is unused.
    HLS_SETTINGS_PLAYLIST_TYPE_UNSPECIFIED = 0;

    // The playlist is an event, which means that media segments can only be
    // added to the end of the playlist. This allows viewers to scrub back to
    // the beginning of the playlist.
    EVENT = 1;

    // The playlist is a live stream and there are no restrictions on whether
    // media segments can be removed from the beginning of the playlist.
    LIVE = 2;
  }
}

// Wrapper message for
// [HlsMasterPlaylistRefreshType][google.ads.admanager.v1.HlsMasterPlaylistRefreshTypeEnum.HlsMasterPlaylistRefreshType]
message HlsMasterPlaylistRefreshTypeEnum {
  // Enumerates the different ways an HLS master playlist on a live stream will
  // can be refreshed.
  enum HlsMasterPlaylistRefreshType {
    // Default value. This value is unused.
    HLS_MASTER_PLAYLIST_REFRESH_TYPE_UNSPECIFIED = 0;

    // The master playlist will automatically be refreshed.
    AUTOMATIC = 1;

    // The master playlist will only be refreshed when requested.
    MANUAL = 2;
  }
}

// Wrapper message for
// [AdBreakFillType][google.ads.admanager.v1.AdBreakFillTypeEnum.AdBreakFillType]
message AdBreakFillTypeEnum {
  // Describes what should be used to fill an empty or underfilled ad break
  // during a live stream.
  enum AdBreakFillType {
    // Default value. This value is unused.
    AD_BREAK_FILL_TYPE_UNSPECIFIED = 0;

    // Ad break should be filled with mostly underlying content. When ad content
    // can't be aligned with underlying content during transition, the gap will
    // be bridged with slate to maintain the timeline.
    MINIMIZE_SLATE = 1;

    // Ad break should be filled with slate.
    SLATE = 2;

    // Ad break should be filled with underlying content.
    UNDERLYING_CONTENT = 3;
  }
}
