from typing import Any from video.constants import job_io_fields, job_types JOB_TYPE_TO_CREATE_JOB_INPUTS_SCHEMA_MAP: dict[str, dict[str, Any]] = { job_types.CALCULATE_AUDIO_STATS: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: { "type": "string", }, job_io_fields.INPUT_VIDEO_S3_KEY: { "type": "string", }, }, }, job_types.DETECT_BLACK_INTERVALS_AT_BEGINNING_AND_END_OF_VIDEO: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: {"type": "number"}, job_io_fields.VIDEO_STREAM_DURATION_SECONDS: {"type": "number"}, }, }, job_types.DETECT_MAX_VOLUME: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, }, }, job_types.DETECT_SILENT_INTERVALS_AT_BEGINNING_AND_END_OF_AUDIO: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: {"type": "number"}, job_io_fields.AUDIO_STREAM_DURATION_SECONDS: {"type": "number"}, }, }, job_types.DETECT_VIDEO_LOCATION_AND_DIMENSIONS_WITHIN_BLACK_BORDER: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, job_io_fields.VIDEO_STREAM_WIDTH_PIXELS: {"type": "number"}, job_io_fields.VIDEO_STREAM_HEIGHT_PIXELS: {"type": "number"}, }, }, job_types.EXTRACT_METADATA: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, }, }, job_types.VALIDATE_METADATA: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.NUM_AUDIO_STREAMS: {"type": "integer"}, job_io_fields.NUM_VIDEO_STREAMS: {"type": "integer"}, job_io_fields.CONTAINER_FORMAT: {"type": ["string", "null"]}, job_io_fields.CONTAINER_FORMAT_PROFILE: {"type": ["string", "null"]}, job_io_fields.AUDIO_STREAM_CHANNEL_COUNT: {"type": ["integer", "null"]}, job_io_fields.AUDIO_STREAM_CHANNEL_LAYOUT: {"type": ["string", "null"]}, job_io_fields.AUDIO_STREAM_DURATION_SECONDS: {"type": ["number", "null"]}, job_io_fields.VIDEO_STREAM_CODEC: {"type": ["string", "null"]}, job_io_fields.VIDEO_STREAM_CODEC_PROFILE: {"type": ["string", "null"]}, job_io_fields.AUDIO_STREAM_CODEC: {"type": ["string", "null"]}, job_io_fields.AUDIO_STREAM_CODEC_PROFILE: {"type": ["string", "null"]}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: { "type": ["number", "null"] }, job_io_fields.VIDEO_STREAM_WIDTH_PIXELS: {"type": ["number", "null"]}, job_io_fields.VIDEO_STREAM_HEIGHT_PIXELS: {"type": ["number", "null"]}, job_io_fields.AUDIO_STREAM_BIT_RATE_BITS_PER_SECOND: { "type": ["number", "null"] }, job_io_fields.AUDIO_STREAM_SAMPLE_RATE_SAMPLES_PER_SECOND: { "type": ["number", "null"] }, job_io_fields.VIDEO_STREAM_BIT_RATE_BITS_PER_SECOND: { "type": ["number", "null"] }, job_io_fields.VIDEO_STREAM_PIXEL_ASPECT_RATIO: {"type": ["number", "null"]}, job_io_fields.VIDEO_STREAM_DURATION_SECONDS: {"type": ["number", "null"]}, }, }, job_types.VALIDATE_ANALYSIS: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.VIDEO_INNER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.SILENT_INTERVAL_AT_BEGINNING_ENDS_AT_SECONDS: { "type": ["number", "null"] }, job_io_fields.SILENT_INTERVAL_AT_END_BEGINS_AT_SECONDS: { "type": ["number", "null"] }, job_io_fields.MAX_VOLUME_DECIBELS: {"type": "number"}, job_io_fields.BLACK_INTERVAL_AT_BEGINNING_ENDS_AT_SECONDS: { "type": ["number", "null"] }, job_io_fields.BLACK_INTERVAL_AT_END_BEGINS_AT_SECONDS: { "type": ["number", "null"] }, job_io_fields.LEFT_AUDIO_CHANNEL_RMS_VOLUME_DECIBELS: {"type": "number"}, job_io_fields.RIGHT_AUDIO_CHANNEL_RMS_VOLUME_DECIBELS: {"type": "number"}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: {"type": "number"}, job_io_fields.VIDEO_STREAM_PIXEL_ASPECT_RATIO: {"type": "number"}, # Normally derived from the black/silent intervals above, but # accepted as a caller override (the re-encode's trim # abstraction): when present, validate_analysis uses them instead of # re-deriving the clip. job_io_fields.INPUT_CLIP_START_TIMECODE: {"type": ["string", "null"]}, job_io_fields.INPUT_CLIP_END_TIMECODE: {"type": ["string", "null"]}, }, }, job_types.TRANSFER_PRORES_FROM_S3_TO_RIPPER: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY: {"type": "string"}, job_io_fields.UPC: {"type": "integer"}, }, }, job_types.TRANSFER_H264_FROM_S3_TO_RIPPER: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY: {"type": "string"}, job_io_fields.UPC: {"type": "integer"}, job_io_fields.PRORES_MEZZANINE_METADATA: {"type": "string"}, }, }, job_types.TRANSFER_FROM_BROWSER_TO_S3: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.AWS_ACCESS_KEY: { "type": "string", }, job_io_fields.AWS_SECRET_ACCESS_KEY: { "type": "string", }, job_io_fields.INPUT_VIDEO_S3_BUCKET: { "type": "string", }, job_io_fields.INPUT_VIDEO_S3_KEY: { "type": "string", }, job_io_fields.TOKEN: { "type": "string", }, job_io_fields.FILENAME: { "type": "string", }, job_io_fields.FILESIZE: { "type": "number", }, job_io_fields.S3_TOKEN_EXPIRATION: { "type": "string", }, }, }, job_types.TRANSFER_FROM_S3_TO_S3: { "type": ["object", "null"], "additionalProperties": True, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: { "type": "string", }, job_io_fields.INPUT_VIDEO_S3_KEY: { "type": "string", }, job_io_fields.WORKFLOW_JOB_ID: { "type": "integer", }, }, }, job_types.TRANSFER_FROM_GOOGLE_DRIVE_TO_S3: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.TRANSFER_FROM_GOOGLE_DRIVE_TO_S3_JOB_ID: { "type": "integer", }, job_io_fields.GOOGLE_DRIVE_FILES: { "type": "array", "items": { "type": "object", "properties": {}, }, }, job_io_fields.GOOGLE_DRIVE_AUTHORIZATION: { "type": "object", "properties": {}, }, job_io_fields.WORKFLOW_JOB_ID: { "type": "integer", }, }, }, job_types.TRANSFER_FROM_DROPBOX_TO_S3: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.TRANSFER_FROM_DROPBOX_TO_S3_JOB_ID: { "type": "integer", }, job_io_fields.DROPBOX_FILES: { "type": "array", "items": { "type": "object", "properties": {}, }, }, job_io_fields.WORKFLOW_JOB_ID: { "type": "integer", }, }, }, job_types.CREATE_STREAMABLE_PREVIEW_AND_THUMBNAILS: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: { "type": "string", }, job_io_fields.INPUT_VIDEO_S3_KEY: { "type": "string", }, job_io_fields.DEPRECATED_VIDEO_OUTPUT_WIDTH_PIXELS: { "type": "integer", "deprecated": True, "description": "Replaced by VIDEO_OUTPUT_OUTER_WIDTH_PIXELS.", }, job_io_fields.VIDEO_OUTPUT_OUTER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.DEPRECATED_VIDEO_OUTPUT_HEIGHT_PIXELS: { "type": "integer", "deprecated": True, "description": "Replaced by VIDEO_OUTPUT_INNER_HEIGHT_PIXELS and VIDEO_OUTPUT_OUTER_HEIGHT_PIXELS.", }, job_io_fields.VIDEO_OUTPUT_OUTER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.AUDIO_VOLUME_ADJUSTMENT_DB: {"type": "number"}, job_io_fields.INPUT_CLIP_START_TIMECODE: {"type": ["string", "null"]}, job_io_fields.INPUT_CLIP_END_TIMECODE: {"type": ["string", "null"]}, job_io_fields.VIDEO_INNER_TOP_LEFT_CORNER_X_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_TOP_LEFT_CORNER_Y_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.AUDIO_STREAM_DURATION_SECONDS: {"type": "number"}, job_io_fields.VIDEO_STREAM_DURATION_SECONDS: {"type": "number"}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: {"type": "number"}, job_io_fields.VIDEO_OUTPUT_INNER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_OUTPUT_INNER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.PRODUCT_ID: {"type": ["integer", "null"]}, }, }, job_types.CREATE_MEZZANINES: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.INPUT_VIDEO_S3_BUCKET: {"type": "string"}, job_io_fields.INPUT_VIDEO_S3_KEY: {"type": "string"}, job_io_fields.DEPRECATED_VIDEO_OUTPUT_WIDTH_PIXELS: { "type": "integer", "deprecated": True, "description": "Replaced by VIDEO_OUTPUT_OUTER_WIDTH_PIXELS.", }, job_io_fields.VIDEO_OUTPUT_OUTER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.DEPRECATED_VIDEO_OUTPUT_HEIGHT_PIXELS: { "type": "integer", "deprecated": True, "description": "Replaced by VIDEO_OUTPUT_INNER_HEIGHT_PIXELS and VIDEO_OUTPUT_OUTER_HEIGHT_PIXELS.", }, job_io_fields.VIDEO_OUTPUT_OUTER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.AUDIO_VOLUME_ADJUSTMENT_DB: {"type": "number"}, job_io_fields.INPUT_CLIP_START_TIMECODE: {"type": ["string", "null"]}, job_io_fields.INPUT_CLIP_END_TIMECODE: {"type": ["string", "null"]}, job_io_fields.VIDEO_INNER_TOP_LEFT_CORNER_X_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_TOP_LEFT_CORNER_Y_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_INNER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_OUTPUT_INNER_WIDTH_PIXELS: {"type": "integer"}, job_io_fields.VIDEO_OUTPUT_INNER_HEIGHT_PIXELS: {"type": "integer"}, job_io_fields.AUDIO_STREAM_DURATION_SECONDS: {"type": "number"}, job_io_fields.VIDEO_STREAM_DURATION_SECONDS: {"type": "number"}, job_io_fields.VIDEO_STREAM_FRAME_RATE_FRAMES_PER_SECOND: {"type": "number"}, job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.PRODUCT_ID: {"type": ["integer", "null"]}, }, }, job_types.WORKFLOW_INGEST_FROM_BROWSER: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, }, }, job_types.WORKFLOW_INGEST_FROM_S3: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, }, }, job_types.WORKFLOW_INGEST_FROM_GOOGLE_DRIVE: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, job_io_fields.GOOGLE_DRIVE_FILES: { "type": "array", "items": { "type": "object", "properties": {}, }, }, job_io_fields.GOOGLE_DRIVE_AUTHORIZATION: { "type": "object", "properties": {}, }, }, }, job_types.WORKFLOW_INGEST_FROM_DROPBOX: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, job_io_fields.DROPBOX_FILES: { "type": "array", "items": { "type": "object", "properties": {}, }, }, }, }, job_types.WORKFLOW_APPROVAL: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, job_io_fields.WORKFLOW_INGEST_JOB_ID: {"type": "integer"}, }, }, job_types.WORKFLOW_INGESTION_REENCODE: { "type": ["object", "null"], # The re-encode seeds the state machine input with a snapshot of the # referenced ingest run's resolved analysis and render inputs (with any # caller overrides applied), so the carried fields mirror those of # validate_analysis and create_streamable_preview_and_thumbnails. Only # the workflow-level fields are pinned. "additionalProperties": True, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.WORKFLOW_STATE_MACHINE_EXECUTION_ARN: {"type": "string"}, job_io_fields.WORKFLOW_INGEST_JOB_ID: {"type": "integer"}, }, }, job_types.CONVERT_DEFAULT_THUMBNAIL_TO_TIFF: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.THUMBNAIL_S3_KEY: {"type": "string"}, }, }, job_types.CONVERT_THUMBNAILS_TO_TIFFS: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, job_io_fields.THUMBNAIL_S3_KEY: {"type": "string"}, job_io_fields.CUSTOM_THUMBNAIL_S3_KEY: {"type": ["string", "null"]}, }, }, job_types.WRITE_THUMBNAIL_LOCATIONS_TO_VIDEO_ASSET_TABLE: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRODUCT_ID: {"type": "integer"}, job_io_fields.VIDEO_IMAGE_S2: {"type": "string"}, job_io_fields.VIDEO_IMAGE_S5: {"type": "string"}, job_io_fields.VIDEO_IMAGE_S10: {"type": "string"}, job_io_fields.VIDEO_IMAGE_S11: {"type": "string"}, }, }, job_types.TRANSFER_H264_FROM_S3_TO_RIPPER_STORAGE: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY: {"type": "string"}, job_io_fields.UPC: {"type": "integer"}, job_io_fields.PRORES_MEZZANINE_METADATA: {"type": "string"}, }, }, job_types.TRANSFER_TIFF_THUMBNAIL_FROM_S3_TO_RIPPER: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.TIFF_THUMBNAIL_S3_KEY: {"type": "string"}, job_io_fields.UPC: {"type": "integer"}, }, }, job_types.GET_CREATE_MEZZANINES_INPUTS: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.WORKFLOW_INGEST_JOB_ID: { "type": "integer", }, }, }, job_types.GET_PRODUCT_METADATA: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRODUCT_ID: { "type": "integer", }, }, }, job_types.EXTRACT_PRORES_MEZZANINE_METADATA: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY: { "type": "string", }, job_io_fields.PRODUCT_ID: { "type": "integer", }, }, }, job_types.WRITE_MEZZ_VIDEO_LOCATIONS_TO_VIDEO_ASSET_TABLE: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRODUCT_ID: {"type": "integer"}, job_io_fields.TUID: {"type": "integer"}, job_io_fields.PRORES_MEZZANINE_OUTPUT_S3_KEY: {"type": "string"}, job_io_fields.H264_MEZZANINE_OUTPUT_S3_KEY: {"type": "string"}, job_io_fields.PRORES_MEZZANINE_METADATA: {"type": "string"}, }, }, job_types.MARK_VIDEO_PRODUCT_AS_APPROVED: { "type": ["object", "null"], "additionalProperties": False, "properties": { job_io_fields.PRODUCT_ID: { "type": "integer", }, job_io_fields.WORKFLOW_JOB_ID: {"type": "integer"}, }, }, }