---
openapi: 3.1.0
components:
  schemas:
    AgeCategory:
      type: string
      enum:
      - YOUTH
      - JUNIOR
      - SENIOR
    Broadcast:
      type: object
      required:
      - siteId
      - start
      properties:
        id:
          $ref: "#/components/schemas/ObjectId"
          type: object
          description: Internal id
        extId:
          type: string
          description: Your unique id
        extIds:
          type: array
          items:
            type: string
          description: "Your unique ids, used when there are multiple games played\
            \ simultaneously"
        siteId:
          type: string
        start:
          $ref: "#/components/schemas/Date"
        startBroadcast:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        viewerStartTime:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        streamStart:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        end:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        streamEnd:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        updated:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        venueId:
          type: string
          description: Reference to a Venue's internal id
        venueExtId:
          type: string
          description: Your unique Venue id
        name:
          type: string
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Group"
          description: "List of groups, used instead of using homeTeam and awayTeam,\
            \ when there are multiple games played simultaneously"
        homeTeam:
          $ref: "#/components/schemas/Group"
          type: object
          description: Whole group object you get from group service
        awayTeam:
          $ref: "#/components/schemas/Group"
          type: object
          description: Whole group object you get from group service
        competition:
          $ref: "#/components/schemas/BroadcastCompetition"
          type: object
          description: Whole competition object you get from competition service
        cancelled:
          type: boolean
        live:
          type: boolean
        season:
          type: string
    BroadcastCompetition:
      type: object
      properties:
        id:
          $ref: "#/components/schemas/ObjectId"
          type: string
          description: Internal id
        competitionGroupId:
          type: string
        name:
          type: string
        type:
          $ref: "#/components/schemas/Type"
        start:
          $ref: "#/components/schemas/Date"
        end:
          $ref: "#/components/schemas/Date"
        siteId:
          type: string
        extId:
          type: string
        playerLevel:
          $ref: "#/components/schemas/PlayerLevel"
        image:
          $ref: "#/components/schemas/File"
        sport:
          $ref: "#/components/schemas/Sport"
        venues:
          type: array
          items:
            $ref: "#/components/schemas/Venue"
    BroadcastExtRequest:
      type: object
      required:
      - siteId
      - competition
      - start
      properties:
        extId:
          type: string
        venueExtId:
          type: string
        siteId:
          type: string
        homeTeam:
          $ref: "#/components/schemas/GroupExt"
        awayTeam:
          $ref: "#/components/schemas/GroupExt"
        teams:
          type: array
          items:
            $ref: "#/components/schemas/GroupExt"
        competition:
          $ref: "#/components/schemas/CompetitionExt"
        start:
          $ref: "#/components/schemas/Date"
        end:
          $ref: "#/components/schemas/Date"
        name:
          type: string
        cancelled:
          type: boolean
    BroadcastQueryRequest:
      type: object
      properties:
        matchupGroupIds:
          type: array
          items:
            type: string
        playerLevels:
          type: array
          items:
            type: string
        gender:
          $ref: "#/components/schemas/Gender"
        endFrom:
          $ref: "#/components/schemas/Date"
        flags:
          type: array
          items:
            type: string
        pageSize:
          type: integer
          format: int32
          minimum: 0
        ageCategory:
          $ref: "#/components/schemas/AgeCategory"
        competitionIds:
          type: array
          items:
            type: string
        startTo:
          $ref: "#/components/schemas/Date"
        includeLive:
          type: boolean
        groupIds:
          type: array
          items:
            type: string
        season:
          type: string
        broadcastIds:
          type: array
          items:
            type: string
        cameraStartTo:
          $ref: "#/components/schemas/Date"
        splitTime:
          $ref: "#/components/schemas/Date"
        live:
          type: boolean
        excludeTags:
          type: array
          items:
            type: string
        cache:
          type: boolean
        startFrom:
          $ref: "#/components/schemas/Date"
        excludeIds:
          type: array
          items:
            type: string
        competitionType:
          $ref: "#/components/schemas/Type"
        extSrc:
          type: string
        externalGroupId:
          type: string
        filters:
          type: array
          items:
            $ref: "#/components/schemas/FilterType"
        teamIds:
          type: array
          items:
            type: string
        hideCancelled:
          type: boolean
        tags:
          type: array
          items:
            type: string
        sortColumn:
          type: string
        competitionGroupIds:
          type: array
          items:
            type: string
        endTo:
          $ref: "#/components/schemas/Date"
        round:
          type: integer
          format: int32
        pageIndex:
          type: integer
          format: int32
          minimum: 0
        sortOrder:
          $ref: "#/components/schemas/SortOrder"
        cameraStartFrom:
          $ref: "#/components/schemas/Date"
        name:
          type: string
        siteId:
          type: array
          items:
            type: string
        teamExtIds:
          type: array
          items:
            type: string
        level1:
          type: string
        venueIds:
          type: array
          items:
            type: string
        externalBroadcastIds:
          type: array
          items:
            type: string
        age:
          type: integer
          format: int32
        level2:
          type: string
    BroadcastVideoPassword:
      type: object
      properties:
        password:
          type: string
    CDNType:
      type: string
      enum:
      - AZURE
      - GLOBAL
      - BUNNY
      - BUNNY_HIGH_VOLUME
    Camera:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        extId:
          type: string
        cameraType:
          $ref: "#/components/schemas/CameraType"
        videoDelayMs:
          type: integer
          format: int32
        commentaryDelayMs:
          type: integer
          format: int32
        metaData:
          type: array
          items:
            $ref: "#/components/schemas/MetaData"
        cameraSettings:
          $ref: "#/components/schemas/CameraSettings"
        category:
          $ref: "#/components/schemas/VenueCameraCategory"
        providerConfigId:
          type: string
        ocrActive:
          type: boolean
        view:
          $ref: "#/components/schemas/View"
    CameraSettings:
      type: object
      properties:
        activeView:
          $ref: "#/components/schemas/View"
    CameraType:
      type: string
      enum:
      - SA_TNO_V1
      - SA_TNO_V2
      - LIGHT_CAM_V1
      - PRODUCER_APP_V1
      - PADEL_GO_V1
      - PIXELLOT_V1
      - SA_PTZ_V1
      - SPIIDEO_V1
      - STAIGE_V1
      - EXTERNAL
    CdnUrl:
      type: object
      properties:
        cdnType:
          $ref: "#/components/schemas/CDNType"
        url:
          type: string
    CompetitionExt:
      type: object
      properties:
        extId:
          type: string
    Config:
      type: object
      required:
      - type
      properties:
        type:
          $ref: "#/components/schemas/Type1"
        configEnum:
          $ref: "#/components/schemas/ConfigEnum"
        string:
          type: string
        string_en:
          type: string
        link:
          $ref: "#/components/schemas/Link"
        active:
          type: boolean
        sourceType:
          $ref: "#/components/schemas/ConfigSource"
        sourceId:
          type: string
    ConfigEnum:
      type: string
      enum:
      - VENUE_TECHNICAL_ERROR
      - VENUE_OFFLINE_ERROR
      - VENUE_NETWORK_ISSUES
      - VENUE_SOUND_ISSUES
      - BROADCAST_ISSUES
      - COMMON_ISSUES_1
      - COMMON_ISSUES_2
      - CHAT
      - CUSTOM
      - BROADCAST_DELAYED_ONGOING
    ConfigSource:
      type: string
      enum:
      - COMPETITION
      - VENUE
    CoordinateReferenceSystem:
      type: object
      properties:
        type:
          $ref: "#/components/schemas/CoordinateReferenceSystemType"
    CoordinateReferenceSystemType:
      type: string
      enum:
      - NAME
      - LINK
    CreateBroadcast:
      type: object
      required:
      - siteId
      - start
      properties:
        extId:
          type: string
          description: Your unique id
        extIds:
          type: array
          items:
            type: string
          description: "Your unique ids, used when there are multiple games played\
            \ simultaneously"
        siteId:
          type: string
        start:
          $ref: "#/components/schemas/Date"
        startBroadcast:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        viewerStartTime:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        streamStart:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        end:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        updated:
          $ref: "#/components/schemas/Date"
          type: string
          readOnly: true
        venueId:
          type: string
          description: Reference to a Venue's internal id
        name:
          type: string
        teams:
          type: array
          items:
            $ref: "#/components/schemas/Group"
          description: "List of groups, used when there are multiple games played\
            \ simultaneously"
        homeTeam:
          $ref: "#/components/schemas/Group"
          type: object
          description: Whole group object you get from group service
        awayTeam:
          $ref: "#/components/schemas/Group"
          type: object
          description: Whole group object you get from group service
        competition:
          $ref: "#/components/schemas/BroadcastCompetition"
          type: object
          description: Whole competition object you get from competition service
        cancelled:
          type: boolean
    Date:
      type: string
      format: date
      examples:
      - 2022-03-10
    File:
      type: object
      required:
      - id
      - blobId
      - mimeType
      properties:
        id:
          type: string
        blobId:
          type: string
        mimeType:
          type: string
        size:
          type: integer
          format: int64
        fileName:
          type: string
        storageType:
          $ref: "#/components/schemas/StorageType"
        url:
          type: string
    FilterType:
      type: string
      enum:
      - PS
      - TA
      - LL
      - EX
      - BO
    Gender:
      type: string
      enum:
      - MALE
      - FEMALE
      - MIXED
    GeoJsonObjectType:
      type: string
      enum:
      - GEOMETRY_COLLECTION
      - LINE_STRING
      - MULTI_LINE_STRING
      - MULTI_POINT
      - MULTI_POLYGON
      - POINT
      - POLYGON
    Group:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        parentId:
          type: string
        level1:
          type: string
        level2:
          type: string
        externalId:
          type: string
        homeHex:
          type: string
        awayHex:
          type: string
        siteId:
          type: string
        type:
          $ref: "#/components/schemas/GroupType"
        slug:
          type: string
        teamId:
          type: string
        teamExtId:
          type: string
        teamName:
          type: string
        shortName:
          type: string
        longName:
          type: string
        location:
          $ref: "#/components/schemas/Point"
        logo:
          $ref: "#/components/schemas/File"
    GroupExt:
      type: object
      properties:
        extId:
          type: string
        teamExtId:
          type: string
        teamName:
          type: string
    GroupType:
      type: string
      enum:
      - TEAM
      - CLUB
      - NATIONAL
      - DISTRICT
    Link:
      type: object
      properties:
        url:
          type: string
        title:
          type: string
        title_en:
          type: string
    MetaData:
      type: object
      properties:
        name:
          type: string
        values:
          type: object
          additionalProperties:
            type: string
        value:
          type: string
        image:
          $ref: "#/components/schemas/File"
    ObjectId:
      type: string
      format: ObjectId
      description: MongoDB ObjectId represented as a string.
    PlayerLevel:
      type: object
      properties:
        name:
          type: string
        extId:
          type: string
        maxAge:
          type: integer
          format: int32
        gender:
          $ref: "#/components/schemas/Gender"
        category:
          $ref: "#/components/schemas/AgeCategory"
    Point:
      type: object
      properties:
        coordinateReferenceSystem:
          $ref: "#/components/schemas/CoordinateReferenceSystem"
        coordinate:
          $ref: "#/components/schemas/Position"
        type:
          $ref: "#/components/schemas/GeoJsonObjectType"
        coordinates:
          $ref: "#/components/schemas/Position"
        position:
          $ref: "#/components/schemas/Position"
    Position:
      type: object
      properties:
        values:
          type: array
          items:
            type: number
            format: double
    Settings:
      type: object
      properties:
        ocrActive:
          type: boolean
        presetsLeftRight:
          type: boolean
        testMode:
          type: boolean
    SortOrder:
      type: string
      enum:
      - Ascending
      - Descending
    Sport:
      type: string
      enum:
      - ICE_HOCKEY
      - HANDBALL
      - BASKETBALL
      - FOOTBALL
      - FLOORBALL
      - VOLLEYBALL
      - TENNIS
      - RUGBY
      - FIELD_HOCKEY
      - RINKBALL
      - RINGETTE
      - BANDY
      - FIGURE_SKATING
      - TABLE_TENNIS
      - MARTIAL_ARTS
      - CHEER_LEADING
      - SHORT_TRACK
      - LONG_TRACK
      - CURLING
      - NETBALL
      - NETBALL_SUPER_SHOT
      - NETBALL_FAST_5
      - FUTSAL
      - TOUCH_RUGBY
    StorageType:
      type: string
      enum:
      - LAS_FILES
      - LPP
      - EXTERNAL
    Type:
      type: string
      enum:
      - SERIES
      - CUP
      - TOURNAMENT
      - OFF_SEASON
      - PRE_SEASON
      - PRACTICE_MATCH
    Type1:
      type: string
      enum:
      - NOTE
      - CUSTOM
    Venue:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        extId:
          type: string
        settings:
          $ref: "#/components/schemas/Settings"
        cameras:
          type: array
          items:
            $ref: "#/components/schemas/Camera"
        siteId:
          type: string
        configs:
          type: array
          items:
            $ref: "#/components/schemas/Config"
    VenueCameraCategory:
      type: string
      enum:
      - MAIN
    Video:
      type: object
      properties:
        videoUrl:
          type: string
        videoUrl2:
          type: string
        status:
          $ref: "#/components/schemas/VideoStatus"
        mimeType:
          type: string
        videoFormat:
          $ref: "#/components/schemas/VideoFormat"
        products:
          type: array
          items:
            type: string
        geoBlockAllowlist:
          type: array
          items:
            type: string
    VideoFormat:
      type: string
      enum:
      - HLS
      - DASH
      - MP4
    VideoStatus:
      type: string
      enum:
      - OK
      - NOT_FOUND
      - ERROR
      - NO_ACCESS
      - NOT_AUTHORIZED
      - GEO_BLOCKED
    View:
      type: object
      properties:
        name:
          type: string
        desc:
          type: string
  securitySchemes:
    SecurityScheme:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Authentication
paths:
  /broadcast:
    put:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Broadcast"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
        "400":
          description: Bad Request
      summary: Update Broadcast
      tags:
      - Broadcast Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
    patch:
      parameters:
      - name: ignore-locked-changes
        in: query
        schema:
          type: boolean
      - name: remove-external-id
        in: query
        schema:
          type: boolean
      - name: remove-image
        in: query
        schema:
          type: boolean
      - name: remove-round
        in: query
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/Broadcast"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
      summary: Patch Broadcast
      tags:
      - Broadcast Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
    get:
      parameters:
      - name: age
        in: query
        schema:
          type: integer
          format: int32
      - name: age-category
        in: query
        schema:
          $ref: "#/components/schemas/AgeCategory"
      - name: broadcast-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: cache
        in: query
        schema:
          type: boolean
      - name: camera-start-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: camera-start-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: competition-group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: competition-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: competition-type
        in: query
        schema:
          $ref: "#/components/schemas/Type"
      - name: end-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: end-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: exclude-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: exclude-tag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: external-broadcast-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: external-group-id
        in: query
        schema:
          type: string
      - name: external-source
        in: query
        schema:
          type: string
      - name: filter-type
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/FilterType"
      - name: flag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: gender
        in: query
        schema:
          $ref: "#/components/schemas/Gender"
      - name: group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: hide-cancelled
        in: query
        schema:
          type: boolean
      - name: include-live
        in: query
        schema:
          type: boolean
      - name: level1
        in: query
        schema:
          type: string
      - name: level2
        in: query
        schema:
          type: string
      - name: live
        in: query
        schema:
          type: boolean
      - name: matchup-group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: name
        in: query
        schema:
          type: string
      - name: page-index
        in: query
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: page-size
        in: query
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: player-level
        in: query
        schema:
          type: array
          items:
            type: string
      - name: round
        in: query
        schema:
          type: integer
          format: int32
      - name: season
        in: query
        schema:
          type: string
      - name: site-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: sort-column
        in: query
        schema:
          type: string
      - name: sort-order
        in: query
        schema:
          $ref: "#/components/schemas/SortOrder"
      - name: split-time
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: start-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: start-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: tag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: team-ext-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: team-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: venue-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: site-id
        in: header
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Broadcast"
      summary: Get Broadcasts
      tags:
      - Broadcast Resource
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/CreateBroadcast"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
        "400":
          description: Bad Request
      summary: Create Broadcast
      tags:
      - Broadcast Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
  /broadcast/ext:
    patch:
      parameters:
      - name: remove-external-id
        in: query
        schema:
          type: boolean
      - name: remove-image
        in: query
        schema:
          type: boolean
      - name: remove-round
        in: query
        schema:
          type: boolean
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BroadcastExtRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
      summary: Patch Broadcast Ext
      tags:
      - Broadcast Ext Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
    post:
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BroadcastExtRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
        "400":
          description: Bad Request
      summary: Create Broadcast Ext
      tags:
      - Broadcast Ext Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
  /broadcast/query:
    post:
      parameters:
      - name: site-id
        in: header
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BroadcastQueryRequest"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Broadcast"
        "400":
          description: Bad Request
      summary: Query Broadcasts
      tags:
      - Broadcast Resource
  /broadcast/video:
    get:
      parameters:
      - name: age
        in: query
        schema:
          type: integer
          format: int32
      - name: age-category
        in: query
        schema:
          $ref: "#/components/schemas/AgeCategory"
      - name: broadcast-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: cache
        in: query
        schema:
          type: boolean
      - name: camera-start-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: camera-start-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: competition-group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: competition-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: competition-type
        in: query
        schema:
          $ref: "#/components/schemas/Type"
      - name: end-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: end-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: exclude-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: exclude-tag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: external-broadcast-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: external-group-id
        in: query
        schema:
          type: string
      - name: external-source
        in: query
        schema:
          type: string
      - name: filter-type
        in: query
        schema:
          type: array
          items:
            $ref: "#/components/schemas/FilterType"
      - name: flag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: gender
        in: query
        schema:
          $ref: "#/components/schemas/Gender"
      - name: group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: hide-cancelled
        in: query
        schema:
          type: boolean
      - name: include-live
        in: query
        schema:
          type: boolean
      - name: level1
        in: query
        schema:
          type: string
      - name: level2
        in: query
        schema:
          type: string
      - name: live
        in: query
        schema:
          type: boolean
      - name: matchup-group-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: name
        in: query
        schema:
          type: string
      - name: page-index
        in: query
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: page-size
        in: query
        schema:
          type: integer
          format: int32
          minimum: 0
      - name: player-level
        in: query
        schema:
          type: array
          items:
            type: string
      - name: round
        in: query
        schema:
          type: integer
          format: int32
      - name: season
        in: query
        schema:
          type: string
      - name: site-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: sort-column
        in: query
        schema:
          type: string
      - name: sort-order
        in: query
        schema:
          $ref: "#/components/schemas/SortOrder"
      - name: split-time
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: start-from
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: start-to
        in: query
        schema:
          $ref: "#/components/schemas/Date"
      - name: tag
        in: query
        schema:
          type: array
          items:
            type: string
      - name: team-ext-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: team-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: venue-id
        in: query
        schema:
          type: array
          items:
            type: string
      - name: site-id
        in: header
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: "#/components/schemas/Video"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
      summary: Get Videos
      tags:
      - Broadcast Video Resource
      security:
      - SecurityScheme:
        - System
        - SuperAdmin
        - Admin
  /broadcast/video/access-token/{broadcastId}:
    get:
      parameters:
      - name: broadcastId
        in: path
        required: true
        schema:
          type: string
      - name: access-token
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Video"
      summary: Get Video With Access Token
      tags:
      - Broadcast Video Resource
  /broadcast/video/cdn-url:
    get:
      parameters:
      - name: live
        in: query
        schema:
          type: boolean
      - name: site-id
        in: query
        schema:
          type: string
        required: true
      - name: storage-id
        in: query
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/CdnUrl"
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
      summary: Get Cdn Url
      tags:
      - Broadcast Video Resource
      security:
      - SecurityScheme:
        - System
        - SuperAdmin
  /broadcast/video/{broadcastId}:
    post:
      parameters:
      - name: broadcastId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/BroadcastVideoPassword"
        required: true
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Video"
        "400":
          description: Bad Request
      summary: Get Video
      tags:
      - Broadcast Video Resource
    get:
      parameters:
      - name: broadcastId
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Video"
      summary: Get Video
      tags:
      - Broadcast Video Resource
  /broadcast/{broadcastId}:
    get:
      parameters:
      - name: broadcastId
        in: path
        required: true
        schema:
          type: string
      - name: site-id
        in: header
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Broadcast"
      summary: Get Broadcast
      tags:
      - Broadcast Resource
    delete:
      parameters:
      - name: broadcastId
        in: path
        required: true
        schema:
          type: string
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                type: boolean
        "401":
          description: Not Authorized
        "403":
          description: Not Allowed
      summary: Delete Broadcast
      tags:
      - Broadcast Resource
      security:
      - SecurityScheme:
        - SuperAdmin
        - System
        - Admin
        - Member
info:
  title: Broadcast Service API
  version: 1.0.0-SNAPSHOT
