Narrative Sports Recaps API

The Recaps API from Narrative Sports — 3 operation(s) for recaps.

OpenAPI Specification

usenarrative-recaps-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Narrative Sports Health Recaps API
  version: 1.0.0
servers:
- url: https://api.narrative-sports.com
tags:
- name: Recaps
paths:
  /v1/recaps:
    post:
      tags:
      - Recaps
      summary: Create Recap
      security:
      - HTTPBearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreatePublicRecapRequest'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreatePublicRecapResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
    get:
      tags:
      - Recaps
      summary: List Recaps
      security:
      - HTTPBearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            maximum: 100
            minimum: 1
          - type: 'null'
          title: Limit
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Cursor
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPublicRecapsResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/recaps/batch:
    get:
      tags:
      - Recaps
      summary: Batch Recaps
      security:
      - HTTPBearer: []
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          maximum: 100
          minimum: 1
          default: 50
          title: Limit
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Cursor
      - name: created_after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Created After
      - name: created_before
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Created Before
      - name: status
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Status
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchPublicRecapsResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
  /v1/recaps/{recap_id}:
    get:
      tags:
      - Recaps
      summary: Get Recap
      security:
      - HTTPBearer: []
      parameters:
      - name: recap_id
        in: path
        required: true
        schema:
          type: integer
          title: Recap Id
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicRecapResponse'
          description: Success
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
    delete:
      tags:
      - Recaps
      summary: Delete Recap
      security:
      - HTTPBearer: []
      parameters:
      - name: recap_id
        in: path
        required: true
        schema:
          type: integer
          title: Recap Id
      responses:
        '204':
          description: No Content
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
          description: Validation Error
components:
  schemas:
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    CreatePublicRecapRequest:
      properties:
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        project_id:
          type: integer
          title: Project Id
        target_duration_seconds:
          type: integer
          maximum: 3600
          minimum: 0
          title: Target Duration Seconds
        exclude_event_types:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Exclude Event Types
        selected_edit_ids:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Selected Edit Ids
        recap_mode:
          type: string
          title: Recap Mode
          default: custom
        fight_ceremony_config:
          anyOf:
          - items:
              $ref: '#/components/schemas/FightCeremonyConfig'
            type: array
          - type: 'null'
          title: Fight Ceremony Config
        render_video:
          type: string
          enum:
          - ffmpeg
          - none
          title: Render Video
          default: ffmpeg
        sport:
          anyOf:
          - type: string
          - type: 'null'
          title: Sport
        recap_options:
          anyOf:
          - $ref: '#/components/schemas/RecapOptions'
          - type: 'null'
      type: object
      required:
      - project_id
      - target_duration_seconds
      title: CreatePublicRecapRequest
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    ListPublicRecapsResponse:
      properties:
        recaps:
          items:
            $ref: '#/components/schemas/PublicRecapResponse'
          type: array
          title: Recaps
        total:
          type: integer
          title: Total
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      type: object
      required:
      - recaps
      - total
      title: ListPublicRecapsResponse
    CreatePublicRecapResponse:
      properties:
        id:
          type: integer
          title: Id
        status:
          type: string
          title: Status
          default: queued
        task_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Task Id
      type: object
      required:
      - id
      title: CreatePublicRecapResponse
    FightCeremonyConfig:
      properties:
        fight_number:
          type: integer
          title: Fight Number
        include_walkon:
          type: boolean
          title: Include Walkon
          default: false
        include_decision:
          type: boolean
          title: Include Decision
          default: false
      type: object
      required:
      - fight_number
      title: FightCeremonyConfig
    BatchPublicRecapsResponse:
      properties:
        recaps:
          items:
            $ref: '#/components/schemas/PublicRecapResponse'
          type: array
          title: Recaps
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      type: object
      required:
      - recaps
      title: BatchPublicRecapsResponse
    RecapOptions:
      properties:
        start_style:
          anyOf:
          - type: string
            enum:
            - none
            - short_walkout
            - full_walkout
          - type: 'null'
          title: Start Style
        ending_style:
          anyOf:
          - type: string
            enum:
            - auto
            - decision_or_ending
          - type: 'null'
          title: Ending Style
        pacing:
          anyOf:
          - type: string
            enum:
            - tight_action
            - balanced
            - action_sprint
          - type: 'null'
          title: Pacing
        editorial_prompt:
          anyOf:
          - type: string
            maxLength: 2000
          - type: 'null'
          title: Editorial Prompt
        duration_mode:
          anyOf:
          - type: string
            enum:
            - exact
            - range
            - uncapped
          - type: 'null'
          title: Duration Mode
        target_duration_min_seconds:
          anyOf:
          - type: integer
            maximum: 3600
            minimum: 60
          - type: 'null'
          title: Target Duration Min Seconds
        target_duration_max_seconds:
          anyOf:
          - type: integer
            maximum: 3600
            minimum: 60
          - type: 'null'
          title: Target Duration Max Seconds
      type: object
      title: RecapOptions
    PublicRecapResponse:
      properties:
        id:
          type: integer
          title: Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        editor_project_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Editor Project Id
        status:
          type: string
          title: Status
        project_id:
          type: integer
          title: Project Id
        target_duration_seconds:
          anyOf:
          - type: integer
          - type: 'null'
          title: Target Duration Seconds
        render_video:
          anyOf:
          - type: string
          - type: 'null'
          title: Render Video
        exclude_event_types:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Exclude Event Types
        video_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Video Url
        otio_timeline:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Otio Timeline
        duration:
          anyOf:
          - type: number
          - type: 'null'
          title: Duration
        num_clips:
          anyOf:
          - type: integer
          - type: 'null'
          title: Num Clips
        selected_edit_ids:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Selected Edit Ids
        render_job_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Render Job Id
        thumbnail_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Thumbnail Url
        failure_reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Failure Reason
        task_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Task Id
        created_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Created At
      type: object
      required:
      - id
      - status
      - project_id
      title: PublicRecapResponse
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer