Add per-camera recording policy (terms + private allowance) to schema
All checks were successful
Tests / Tests (pull_request) Successful in 10s

allowsPrivateVideos / claimTermsText / claimTermsVersion on PoolHallCamera,
agreedTermsVersion on CameraClaimSession + the create-claim mutation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Dean Wenstrand
2026-07-06 18:21:58 -07:00
parent fc921c3ae7
commit 3ce2a7be61
3 changed files with 84 additions and 0 deletions

View File

@@ -157,6 +157,7 @@ export type BucketSetInputGql = {
export type CameraClaimSession = { export type CameraClaimSession = {
__typename?: "CameraClaimSession"; __typename?: "CameraClaimSession";
agreedTermsVersion?: Maybe<Scalars["Int"]["output"]>;
camera: PoolHallCamera; camera: PoolHallCamera;
cameraId: Scalars["ID"]["output"]; cameraId: Scalars["ID"]["output"];
challengeCode: Scalars["String"]["output"]; challengeCode: Scalars["String"]["output"];
@@ -284,6 +285,8 @@ export type CreateCustomerPortalSessionResultGql = {
}; };
export type CreatePoolHallCameraInput = { export type CreatePoolHallCameraInput = {
allowsPrivateVideos?: InputMaybe<Scalars["Boolean"]["input"]>;
claimTermsText?: InputMaybe<Scalars["String"]["input"]>;
name: Scalars["String"]["input"]; name: Scalars["String"]["input"];
pocketSize?: InputMaybe<Scalars["Float"]["input"]>; pocketSize?: InputMaybe<Scalars["Float"]["input"]>;
poolHallId: Scalars["ID"]["input"]; poolHallId: Scalars["ID"]["input"];
@@ -2563,6 +2566,7 @@ export type MutationCreateBucketSetArgs = {
}; };
export type MutationCreateCameraClaimSessionArgs = { export type MutationCreateCameraClaimSessionArgs = {
agreedTermsVersion?: InputMaybe<Scalars["Int"]["input"]>;
cameraId: Scalars["ID"]["input"]; cameraId: Scalars["ID"]["input"];
durationMinutes?: InputMaybe<Scalars["Int"]["input"]>; durationMinutes?: InputMaybe<Scalars["Int"]["input"]>;
videoName?: InputMaybe<Scalars["String"]["input"]>; videoName?: InputMaybe<Scalars["String"]["input"]>;
@@ -2963,6 +2967,9 @@ export type PoolHall = {
export type PoolHallCamera = { export type PoolHallCamera = {
__typename?: "PoolHallCamera"; __typename?: "PoolHallCamera";
allowsPrivateVideos: Scalars["Boolean"]["output"];
claimTermsText?: Maybe<Scalars["String"]["output"]>;
claimTermsVersion?: Maybe<Scalars["Int"]["output"]>;
createdAt: Scalars["DateTime"]["output"]; createdAt: Scalars["DateTime"]["output"];
id: Scalars["ID"]["output"]; id: Scalars["ID"]["output"];
inUse: Scalars["Boolean"]["output"]; inUse: Scalars["Boolean"]["output"];
@@ -3825,6 +3832,8 @@ export type UpdateAnnotationInputGql = {
}; };
export type UpdatePoolHallCameraInput = { export type UpdatePoolHallCameraInput = {
allowsPrivateVideos?: InputMaybe<Scalars["Boolean"]["input"]>;
claimTermsText?: InputMaybe<Scalars["String"]["input"]>;
id: Scalars["ID"]["input"]; id: Scalars["ID"]["input"];
name?: InputMaybe<Scalars["String"]["input"]>; name?: InputMaybe<Scalars["String"]["input"]>;
pocketSize?: InputMaybe<Scalars["Float"]["input"]>; pocketSize?: InputMaybe<Scalars["Float"]["input"]>;
@@ -5560,6 +5569,9 @@ export type PoolHallCameraFieldsFragment = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5577,6 +5589,9 @@ export type PoolHallCameraWithHallFieldsFragment = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5612,6 +5627,9 @@ export type PoolHallCameraStreamCredentialsFieldsFragment = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5645,6 +5663,7 @@ export type CameraClaimSessionFieldsFragment = {
detectedAt?: any | null; detectedAt?: any | null;
failedAt?: any | null; failedAt?: any | null;
failureReason?: string | null; failureReason?: string | null;
agreedTermsVersion?: number | null;
createdAt: any; createdAt: any;
updatedAt: any; updatedAt: any;
camera: { camera: {
@@ -5657,6 +5676,9 @@ export type CameraClaimSessionFieldsFragment = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5703,6 +5725,9 @@ export type CameraLeaseFieldsFragment = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5783,6 +5808,9 @@ export type GetPoolHallCamerasQuery = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5821,6 +5849,9 @@ export type GetClaimableCamerasQuery = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5860,6 +5891,7 @@ export type GetCameraClaimSessionQuery = {
detectedAt?: any | null; detectedAt?: any | null;
failedAt?: any | null; failedAt?: any | null;
failureReason?: string | null; failureReason?: string | null;
agreedTermsVersion?: number | null;
createdAt: any; createdAt: any;
updatedAt: any; updatedAt: any;
camera: { camera: {
@@ -5872,6 +5904,9 @@ export type GetCameraClaimSessionQuery = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -5925,6 +5960,9 @@ export type GetActiveCameraLeaseQuery = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6012,6 +6050,9 @@ export type CreatePoolHallCameraMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6051,6 +6092,9 @@ export type UpdatePoolHallCameraMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6093,6 +6137,9 @@ export type RotatePoolHallCameraStreamKeyMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6121,6 +6168,7 @@ export type CreateCameraClaimSessionMutationVariables = Exact<{
durationMinutes?: InputMaybe<Scalars["Int"]["input"]>; durationMinutes?: InputMaybe<Scalars["Int"]["input"]>;
videoName?: InputMaybe<Scalars["String"]["input"]>; videoName?: InputMaybe<Scalars["String"]["input"]>;
videoPrivate?: InputMaybe<Scalars["Boolean"]["input"]>; videoPrivate?: InputMaybe<Scalars["Boolean"]["input"]>;
agreedTermsVersion?: InputMaybe<Scalars["Int"]["input"]>;
}>; }>;
export type CreateCameraClaimSessionMutation = { export type CreateCameraClaimSessionMutation = {
@@ -6136,6 +6184,7 @@ export type CreateCameraClaimSessionMutation = {
detectedAt?: any | null; detectedAt?: any | null;
failedAt?: any | null; failedAt?: any | null;
failureReason?: string | null; failureReason?: string | null;
agreedTermsVersion?: number | null;
createdAt: any; createdAt: any;
updatedAt: any; updatedAt: any;
camera: { camera: {
@@ -6148,6 +6197,9 @@ export type CreateCameraClaimSessionMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6188,6 +6240,7 @@ export type CancelCameraClaimSessionMutation = {
detectedAt?: any | null; detectedAt?: any | null;
failedAt?: any | null; failedAt?: any | null;
failureReason?: string | null; failureReason?: string | null;
agreedTermsVersion?: number | null;
createdAt: any; createdAt: any;
updatedAt: any; updatedAt: any;
camera: { camera: {
@@ -6200,6 +6253,9 @@ export type CancelCameraClaimSessionMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6253,6 +6309,9 @@ export type EndCameraLeaseMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -6307,6 +6366,9 @@ export type ExtendCameraLeaseMutation = {
status: string; status: string;
tableSize?: number | null; tableSize?: number | null;
pocketSize?: number | null; pocketSize?: number | null;
allowsPrivateVideos: boolean;
claimTermsText?: string | null;
claimTermsVersion?: number | null;
inUse: boolean; inUse: boolean;
lastPublishedAt?: any | null; lastPublishedAt?: any | null;
lastUnpublishedAt?: any | null; lastUnpublishedAt?: any | null;
@@ -8649,6 +8711,9 @@ export const PoolHallCameraFieldsFragmentDoc = gql`
status status
tableSize tableSize
pocketSize pocketSize
allowsPrivateVideos
claimTermsText
claimTermsVersion
inUse inUse
lastPublishedAt lastPublishedAt
lastUnpublishedAt lastUnpublishedAt
@@ -8702,6 +8767,7 @@ export const CameraClaimSessionFieldsFragmentDoc = gql`
detectedAt detectedAt
failedAt failedAt
failureReason failureReason
agreedTermsVersion
createdAt createdAt
updatedAt updatedAt
camera { camera {
@@ -13283,12 +13349,14 @@ export const CreateCameraClaimSessionDocument = gql`
$durationMinutes: Int $durationMinutes: Int
$videoName: String $videoName: String
$videoPrivate: Boolean $videoPrivate: Boolean
$agreedTermsVersion: Int
) { ) {
createCameraClaimSession( createCameraClaimSession(
cameraId: $cameraId cameraId: $cameraId
durationMinutes: $durationMinutes durationMinutes: $durationMinutes
videoName: $videoName videoName: $videoName
videoPrivate: $videoPrivate videoPrivate: $videoPrivate
agreedTermsVersion: $agreedTermsVersion
) { ) {
...CameraClaimSessionFields ...CameraClaimSessionFields
} }
@@ -13317,6 +13385,7 @@ export type CreateCameraClaimSessionMutationFn = Apollo.MutationFunction<
* durationMinutes: // value for 'durationMinutes' * durationMinutes: // value for 'durationMinutes'
* videoName: // value for 'videoName' * videoName: // value for 'videoName'
* videoPrivate: // value for 'videoPrivate' * videoPrivate: // value for 'videoPrivate'
* agreedTermsVersion: // value for 'agreedTermsVersion'
* }, * },
* }); * });
*/ */

View File

@@ -21,6 +21,9 @@ fragment PoolHallCameraFields on PoolHallCamera {
status status
tableSize tableSize
pocketSize pocketSize
allowsPrivateVideos
claimTermsText
claimTermsVersion
inUse inUse
lastPublishedAt lastPublishedAt
lastUnpublishedAt lastUnpublishedAt
@@ -53,6 +56,7 @@ fragment CameraClaimSessionFields on CameraClaimSession {
detectedAt detectedAt
failedAt failedAt
failureReason failureReason
agreedTermsVersion
createdAt createdAt
updatedAt updatedAt
camera { camera {
@@ -149,12 +153,14 @@ mutation CreateCameraClaimSession(
$durationMinutes: Int $durationMinutes: Int
$videoName: String $videoName: String
$videoPrivate: Boolean $videoPrivate: Boolean
$agreedTermsVersion: Int
) { ) {
createCameraClaimSession( createCameraClaimSession(
cameraId: $cameraId cameraId: $cameraId
durationMinutes: $durationMinutes durationMinutes: $durationMinutes
videoName: $videoName videoName: $videoName
videoPrivate: $videoPrivate videoPrivate: $videoPrivate
agreedTermsVersion: $agreedTermsVersion
) { ) {
...CameraClaimSessionFields ...CameraClaimSessionFields
} }

View File

@@ -911,6 +911,9 @@ type PoolHallCamera {
status: String! status: String!
tableSize: Float tableSize: Float
pocketSize: Float pocketSize: Float
allowsPrivateVideos: Boolean!
claimTermsText: String
claimTermsVersion: Int
lastPublishedAt: DateTime lastPublishedAt: DateTime
lastUnpublishedAt: DateTime lastUnpublishedAt: DateTime
createdAt: DateTime! createdAt: DateTime!
@@ -929,6 +932,7 @@ type CameraClaimSession {
detectedAt: DateTime detectedAt: DateTime
failedAt: DateTime failedAt: DateTime
failureReason: String failureReason: String
agreedTermsVersion: Int
createdAt: DateTime! createdAt: DateTime!
updatedAt: DateTime! updatedAt: DateTime!
camera: PoolHallCamera! camera: PoolHallCamera!
@@ -1411,6 +1415,7 @@ type Mutation {
durationMinutes: Int = null durationMinutes: Int = null
videoName: String = null videoName: String = null
videoPrivate: Boolean = null videoPrivate: Boolean = null
agreedTermsVersion: Int = null
): CameraClaimSession! ): CameraClaimSession!
cancelCameraClaimSession(claimSessionId: ID!): CameraClaimSession! cancelCameraClaimSession(claimSessionId: ID!): CameraClaimSession!
endCameraLease(leaseId: ID!): CameraLease! endCameraLease(leaseId: ID!): CameraLease!
@@ -1529,6 +1534,8 @@ input CreatePoolHallCameraInput {
streamPath: String = null streamPath: String = null
tableSize: Float = null tableSize: Float = null
pocketSize: Float = null pocketSize: Float = null
allowsPrivateVideos: Boolean = null
claimTermsText: String = null
} }
input UpdatePoolHallCameraInput { input UpdatePoolHallCameraInput {
@@ -1538,6 +1545,8 @@ input UpdatePoolHallCameraInput {
status: String = null status: String = null
tableSize: Float = null tableSize: Float = null
pocketSize: Float = null pocketSize: Float = null
allowsPrivateVideos: Boolean = null
claimTermsText: String = null
} }
input FinalizePlayerAssignmentsInput { input FinalizePlayerAssignmentsInput {