diff --git a/src/index.tsx b/src/index.tsx index 02e5849..e89d968 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -6920,6 +6920,7 @@ export type GetLiveTableStateQuery = { __typename?: "RGBColorGQL"; hex: string; } | null>; +<<<<<<< HEAD }; }; }; @@ -6942,6 +6943,36 @@ export type GetShotTableStateQuery = { __typename?: "RGBColorGQL"; hex: string; } | null>; +======= + homography?: { + __typename?: "HomographyInfoGQL"; + id?: number | null; + frameIndex: number; + crop: { + __typename?: "BoundingBoxGQL"; + left: number; + top: number; + width: number; + height: number; + }; + pockets: Array<{ + __typename?: "BoundingBoxGQL"; + left: number; + top: number; + width: number; + height: number; + }>; + sourcePoints: { + __typename?: "PocketPointsGQL"; + topLeft: { __typename?: "IntPoint2D"; x: number; y: number }; + topSide: { __typename?: "IntPoint2D"; x: number; y: number }; + topRight: { __typename?: "IntPoint2D"; x: number; y: number }; + bottomLeft: { __typename?: "IntPoint2D"; x: number; y: number }; + bottomSide: { __typename?: "IntPoint2D"; x: number; y: number }; + bottomRight: { __typename?: "IntPoint2D"; x: number; y: number }; + }; + } | null; +>>>>>>> 6d13dc3 }; }; }; diff --git a/src/schema.gql b/src/schema.gql index 8c13c59..2eb5f01 100644 --- a/src/schema.gql +++ b/src/schema.gql @@ -1,7 +1,5 @@ type Query { - getAggregatedShotMetrics( - aggregateInput: AggregateInputGQL! - ): [AggregateResultGQL!]! + getAggregatedShotMetrics(aggregateInput: AggregateInputGQL!): [AggregateResultGQL!]! getBucketSet(keyName: String!): BucketSetGQL challenges(includeDismissed: Boolean! = false): [Challenge!]! myDismissedChallenges: [Challenge!]! @@ -13,44 +11,14 @@ type Query { myChallengeEntries: [ChallengeEntry!]! getDeployedConfig: DeployedConfigGQL! waitFor(duration: Float!): Float! - getFeedVideos( - limit: Int! = 5 - after: String = null - includePrivate: IncludePrivateEnum! = MINE - includeCallersVideos: Boolean = true - filters: VideoFilterInput = null - feedInput: VideoFeedInputGQL = null - ): VideoHistoryGQL! - getVideoMakePercentageIntervals( - videoId: ID! - intervalDuration: Int! = 300 - ): [MakePercentageIntervalGQL!]! - getLongestRunsLeaderboard( - interval: TimeInterval = null - when: DateTime = null - limit: Int! = 50 - requiredTags: [String!] = null - ): RunLeaderboardGQL! - getDrillRunLeaderboard( - drillTag: String! - interval: TimeInterval = null - limit: Int! = 50 - tableSizeMin: Float = null - tableSizeMax: Float = null - pocketSizeMin: Float = null - pocketSizeMax: Float = null - ): DrillRunLeaderboardGQL! + getFeedVideos(limit: Int! = 5, after: String = null, includePrivate: IncludePrivateEnum! = MINE, includeCallersVideos: Boolean = true, filters: VideoFilterInput = null, feedInput: VideoFeedInputGQL = null): VideoHistoryGQL! + getVideoMakePercentageIntervals(videoId: ID!, intervalDuration: Int! = 300): [MakePercentageIntervalGQL!]! + getLongestRunsLeaderboard(interval: TimeInterval = null, when: DateTime = null, limit: Int! = 50, requiredTags: [String!] = null): RunLeaderboardGQL! + getDrillRunLeaderboard(drillTag: String!, interval: TimeInterval = null, limit: Int! = 50, tableSizeMin: Float = null, tableSizeMax: Float = null, pocketSizeMin: Float = null, pocketSizeMax: Float = null): DrillRunLeaderboardGQL! getMyDrillRuns(drillTag: String!, limit: Int! = 50): [RunGQL!]! - getMakesLeaderboard( - interval: TimeInterval = null - when: DateTime = null - ): CountLeaderboardGQL! + getMakesLeaderboard(interval: TimeInterval = null, when: DateTime = null): CountLeaderboardGQL! getMedals(scope: MedalScope!, userId: Int = null): RequestedMedalsGQL! - notifications( - limit: Int! = 20 - offset: Int! = 0 - filters: NotificationFilters = null - ): NotificationConnection! + notifications(limit: Int! = 20, offset: Int! = 0, filters: NotificationFilters = null): NotificationConnection! unreadNotificationCount: Int! poolHalls: [PoolHall!]! claimablePoolHalls: [PoolHall!]! @@ -58,69 +26,25 @@ type Query { claimableCameras(poolHallId: ID!): [PoolHallCamera!]! cameraClaimSession(id: ID!): CameraClaimSession activeCameraLease: CameraLease - getRuns( - filterInput: RunFilterInput! - runIds: [Int!] = null - runsOrdering: GetRunsOrdering = null - limit: Int! = 500 - countRespectsLimit: Boolean! = false - ): GetRunsResult! + getRuns(filterInput: RunFilterInput!, runIds: [Int!] = null, runsOrdering: GetRunsOrdering = null, limit: Int! = 500, countRespectsLimit: Boolean! = false): GetRunsResult! videoPlayerClusters(videoId: Int!): [PlayerClusterGQL!]! getShotAnnotationTypes(errorTypes: Boolean = false): [ShotAnnotationTypeGQL!]! - getTableState( - b64Image: String! - tableSize: Float = 100 - useHomography: HomographyInputGQL = null - ): TableStateGQL! + getTableState(b64Image: String!, tableSize: Float = 100, useHomography: HomographyInputGQL = null): TableStateGQL! getLiveTableState(videoId: Int!): LiveTableStateGQL! getShotTableState(shotId: Int!): ShotTableStateGQL! simulateShot(simulationInput: SimulateShotInputGQL!): ShotProjectionGQL! - computePotAim( - simulationInput: SimulateShotInputGQL! - targetBallId: Int! - pocket: PocketIdentifier! - ): PotAimGQL! - getOrderedShots( - filterInput: FilterInput! - ids: [Int!] = null - shotsOrdering: GetShotsOrdering = null - limit: Int! = 500 - countRespectsLimit: Boolean! = false - ): GetShotsResult! - getShotsWithMetadata( - filterInput: FilterInput! - ids: [Int!] = null - shotsPagination: GetShotsPagination = null - limit: Int! = 500 - countRespectsLimit: Boolean! = false - ): GetShotsResult! - getShots( - filterInput: FilterInput! - shotsPagination: GetShotsPagination = null - limit: Int! = 500 - countRespectsLimit: Boolean! = false - ): [ShotGQL!]! + computePotAim(simulationInput: SimulateShotInputGQL!, targetBallId: Int!, pocket: PocketIdentifier!): PotAimGQL! + getOrderedShots(filterInput: FilterInput!, ids: [Int!] = null, shotsOrdering: GetShotsOrdering = null, limit: Int! = 500, countRespectsLimit: Boolean! = false): GetShotsResult! + getShotsWithMetadata(filterInput: FilterInput!, ids: [Int!] = null, shotsPagination: GetShotsPagination = null, limit: Int! = 500, countRespectsLimit: Boolean! = false): GetShotsResult! + getShots(filterInput: FilterInput!, shotsPagination: GetShotsPagination = null, limit: Int! = 500, countRespectsLimit: Boolean! = false): [ShotGQL!]! getShotsByIds(ids: [Int!]!): [ShotGQL!]! getUsageStats(days: Int! = 30): UsageStatsGQL! getUser(userId: Int!): UserGQL doesUsernameExist(candidateUsername: String!): Boolean! getLoggedInUser: UserGQL - getUsernames( - matchString: String = null - limit: Int = null - after: String = null - ): [String!]! - getUsersMatching( - matchString: String = null - limit: Int = null - after: String = null - ): [UserGQL!]! - getUserRelationshipsMatching( - userId: Int! - matchString: String = null - limit: Int = 100 - after: String = null - ): UserRelationshipsResult! + getUsernames(matchString: String = null, limit: Int = null, after: String = null): [String!]! + getUsersMatching(matchString: String = null, limit: Int = null, after: String = null): [UserGQL!]! + getUserRelationshipsMatching(userId: Int!, matchString: String = null, limit: Int = 100, after: String = null): UserRelationshipsResult! getAvailableSubscriptionOptions: StripeSubscriptionOptionsGQL! getUserSubscriptionStatus: UserSubscriptionStatusGQL! getResolvedTier: ResolvedTierGQL! @@ -128,12 +52,7 @@ type Query { getQuotaStatus: QuotaStatusGQL! getStorageStatus: StorageStatusGQL getPlayTime(userId: Int!, filters: VideoFilterInput = null): UserPlayTimeGQL! - getUserVideos( - userId: Int = null - limit: Int! = 5 - after: String = null - filters: VideoFilterInput = null - ): VideoHistoryGQL! + getUserVideos(userId: Int = null, limit: Int! = 5, after: String = null, filters: VideoFilterInput = null): VideoHistoryGQL! getUserTags(includeRetiredTags: Boolean = false): [TagGQL!]! getGameTypeTagMetrics(input: GameTypeTagMetricsInput!): [GameTypeTagMetric!]! videoExportJob(jobId: Int!): VideoExportJobGQL @@ -205,9 +124,7 @@ input DatetimeRangeAggregationInput { feature: String! = "created_at" } -""" -Date with time (isoformat) -""" +"""Date with time (isoformat)""" scalar DateTime input TimeInterval @oneOf { @@ -323,9 +240,7 @@ input DateRangeFilter { greaterThanInclusive: Boolean! = true } -""" -Date (isoformat) -""" +"""Date (isoformat)""" scalar Date type BucketSetGQL { @@ -851,8 +766,7 @@ type MedalGQL { input MedalScope @oneOf { videoId: Int - interval: TimeInterval - @deprecated(reason: "NO LONGER SUPPORTED, USE DATETIME_RANGE") + interval: TimeInterval @deprecated(reason: "NO LONGER SUPPORTED, USE DATETIME_RANGE") datetimeRange: DatetimeRangeAggregationInput } @@ -1371,9 +1285,7 @@ type StorageStatusGQL { lastCalculatedAt: DateTime } -""" -Integer value that can exceed GraphQL Int's 32-bit range. -""" +"""Integer value that can exceed GraphQL Int's 32-bit range.""" scalar BigInt type UserPlayTimeGQL { @@ -1444,34 +1356,14 @@ enum VideoExportStatusEnum { """ 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). """ -scalar JSON - @specifiedBy( - url: "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf" - ) +scalar JSON @specifiedBy(url: "https://ecma-international.org/wp-content/uploads/ECMA-404_2nd_edition_december_2017.pdf") type Mutation { createBucketSet(params: CreateBucketSetInput!): BucketSetGQL! createRuleSet(name: String!, description: String = null): RuleSet! - createChallenge( - name: String! - ruleSetId: ID! - minimumShots: Int! - startDate: DateTime! - endDate: DateTime! - description: String = null - requiredTableSize: Float = null - requiredPocketSize: Float = null - isPublic: Boolean! = false - maxAttempts: Int = null - ): Challenge! - inviteUsersToChallenge( - challengeId: ID! - userIds: [ID!]! - ): [ChallengeInvitation!]! - respondToChallengeInvitation( - invitationId: ID! - accept: Boolean! - ): ChallengeInvitation! + createChallenge(name: String!, ruleSetId: ID!, minimumShots: Int!, startDate: DateTime!, endDate: DateTime!, description: String = null, requiredTableSize: Float = null, requiredPocketSize: Float = null, isPublic: Boolean! = false, maxAttempts: Int = null): Challenge! + inviteUsersToChallenge(challengeId: ID!, userIds: [ID!]!): [ChallengeInvitation!]! + respondToChallengeInvitation(invitationId: ID!, accept: Boolean!): ChallengeInvitation! startChallenge(challengeId: ID!): ChallengeEntry! recalculateChallengeEntry(entryId: ID!): ChallengeEntry! submitChallengeEntry(entryId: ID!, videoId: ID!): ChallengeEntry! @@ -1479,61 +1371,30 @@ type Mutation { undismissChallenge(challengeId: ID!): Boolean! setLoggerLevel(path: String!, level: String!): Boolean! reactToVideo(videoId: Int!, reaction: ReactionEnum): Boolean! - commentOnVideo( - videoId: Int! - message: String! - parentCommentId: Int - ): Boolean! + commentOnVideo(videoId: Int!, message: String!, parentCommentId: Int): Boolean! editComment(videoId: Int!, commentId: Int!, newMessage: String!): Boolean! deleteComment(videoId: Int!, commentId: Int!): Boolean! blockContent(videoId: Int!): Boolean! blockUser(userId: Int!): Boolean! - reportContent( - videoId: Int! - reason: ReportReasonEnum! - customReason: String = null - ): Boolean! + reportContent(videoId: Int!, reason: ReportReasonEnum!, customReason: String = null): Boolean! markNotificationAsRead(notificationId: Int!): Boolean! markAllNotificationsAsRead: Boolean! markNotificationsAsRead(notificationIds: [Int!]!): Boolean! deleteNotification(notificationId: Int!): Boolean! createPoolHall(input: CreatePoolHallInput!): PoolHall! updatePoolHall(input: UpdatePoolHallInput!): PoolHall! - createPoolHallCamera( - input: CreatePoolHallCameraInput! - ): PoolHallCameraStreamCredentials! + createPoolHallCamera(input: CreatePoolHallCameraInput!): PoolHallCameraStreamCredentials! updatePoolHallCamera(input: UpdatePoolHallCameraInput!): PoolHallCamera! rotatePoolHallCameraStreamKey(cameraId: ID!): PoolHallCameraStreamCredentials! - createCameraClaimSession( - cameraId: ID! - durationMinutes: Int = null - videoName: String = null - videoPrivate: Boolean = null - agreedTermsVersion: Int = null - tags: [VideoTagInput!] = null - ): CameraClaimSession! + createCameraClaimSession(cameraId: ID!, durationMinutes: Int = null, videoName: String = null, videoPrivate: Boolean = null, agreedTermsVersion: Int = null, tags: [VideoTagInput!] = null): CameraClaimSession! cancelCameraClaimSession(claimSessionId: ID!): CameraClaimSession! endCameraLease(leaseId: ID!): CameraLease! extendCameraLease(leaseId: ID!, additionalMinutes: Int! = 60): CameraLease! - finalizePlayerAssignments( - input: FinalizePlayerAssignmentsInput! - ): [PlayerClusterGQL!]! - addAnnotationToShot( - shotId: Int! - annotationName: String! - notes: String = null - ): AddShotAnnotationReturn! - updateShotAnnotations( - shotId: Int! - annotations: [UpdateAnnotationInputGQL!]! - ): UpdateShotAnnotationReturn! - editShot( - shotId: Int! - fieldsToEdit: EditableShotFieldInputGQL! - ): EditShotReturn! - getProfileImageUploadLink( - fileExt: String = ".png" - ): GetProfileUploadLinkReturn! + finalizePlayerAssignments(input: FinalizePlayerAssignmentsInput!): [PlayerClusterGQL!]! + addAnnotationToShot(shotId: Int!, annotationName: String!, notes: String = null): AddShotAnnotationReturn! + updateShotAnnotations(shotId: Int!, annotations: [UpdateAnnotationInputGQL!]!): UpdateShotAnnotationReturn! + editShot(shotId: Int!, fieldsToEdit: EditableShotFieldInputGQL!): EditShotReturn! + getProfileImageUploadLink(fileExt: String = ".png"): GetProfileUploadLinkReturn! editProfileImageUri(profileImageUri: String!): UserGQL! editUser(input: EditUserInputGQL!): UserGQL! followUser(followedUserId: Int!): UserGQL! @@ -1541,39 +1402,20 @@ type Mutation { retireTags(tagIds: [Int!]!): Boolean! ensureStripeCustomerExists: UserGQL! deleteUser: Boolean! - syncAppleSubscription( - input: SyncAppleSubscriptionInputGQL! - ): SyncAppleSubscriptionResultGQL! + syncAppleSubscription(input: SyncAppleSubscriptionInputGQL!): SyncAppleSubscriptionResultGQL! createSubscription(priceId: String!): CreateSubscriptionResultGQL! createCustomerPortalSession: CreateCustomerPortalSessionResultGQL! cancelSubscription: UserSubscriptionStatusGQL! - grantManualEntitlement( - userId: Int! - tierName: String! = "pro" - startsAt: DateTime = null - endsAt: DateTime = null - reason: String = null - ): UserSubscriptionStatusGQL! + grantManualEntitlement(userId: Int!, tierName: String! = "pro", startsAt: DateTime = null, endsAt: DateTime = null, reason: String = null): UserSubscriptionStatusGQL! revokeManualEntitlement(userId: Int!): UserSubscriptionStatusGQL! - submitCancellationFeedback( - reasons: [CancellationReasonEnum!] = null - feedback: String = null - metadata: CancellationFeedbackMetadataInput = null - ): Boolean! + submitCancellationFeedback(reasons: [CancellationReasonEnum!] = null, feedback: String = null, metadata: CancellationFeedbackMetadataInput = null): Boolean! requestVideoExport(input: RequestVideoExportInput!): VideoExportJobGQL! dismissVideoExport(jobId: Int!): Boolean! findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL - createUploadStream( - videoMetadata: VideoMetadataInput! - expectedDurationSeconds: Float = null - ): CreateUploadStreamReturn! + createUploadStream(videoMetadata: VideoMetadataInput!, expectedDurationSeconds: Float = null): CreateUploadStreamReturn! getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn! getHlsInitUploadLink(videoId: Int!): GetUploadLinkReturn! - setSegmentDuration( - videoId: Int! - segmentIndex: Int! - duration: Float! - ): Boolean! + setSegmentDuration(videoId: Int!, segmentIndex: Int!, duration: Float!): Boolean! editUploadStream(videoId: Int!, videoMetadata: VideoMetadataInput!): Boolean! deleteVideo(videoId: Int!): Boolean! deleteTags(videoId: Int!, tagsToDelete: [VideoTagInput!]!): Boolean! @@ -1665,9 +1507,7 @@ type AddShotAnnotationReturn { value: SuccessfulAddAddShotAnnotationErrors! } -union SuccessfulAddAddShotAnnotationErrors = - SuccessfulAdd - | AddShotAnnotationErrors +union SuccessfulAddAddShotAnnotationErrors = SuccessfulAdd | AddShotAnnotationErrors type SuccessfulAdd { value: Boolean! @@ -1677,9 +1517,7 @@ type AddShotAnnotationErrors { error: DoesNotOwnShotErrOtherErrorNeedsNote! } -union DoesNotOwnShotErrOtherErrorNeedsNote = - DoesNotOwnShotErr - | OtherErrorNeedsNote +union DoesNotOwnShotErrOtherErrorNeedsNote = DoesNotOwnShotErr | OtherErrorNeedsNote type DoesNotOwnShotErr { shotId: Int! @@ -1720,9 +1558,7 @@ type GetProfileUploadLinkReturn { value: UploadLinkGetProfileUploadLinkErrors! } -union UploadLinkGetProfileUploadLinkErrors = - UploadLink - | GetProfileUploadLinkErrors +union UploadLinkGetProfileUploadLinkErrors = UploadLink | GetProfileUploadLinkErrors type UploadLink { uploadUrl: String! @@ -1809,12 +1645,9 @@ input VideoMetadataInput { videoName: String = null startTime: DateTime = null endTime: DateTime = null - gameType: String = null - @deprecated(reason: "`game_type` is deprecated. Use `tags` instead.") + gameType: String = null @deprecated(reason: "`game_type` is deprecated. Use `tags` instead.") - """ - A list of tags associated with the video. Replace `game_type` - """ + """A list of tags associated with the video. Replace `game_type`""" tags: [VideoTagInput!] = null tableSize: Float = null pocketSize: Float = null @@ -1843,15 +1676,7 @@ type GetUploadLinkErrors { error: MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr! } -union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr = - MustHaveSetForUploadLinkErr - | SegmentAlreadyUploadedErr - | ProcessingFailedErr - | NoInitForChunkedUploadErr - | TooManyProfileImageUploadsErr - | InitUploadAlreadyCompletedErr - | TooManyInitUploadsErr - | StorageLimitExceededErr +union MustHaveSetForUploadLinkErrSegmentAlreadyUploadedErrProcessingFailedErrNoInitForChunkedUploadErrTooManyProfileImageUploadsErrInitUploadAlreadyCompletedErrTooManyInitUploadsErrStorageLimitExceededErr = MustHaveSetForUploadLinkErr | SegmentAlreadyUploadedErr | ProcessingFailedErr | NoInitForChunkedUploadErr | TooManyProfileImageUploadsErr | InitUploadAlreadyCompletedErr | TooManyInitUploadsErr | StorageLimitExceededErr type MustHaveSetForUploadLinkErr { resolution: Boolean