Compare commits

..

1 Commits

Author SHA1 Message Date
a68bb67926 Expose per-ball detector boxes on TableStateGQL
Regenerated from the backend branch that adds identifierToBox, so this
commit's schema matches that branch's Python export exactly. Kept off gql
master because the export also reorders the share-link declarations that
gql master carries in their pre-alphabetical positions.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 18:53:12 -07:00
4 changed files with 19 additions and 72 deletions

View File

@@ -265,7 +265,6 @@ export type CohortStatsGql = {
activated7d: Scalars["Int"]["output"]; activated7d: Scalars["Int"]["output"];
activatedNotPaid7d: Scalars["Int"]["output"]; activatedNotPaid7d: Scalars["Int"]["output"];
paid7d: Scalars["Int"]["output"]; paid7d: Scalars["Int"]["output"];
paidTotal: Scalars["Int"]["output"];
signups: Scalars["Int"]["output"]; signups: Scalars["Int"]["output"];
weekStart: Scalars["Date"]["output"]; weekStart: Scalars["Date"]["output"];
}; };
@@ -2324,8 +2323,6 @@ export type FunnelStatsGql = {
freemiumEpoch: Scalars["Date"]["output"]; freemiumEpoch: Scalars["Date"]["output"];
newPaid7d: Scalars["Int"]["output"]; newPaid7d: Scalars["Int"]["output"];
newPaid30d: Scalars["Int"]["output"]; newPaid30d: Scalars["Int"]["output"];
newPaidToday: Scalars["Int"]["output"];
pastDueUsers: Scalars["Int"]["output"];
payingUsers: Scalars["Int"]["output"]; payingUsers: Scalars["Int"]["output"];
retentionPrevActive: Scalars["Int"]["output"]; retentionPrevActive: Scalars["Int"]["output"];
retentionReturned: Scalars["Int"]["output"]; retentionReturned: Scalars["Int"]["output"];
@@ -4081,6 +4078,7 @@ export type SyncAppleSubscriptionResultGql = {
export type TableStateGql = { export type TableStateGql = {
__typename?: "TableStateGQL"; __typename?: "TableStateGQL";
homography?: Maybe<HomographyInfoGql>; homography?: Maybe<HomographyInfoGql>;
identifierToBox: Array<BoundingBoxGql>;
identifierToColor: Array<Maybe<RgbColorGql>>; identifierToColor: Array<Maybe<RgbColorGql>>;
identifierToPosition: Array<Array<Scalars["Float"]["output"]>>; identifierToPosition: Array<Array<Scalars["Float"]["output"]>>;
}; };
@@ -4321,7 +4319,7 @@ export type VideoExportJobGql = {
createdAt?: Maybe<Scalars["DateTime"]["output"]>; createdAt?: Maybe<Scalars["DateTime"]["output"]>;
downloadUrl?: Maybe<Scalars["String"]["output"]>; downloadUrl?: Maybe<Scalars["String"]["output"]>;
expiresAt?: Maybe<Scalars["DateTime"]["output"]>; expiresAt?: Maybe<Scalars["DateTime"]["output"]>;
fileSizeBytes?: Maybe<Scalars["BigInt"]["output"]>; fileSizeBytes?: Maybe<Scalars["Int"]["output"]>;
id: Scalars["Int"]["output"]; id: Scalars["Int"]["output"];
mode: VideoExportModeEnum; mode: VideoExportModeEnum;
runId?: Maybe<Scalars["Int"]["output"]>; runId?: Maybe<Scalars["Int"]["output"]>;
@@ -6893,10 +6891,8 @@ export type ReactToVideoMutation = {
}; };
export type GetShotLabVideosQueryVariables = Exact<{ export type GetShotLabVideosQueryVariables = Exact<{
feedInput: VideoFeedInputGql; userId: Scalars["Int"]["input"];
includePrivate: IncludePrivateEnum;
limit?: Scalars["Int"]["input"]; limit?: Scalars["Int"]["input"];
after?: InputMaybe<Scalars["String"]["input"]>;
}>; }>;
export type GetShotLabVideosQuery = { export type GetShotLabVideosQuery = {
@@ -6924,11 +6920,6 @@ export type GetShotLabVideosQuery = {
lastSegmentUploadedAt?: any | null; lastSegmentUploadedAt?: any | null;
} | null; } | null;
}>; }>;
pageInfo: {
__typename?: "PageInfoGQL";
hasNextPage: boolean;
endCursor?: string | null;
};
}; };
}; };
@@ -8158,8 +8149,6 @@ export type GetUsageStatsQuery = {
activationCohort: number; activationCohort: number;
activationActivated: number; activationActivated: number;
payingUsers: number; payingUsers: number;
pastDueUsers: number;
newPaidToday: number;
newPaid7d: number; newPaid7d: number;
newPaid30d: number; newPaid30d: number;
retentionPrevActive: number; retentionPrevActive: number;
@@ -8172,7 +8161,6 @@ export type GetUsageStatsQuery = {
activated7d: number; activated7d: number;
paid7d: number; paid7d: number;
activatedNotPaid7d: number; activatedNotPaid7d: number;
paidTotal: number;
}>; }>;
windows: Array<{ windows: Array<{
__typename?: "UsageStatsWindowGQL"; __typename?: "UsageStatsWindowGQL";
@@ -9287,7 +9275,7 @@ export type VideoExportJobFieldsFragment = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9309,7 +9297,7 @@ export type RequestVideoExportMutation = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}; };
@@ -9341,7 +9329,7 @@ export type VideoExportJobQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
} | null; } | null;
@@ -9365,7 +9353,7 @@ export type MyVideoExportsQuery = {
shotIds?: Array<number> | null; shotIds?: Array<number> | null;
runId?: number | null; runId?: number | null;
downloadUrl?: string | null; downloadUrl?: string | null;
fileSizeBytes?: any | null; fileSizeBytes?: number | null;
expiresAt?: any | null; expiresAt?: any | null;
createdAt?: any | null; createdAt?: any | null;
}>; }>;
@@ -15183,18 +15171,12 @@ export type ReactToVideoMutationOptions = Apollo.BaseMutationOptions<
ReactToVideoMutationVariables ReactToVideoMutationVariables
>; >;
export const GetShotLabVideosDocument = gql` export const GetShotLabVideosDocument = gql`
query GetShotLabVideos( query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: $includePrivate includePrivate: MINE
feedInput: $feedInput feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -15214,10 +15196,6 @@ export const GetShotLabVideosDocument = gql`
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }
`; `;
@@ -15234,10 +15212,8 @@ export const GetShotLabVideosDocument = gql`
* @example * @example
* const { data, loading, error } = useGetShotLabVideosQuery({ * const { data, loading, error } = useGetShotLabVideosQuery({
* variables: { * variables: {
* feedInput: // value for 'feedInput' * userId: // value for 'userId'
* includePrivate: // value for 'includePrivate'
* limit: // value for 'limit' * limit: // value for 'limit'
* after: // value for 'after'
* }, * },
* }); * });
*/ */
@@ -17260,8 +17236,6 @@ export const GetUsageStatsDocument = gql`
activationCohort activationCohort
activationActivated activationActivated
payingUsers payingUsers
pastDueUsers
newPaidToday
newPaid7d newPaid7d
newPaid30d newPaid30d
retentionPrevActive retentionPrevActive
@@ -17273,7 +17247,6 @@ export const GetUsageStatsDocument = gql`
activated7d activated7d
paid7d paid7d
activatedNotPaid7d activatedNotPaid7d
paidTotal
} }
totalUsers totalUsers
totalVideos totalVideos

View File

@@ -1,19 +1,12 @@
# Lightweight two-step picker data for Shot Lab's video-first source: recent # Lightweight two-step picker data for Shot Lab's video-first source: the
# videos from the requested audience (mine, followed users, or public), then # caller's recent videos (completed or still uploading), then that video's
# that video's shots. The stream fields hint at "actively updating" without # shots. The stream fields hint at "actively updating" without gating.
# gating. query GetShotLabVideos($userId: Int!, $limit: Int! = 25) {
query GetShotLabVideos(
$feedInput: VideoFeedInputGQL!
$includePrivate: IncludePrivateEnum!
$limit: Int! = 25
$after: String = null
) {
getFeedVideos( getFeedVideos(
limit: $limit limit: $limit
after: $after
includeCallersVideos: false includeCallersVideos: false
includePrivate: $includePrivate includePrivate: MINE
feedInput: $feedInput feedInput: { userId: $userId }
) { ) {
videos { videos {
id id
@@ -33,10 +26,6 @@ query GetShotLabVideos(
lastSegmentUploadedAt lastSegmentUploadedAt
} }
} }
pageInfo {
hasNextPage
endCursor
}
} }
} }

View File

@@ -7,8 +7,6 @@ query getUsageStats($days: Int! = 30) {
activationCohort activationCohort
activationActivated activationActivated
payingUsers payingUsers
pastDueUsers
newPaidToday
newPaid7d newPaid7d
newPaid30d newPaid30d
retentionPrevActive retentionPrevActive
@@ -20,7 +18,6 @@ query getUsageStats($days: Int! = 30) {
activated7d activated7d
paid7d paid7d
activatedNotPaid7d activatedNotPaid7d
paidTotal
} }
totalUsers totalUsers
totalVideos totalVideos

View File

@@ -214,7 +214,6 @@ type CohortStatsGQL {
activated7d: Int! activated7d: Int!
paid7d: Int! paid7d: Int!
activatedNotPaid7d: Int! activatedNotPaid7d: Int!
paidTotal: Int!
} }
type CommentGQL { type CommentGQL {
@@ -250,11 +249,6 @@ input CreatePoolHallCameraInput {
claimTermsText: String = null claimTermsText: String = null
} }
input CreateShotShareLinkInput {
shotIds: [Int!]!
paddingSeconds: Float = null
}
input CreatePoolHallInput { input CreatePoolHallInput {
name: String! name: String!
address: String = null address: String = null
@@ -470,8 +464,6 @@ type FunnelStatsGQL {
activationCohort: Int! activationCohort: Int!
activationActivated: Int! activationActivated: Int!
payingUsers: Int! payingUsers: Int!
pastDueUsers: Int!
newPaidToday: Int!
newPaid7d: Int! newPaid7d: Int!
newPaid30d: Int! newPaid30d: Int!
retentionPrevActive: Int! retentionPrevActive: Int!
@@ -1721,6 +1713,7 @@ type TableStateGQL {
identifierToPosition: [[Float!]!]! identifierToPosition: [[Float!]!]!
homography: HomographyInfoGQL homography: HomographyInfoGQL
identifierToColor: [RGBColorGQL]! identifierToColor: [RGBColorGQL]!
identifierToBox: [BoundingBoxGQL!]!
} }
type TagClassGQL { type TagClassGQL {
@@ -1932,11 +1925,6 @@ type UserSubscriptionStatusGQL {
stripeSubscriptionId: String stripeSubscriptionId: String
} }
type ShareLinkGQL {
slug: String!
url: String!
}
type VideoExportJobGQL { type VideoExportJobGQL {
id: Int! id: Int!
videoId: Int! videoId: Int!
@@ -1947,7 +1935,7 @@ type VideoExportJobGQL {
shotIds: [Int!] shotIds: [Int!]
runId: Int runId: Int
downloadUrl: String downloadUrl: String
fileSizeBytes: BigInt fileSizeBytes: Int
expiresAt: DateTime expiresAt: DateTime
createdAt: DateTime createdAt: DateTime
} }