Compare commits

..

1 Commits

Author SHA1 Message Date
669958178d scope upload quotas
All checks were successful
Tests / Tests (pull_request) Successful in 11s
2026-04-14 15:40:15 -07:00
3 changed files with 109 additions and 4 deletions

View File

@@ -2462,6 +2462,7 @@ export type MutationCreateSubscriptionArgs = {
export type MutationCreateUploadStreamArgs = { export type MutationCreateUploadStreamArgs = {
expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>; expectedDurationSeconds?: InputMaybe<Scalars["Float"]["input"]>;
uploadKind?: InputMaybe<UploadKindEnum>;
videoMetadata: VideoMetadataInput; videoMetadata: VideoMetadataInput;
}; };
@@ -2959,9 +2960,11 @@ export type QuotaStatusGql = {
durationLimitSeconds?: Maybe<Scalars["Int"]["output"]>; durationLimitSeconds?: Maybe<Scalars["Int"]["output"]>;
durationRemainingSeconds?: Maybe<Scalars["Float"]["output"]>; durationRemainingSeconds?: Maybe<Scalars["Float"]["output"]>;
durationUsedSeconds: Scalars["Float"]["output"]; durationUsedSeconds: Scalars["Float"]["output"];
importUploadPermission: UploadPermissionGql;
maxVideoDurationSeconds?: Maybe<Scalars["Int"]["output"]>; maxVideoDurationSeconds?: Maybe<Scalars["Int"]["output"]>;
periodEnd: Scalars["DateTime"]["output"]; periodEnd: Scalars["DateTime"]["output"];
periodStart: Scalars["DateTime"]["output"]; periodStart: Scalars["DateTime"]["output"];
recordingPermission: UploadPermissionGql;
tierName: Scalars["String"]["output"]; tierName: Scalars["String"]["output"];
}; };
@@ -3347,6 +3350,11 @@ export type UpdateShotAnnotationReturn = {
shot?: Maybe<ShotGql>; shot?: Maybe<ShotGql>;
}; };
export enum UploadKindEnum {
Import = "IMPORT",
Recording = "RECORDING",
}
export type UploadLink = { export type UploadLink = {
__typename?: "UploadLink"; __typename?: "UploadLink";
headers: Array<Maybe<Header>>; headers: Array<Maybe<Header>>;
@@ -3359,6 +3367,12 @@ export type UploadLinkGetProfileUploadLinkErrors =
export type UploadLinkGetUploadLinkErrors = GetUploadLinkErrors | UploadLink; export type UploadLinkGetUploadLinkErrors = GetUploadLinkErrors | UploadLink;
export type UploadPermissionGql = {
__typename?: "UploadPermissionGQL";
allowed: Scalars["Boolean"]["output"];
reason?: Maybe<Scalars["String"]["output"]>;
};
export type UploadSegmentGql = { export type UploadSegmentGql = {
__typename?: "UploadSegmentGQL"; __typename?: "UploadSegmentGQL";
durationInSeconds?: Maybe<Scalars["Float"]["output"]>; durationInSeconds?: Maybe<Scalars["Float"]["output"]>;
@@ -4097,11 +4111,15 @@ export type GetFeedQuery = {
id: number; id: number;
name?: string | null; name?: string | null;
screenshotUri?: string | null; screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number; totalShots: number;
makePercentage: number; makePercentage: number;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null; averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null; startTime?: any | null;
endTime?: any | null;
private: boolean; private: boolean;
elapsedTime?: number | null; elapsedTime?: number | null;
tableSize: number; tableSize: number;
@@ -4116,13 +4134,26 @@ export type GetFeedQuery = {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
} | null; } | null;
tags: Array<{ __typename?: "VideoTag"; name: string }>; tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
id: number; id: number;
status: ProcessingStatusEnum; status: ProcessingStatusEnum;
errors: Array<{
__typename?: "VideoProcessingErrorGQL";
message: string;
}>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null; } | null;
reactions: Array<{ reactions: Array<{
__typename?: "ReactionGQL"; __typename?: "ReactionGQL";
@@ -4182,11 +4213,15 @@ export type VideoCardFieldsFragment = {
id: number; id: number;
name?: string | null; name?: string | null;
screenshotUri?: string | null; screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number; totalShots: number;
makePercentage: number; makePercentage: number;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null; averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null; startTime?: any | null;
endTime?: any | null;
private: boolean; private: boolean;
elapsedTime?: number | null; elapsedTime?: number | null;
tableSize: number; tableSize: number;
@@ -4201,13 +4236,23 @@ export type VideoCardFieldsFragment = {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
} | null; } | null;
tags: Array<{ __typename?: "VideoTag"; name: string }>; tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
id: number; id: number;
status: ProcessingStatusEnum; status: ProcessingStatusEnum;
errors: Array<{ __typename?: "VideoProcessingErrorGQL"; message: string }>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null; } | null;
reactions: Array<{ reactions: Array<{
__typename?: "ReactionGQL"; __typename?: "ReactionGQL";
@@ -4281,11 +4326,15 @@ export type GetVideoFeedQuery = {
id: number; id: number;
name?: string | null; name?: string | null;
screenshotUri?: string | null; screenshotUri?: string | null;
totalShotsMade: number;
totalShots: number; totalShots: number;
makePercentage: number; makePercentage: number;
averageTimeBetweenShots?: number | null; averageTimeBetweenShots?: number | null;
averageDifficulty?: number | null; averageDifficulty?: number | null;
createdAt?: any | null;
updatedAt?: any | null;
startTime?: any | null; startTime?: any | null;
endTime?: any | null;
private: boolean; private: boolean;
elapsedTime?: number | null; elapsedTime?: number | null;
tableSize: number; tableSize: number;
@@ -4300,13 +4349,26 @@ export type GetVideoFeedQuery = {
__typename?: "UploadStreamGQL"; __typename?: "UploadStreamGQL";
id: string; id: string;
lastIntendedSegmentBound?: number | null; lastIntendedSegmentBound?: number | null;
isCompleted: boolean;
streamSegmentType: StreamSegmentTypeEnum; streamSegmentType: StreamSegmentTypeEnum;
} | null; } | null;
tags: Array<{ __typename?: "VideoTag"; name: string }>; tags: Array<{
__typename?: "VideoTag";
name: string;
tagClasses: Array<{ __typename?: "VideoTagClass"; name: string }>;
}>;
currentProcessing?: { currentProcessing?: {
__typename?: "VideoProcessingGQL"; __typename?: "VideoProcessingGQL";
id: number; id: number;
status: ProcessingStatusEnum; status: ProcessingStatusEnum;
errors: Array<{
__typename?: "VideoProcessingErrorGQL";
message: string;
}>;
statuses: Array<{
__typename?: "VideoProcessingStatusGQL";
status: ProcessingStatusEnum;
}>;
} | null; } | null;
reactions: Array<{ reactions: Array<{
__typename?: "ReactionGQL"; __typename?: "ReactionGQL";
@@ -6471,26 +6533,41 @@ export const VideoCardFieldsFragmentDoc = gql`
} }
name name
screenshotUri screenshotUri
totalShotsMade
totalShots totalShots
makePercentage makePercentage
averageTimeBetweenShots averageTimeBetweenShots
averageDifficulty averageDifficulty
createdAt
updatedAt
startTime startTime
endTime
private private
elapsedTime elapsedTime
screenshotUri
stream { stream {
id id
lastIntendedSegmentBound lastIntendedSegmentBound
isCompleted
streamSegmentType streamSegmentType
} }
tableSize tableSize
pocketSize pocketSize
tags { tags {
tagClasses {
name
}
name name
} }
currentProcessing { currentProcessing {
id id
errors {
message
}
status status
statuses {
status
}
} }
reactions { reactions {
videoId videoId

View File

@@ -31,26 +31,41 @@ fragment VideoCardFields on VideoGQL {
} }
name name
screenshotUri screenshotUri
totalShotsMade
totalShots totalShots
makePercentage makePercentage
averageTimeBetweenShots averageTimeBetweenShots
averageDifficulty averageDifficulty
createdAt
updatedAt
startTime startTime
endTime
private private
elapsedTime elapsedTime
screenshotUri
stream { stream {
id id
lastIntendedSegmentBound lastIntendedSegmentBound
isCompleted
streamSegmentType streamSegmentType
} }
tableSize tableSize
pocketSize pocketSize
tags { tags {
tagClasses {
name
}
name name
} }
currentProcessing { currentProcessing {
id id
errors {
message
}
status status
statuses {
status
}
} }
reactions { reactions {
videoId videoId

View File

@@ -28,7 +28,7 @@ type Query {
getLongestRunsLeaderboard( getLongestRunsLeaderboard(
interval: TimeInterval = null interval: TimeInterval = null
when: DateTime = null when: DateTime = null
limit: Int! = 50 limit: Int! = 100
requiredTags: [String!] = null requiredTags: [String!] = null
): RunLeaderboardGQL! ): RunLeaderboardGQL!
getMakesLeaderboard( getMakesLeaderboard(
@@ -998,10 +998,17 @@ type QuotaStatusGQL {
durationUsedSeconds: Float! durationUsedSeconds: Float!
durationLimitSeconds: Int durationLimitSeconds: Int
maxVideoDurationSeconds: Int maxVideoDurationSeconds: Int
recordingPermission: UploadPermissionGQL!
importUploadPermission: UploadPermissionGQL!
durationRemainingSeconds: Float durationRemainingSeconds: Float
canUpload: Boolean! canUpload: Boolean!
} }
type UploadPermissionGQL {
allowed: Boolean!
reason: String
}
type UserPlayTimeGQL { type UserPlayTimeGQL {
totalSeconds: Float! totalSeconds: Float!
} }
@@ -1134,6 +1141,7 @@ type Mutation {
findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL findPrerecordTableLayout(b64Image: String!, videoId: Int!): HomographyInfoGQL
createUploadStream( createUploadStream(
videoMetadata: VideoMetadataInput! videoMetadata: VideoMetadataInput!
uploadKind: UploadKindEnum = null
expectedDurationSeconds: Float = null expectedDurationSeconds: Float = null
): CreateUploadStreamReturn! ): CreateUploadStreamReturn!
getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn! getUploadLink(videoId: Int!, segmentIndex: Int!): GetUploadLinkReturn!
@@ -1302,6 +1310,11 @@ input VideoResolution {
height: Int! height: Int!
} }
enum UploadKindEnum {
RECORDING
IMPORT
}
type GetUploadLinkReturn { type GetUploadLinkReturn {
value: UploadLinkGetUploadLinkErrors! value: UploadLinkGetUploadLinkErrors!
stream: UploadStreamGQL stream: UploadStreamGQL