From d2c697e4cbad2123ff8cfce23c0efd710cc33a33 Mon Sep 17 00:00:00 2001 From: Dean Wenstrand Date: Tue, 30 Jun 2026 12:35:34 -0700 Subject: [PATCH] Add video export schema: VideoExportJob + request/query + mode/status enums Generated from the backend video export resolvers (Phase 1a). Co-Authored-By: Claude Opus 4.8 --- src/index.tsx | 44 ++++++++++++++++++++++++++++++++++++++++++++ src/schema.gql | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/src/index.tsx b/src/index.tsx index 05a02be..a1d6260 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -2440,6 +2440,7 @@ export type Mutation = { reactToVideo: Scalars["Boolean"]["output"]; recalculateChallengeEntry: ChallengeEntry; reportContent: Scalars["Boolean"]["output"]; + requestVideoExport: VideoExportJobGql; respondToChallengeInvitation: ChallengeInvitation; retireTags: Scalars["Boolean"]["output"]; revokeManualEntitlement: UserSubscriptionStatusGql; @@ -2613,6 +2614,10 @@ export type MutationReportContentArgs = { videoId: Scalars["Int"]["input"]; }; +export type MutationRequestVideoExportArgs = { + input: RequestVideoExportInput; +}; + export type MutationRespondToChallengeInvitationArgs = { accept: Scalars["Boolean"]["input"]; invitationId: Scalars["ID"]["input"]; @@ -2880,6 +2885,7 @@ export type Query = { notifications: NotificationConnection; ruleSets: Array; unreadNotificationCount: Scalars["Int"]["output"]; + videoExportJob?: Maybe; videoPlayerClusters: Array; waitFor: Scalars["Float"]["output"]; }; @@ -3062,6 +3068,10 @@ export type QueryNotificationsArgs = { offset?: Scalars["Int"]["input"]; }; +export type QueryVideoExportJobArgs = { + jobId: Scalars["Int"]["input"]; +}; + export type QueryVideoPlayerClustersArgs = { videoId: Scalars["Int"]["input"]; }; @@ -3121,6 +3131,13 @@ export enum ReportReasonEnum { Violence = "VIOLENCE", } +export type RequestVideoExportInput = { + mode: VideoExportModeEnum; + runId?: InputMaybe; + shotIds?: InputMaybe>; + videoId: Scalars["Int"]["input"]; +}; + export type RequestedMedalsGql = { __typename?: "RequestedMedalsGQL"; dailyMakes50?: Maybe; @@ -3648,6 +3665,33 @@ export type UserSubscriptionStatusGql = { validUntil?: Maybe; }; +export type VideoExportJobGql = { + __typename?: "VideoExportJobGQL"; + createdAt?: Maybe; + downloadUrl?: Maybe; + expiresAt?: Maybe; + fileSizeBytes?: Maybe; + id: Scalars["Int"]["output"]; + mode: VideoExportModeEnum; + status: VideoExportStatusEnum; + videoId: Scalars["Int"]["output"]; +}; + +export enum VideoExportModeEnum { + FullSession = "FULL_SESSION", + Run = "RUN", + Shots = "SHOTS", +} + +export enum VideoExportStatusEnum { + Created = "CREATED", + Expired = "EXPIRED", + Failed = "FAILED", + Queued = "QUEUED", + Running = "RUNNING", + Succeeded = "SUCCEEDED", +} + export type VideoFeedInputGql = | { allUsers: Scalars["Boolean"]["input"]; diff --git a/src/schema.gql b/src/schema.gql index 5115084..fd721f4 100644 --- a/src/schema.gql +++ b/src/schema.gql @@ -121,6 +121,7 @@ type Query { ): VideoHistoryGQL! getUserTags(includeRetiredTags: Boolean = false): [TagGQL!]! getGameTypeTagMetrics(input: GameTypeTagMetricsInput!): [GameTypeTagMetric!]! + videoExportJob(jobId: Int!): VideoExportJobGQL getVideo(videoId: Int!, debuggingJson: JSON = null): VideoGQL! getVideos(videoIds: [Int!]!): [VideoGQL!]! } @@ -1164,6 +1165,32 @@ input GameTypeTagMetricsInput { includePrivate: IncludePrivateEnum! = MINE } +type VideoExportJobGQL { + id: Int! + videoId: Int! + mode: VideoExportModeEnum! + status: VideoExportStatusEnum! + downloadUrl: String + fileSizeBytes: Int + expiresAt: DateTime + createdAt: DateTime +} + +enum VideoExportModeEnum { + FULL_SESSION + SHOTS + RUN +} + +enum VideoExportStatusEnum { + CREATED + QUEUED + RUNNING + SUCCEEDED + FAILED + EXPIRED +} + """ The `JSON` scalar type represents JSON values as specified by [ECMA-404](https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf). """ @@ -1265,6 +1292,7 @@ type Mutation { feedback: String = null metadata: CancellationFeedbackMetadataInput = null ): Boolean! + requestVideoExport(input: RequestVideoExportInput!): VideoExportJobGQL! findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL createUploadStream( videoMetadata: VideoMetadataInput! @@ -1447,6 +1475,13 @@ input CancellationFeedbackMetadataInput { platform: String = null } +input RequestVideoExportInput { + videoId: Int! + mode: VideoExportModeEnum! + shotIds: [Int!] = null + runId: Int = null +} + type CreateUploadStreamReturn { videoId: Int! }