@camstack/addon-provider-reolink 1.2.65 → 1.2.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon.js +121 -13
- package/dist/addon.mjs +121 -13
- package/package.json +1 -1
package/dist/addon.js
CHANGED
|
@@ -8329,18 +8329,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8329
8329
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8330
8330
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8331
8331
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8332
|
+
/**
|
|
8333
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8334
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8335
|
+
* already has a stamp-without-copy path).
|
|
8336
|
+
*
|
|
8337
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8338
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8339
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8340
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8341
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8342
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8343
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8344
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8345
|
+
* new disk while its bytes are on the old one.
|
|
8346
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8347
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8348
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8349
|
+
* never run beside a live second location: it is stop-the-world
|
|
8350
|
+
* by construction, which is acceptable only because the gallery
|
|
8351
|
+
* is a few KB per enrolled sample.
|
|
8352
|
+
*/
|
|
8353
|
+
var MediaRelocateModeSchema = _enum([
|
|
8354
|
+
"move",
|
|
8355
|
+
"seal",
|
|
8356
|
+
"gallery"
|
|
8357
|
+
]);
|
|
8332
8358
|
var RelocateMediaInputSchema = object({
|
|
8333
8359
|
toLocationId: string(),
|
|
8334
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8360
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8361
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8362
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8363
|
+
});
|
|
8364
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8365
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8366
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8367
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8368
|
+
media: number().int().nonnegative(),
|
|
8369
|
+
retrainFrames: number().int().nonnegative(),
|
|
8370
|
+
total: number().int().nonnegative()
|
|
8335
8371
|
});
|
|
8336
8372
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8337
|
-
/** The independently selectable logical storage classes
|
|
8338
|
-
*
|
|
8339
|
-
*
|
|
8373
|
+
/** The independently selectable logical storage classes — every class
|
|
8374
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8375
|
+
* Zod enum error where they should meet an explanation.
|
|
8376
|
+
*
|
|
8377
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8378
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8379
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8380
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8340
8381
|
var StorageMigrationClassSchema = _enum([
|
|
8341
8382
|
"recordings",
|
|
8342
8383
|
"recordingsLow",
|
|
8343
|
-
"eventMedia"
|
|
8384
|
+
"eventMedia",
|
|
8385
|
+
"backups",
|
|
8386
|
+
"galleryMedia"
|
|
8344
8387
|
]);
|
|
8345
8388
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8346
8389
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8348,20 +8391,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8348
8391
|
var StorageMigrationDestinationsSchema = object({
|
|
8349
8392
|
recordings: string().min(1).optional(),
|
|
8350
8393
|
recordingsLow: string().min(1).optional(),
|
|
8351
|
-
eventMedia: string().min(1).optional()
|
|
8394
|
+
eventMedia: string().min(1).optional(),
|
|
8395
|
+
backups: string().min(1).optional(),
|
|
8396
|
+
galleryMedia: string().min(1).optional()
|
|
8352
8397
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8398
|
+
/**
|
|
8399
|
+
* How a migration sequences the cutover against the byte move.
|
|
8400
|
+
*
|
|
8401
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8402
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8403
|
+
* for a small or a cold class, and the only legal mode for
|
|
8404
|
+
* a `cardinality: 'single'` class.
|
|
8405
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8406
|
+
* refresh, resume, then move the past with everything
|
|
8407
|
+
* running. The pause is three bounded instants (a detach +
|
|
8408
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8409
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8410
|
+
* stopped recording under `blocking`; the same move is
|
|
8411
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8412
|
+
*
|
|
8413
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8414
|
+
* operator finds out which one is running.
|
|
8415
|
+
*/
|
|
8416
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8353
8417
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8354
8418
|
var StorageMigrationInputSchema = object({
|
|
8355
8419
|
destinations: StorageMigrationDestinationsSchema,
|
|
8356
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8420
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8421
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8422
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8357
8423
|
});
|
|
8358
|
-
/**
|
|
8359
|
-
*
|
|
8360
|
-
*
|
|
8424
|
+
/**
|
|
8425
|
+
* The durable coordinator state machine.
|
|
8426
|
+
*
|
|
8427
|
+
* `blocking`:
|
|
8428
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8429
|
+
*
|
|
8430
|
+
* `nonBlocking`:
|
|
8431
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8432
|
+
*
|
|
8433
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8434
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8435
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8436
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8437
|
+
*/
|
|
8361
8438
|
var StorageMigrationPhaseSchema = _enum([
|
|
8362
8439
|
"planning",
|
|
8440
|
+
"sealing",
|
|
8363
8441
|
"pausing",
|
|
8364
8442
|
"moving",
|
|
8443
|
+
"draining",
|
|
8365
8444
|
"verifying",
|
|
8366
8445
|
"repointing",
|
|
8367
8446
|
"refreshing",
|
|
@@ -8386,6 +8465,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8386
8465
|
var StorageMigrationJobSchema = object({
|
|
8387
8466
|
jobId: string(),
|
|
8388
8467
|
phase: StorageMigrationPhaseSchema,
|
|
8468
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8469
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8470
|
+
mode: StorageMigrationModeSchema,
|
|
8389
8471
|
destinations: StorageMigrationDestinationsSchema,
|
|
8390
8472
|
throttleMbps: number(),
|
|
8391
8473
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8398,13 +8480,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8398
8480
|
finishedAt: number().nullable(),
|
|
8399
8481
|
error: string().nullable()
|
|
8400
8482
|
});
|
|
8483
|
+
var StorageMigrationFindingSchema = object({
|
|
8484
|
+
code: _enum([
|
|
8485
|
+
"sharesDeviceWithSource",
|
|
8486
|
+
"deviceIdentityUnknown",
|
|
8487
|
+
"unstampedEventMediaRows",
|
|
8488
|
+
"blockingOnly",
|
|
8489
|
+
"noMover"
|
|
8490
|
+
]),
|
|
8491
|
+
storageClass: StorageMigrationClassSchema,
|
|
8492
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8493
|
+
message: string()
|
|
8494
|
+
});
|
|
8401
8495
|
var StorageMigrationPlanSchema = object({
|
|
8402
8496
|
destinations: StorageMigrationDestinationsSchema,
|
|
8497
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8498
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8499
|
+
* it. */
|
|
8500
|
+
mode: StorageMigrationModeSchema,
|
|
8403
8501
|
moves: array(object({
|
|
8404
8502
|
storageClass: StorageMigrationClassSchema,
|
|
8405
8503
|
fromLocationId: string(),
|
|
8406
8504
|
toLocationId: string()
|
|
8407
|
-
}))
|
|
8505
|
+
})),
|
|
8506
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8408
8507
|
});
|
|
8409
8508
|
/**
|
|
8410
8509
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -19590,7 +19689,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19590
19689
|
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
19591
19690
|
kind: "mutation",
|
|
19592
19691
|
auth: "admin"
|
|
19593
|
-
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
19692
|
+
}), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
19594
19693
|
kind: "query",
|
|
19595
19694
|
auth: "admin"
|
|
19596
19695
|
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
@@ -21601,7 +21700,10 @@ method(object({
|
|
|
21601
21700
|
}), StorageLocationSchema, {
|
|
21602
21701
|
kind: "mutation",
|
|
21603
21702
|
auth: "admin"
|
|
21604
|
-
}), method(object({
|
|
21703
|
+
}), method(object({
|
|
21704
|
+
id: string(),
|
|
21705
|
+
force: boolean().optional()
|
|
21706
|
+
}), _void(), {
|
|
21605
21707
|
kind: "mutation",
|
|
21606
21708
|
auth: "admin"
|
|
21607
21709
|
}), method(object({ id: string() }), object({
|
|
@@ -35910,6 +36012,12 @@ Object.freeze({
|
|
|
35910
36012
|
addonId: null,
|
|
35911
36013
|
access: "create"
|
|
35912
36014
|
},
|
|
36015
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
36016
|
+
capName: "pipeline-analytics",
|
|
36017
|
+
capScope: "device",
|
|
36018
|
+
addonId: null,
|
|
36019
|
+
access: "view"
|
|
36020
|
+
},
|
|
35913
36021
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
35914
36022
|
capName: "pipeline-analytics",
|
|
35915
36023
|
capScope: "device",
|
package/dist/addon.mjs
CHANGED
|
@@ -8324,18 +8324,61 @@ var RelocateFootageInputSchema = object({
|
|
|
8324
8324
|
* `RecordingConfig.enabled` or camera wrapper bindings. */
|
|
8325
8325
|
var StorageMigrationLeaseInputSchema = object({ leaseId: string().min(1) });
|
|
8326
8326
|
var StorageMigrationFootageMoveInputSchema = RelocateFootageInputSchema.extend({ leaseId: string().min(1) });
|
|
8327
|
+
/**
|
|
8328
|
+
* What a `relocateMedia` pass DOES. One engine, three passes — never a second
|
|
8329
|
+
* mover (the engine already walks both collections with a timestamp cursor and
|
|
8330
|
+
* already has a stamp-without-copy path).
|
|
8331
|
+
*
|
|
8332
|
+
* - `move` — the default and the historical behaviour: event-media and
|
|
8333
|
+
* retrain blobs move to `toLocationId` and their rows are
|
|
8334
|
+
* stamped. The enrolled gallery is skipped (D197).
|
|
8335
|
+
* - `seal` — ROWS ONLY, no bytes. Every row whose `locationId` is NULL is
|
|
8336
|
+
* stamped with `toLocationId`. `toLocationId` here is the id the
|
|
8337
|
+
* bytes ALREADY sit on — today's `eventMedia` default — because
|
|
8338
|
+
* a NULL row means "wherever `eventMedia` points *now*", and the
|
|
8339
|
+
* instant a repoint moves that pointer the row reads from the
|
|
8340
|
+
* new disk while its bytes are on the old one.
|
|
8341
|
+
* - `gallery` — the inverse selection of `move`: ONLY the retention-exempt
|
|
8342
|
+
* (enrolled-gallery) rows, which `move` deliberately skips.
|
|
8343
|
+
* `galleryMedia` is `cardinality: 'single'`, so this pass can
|
|
8344
|
+
* never run beside a live second location: it is stop-the-world
|
|
8345
|
+
* by construction, which is acceptable only because the gallery
|
|
8346
|
+
* is a few KB per enrolled sample.
|
|
8347
|
+
*/
|
|
8348
|
+
var MediaRelocateModeSchema = _enum([
|
|
8349
|
+
"move",
|
|
8350
|
+
"seal",
|
|
8351
|
+
"gallery"
|
|
8352
|
+
]);
|
|
8327
8353
|
var RelocateMediaInputSchema = object({
|
|
8328
8354
|
toLocationId: string(),
|
|
8329
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8355
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8356
|
+
/** Omitted = `move`, the pre-existing behaviour. */
|
|
8357
|
+
mode: MediaRelocateModeSchema.optional()
|
|
8358
|
+
});
|
|
8359
|
+
/** How many rows still carry NO `locationId` — the population a repoint would
|
|
8360
|
+
* silently re-aim at a disk that does not hold their bytes. Zero is the only
|
|
8361
|
+
* value that permits a non-blocking `eventMedia` cutover. */
|
|
8362
|
+
var UnstampedEventMediaCountSchema = object({
|
|
8363
|
+
media: number().int().nonnegative(),
|
|
8364
|
+
retrainFrames: number().int().nonnegative(),
|
|
8365
|
+
total: number().int().nonnegative()
|
|
8330
8366
|
});
|
|
8331
8367
|
var StorageMigrationMediaMoveInputSchema = RelocateMediaInputSchema.extend({ leaseId: string().min(1) });
|
|
8332
|
-
/** The independently selectable logical storage classes
|
|
8333
|
-
*
|
|
8334
|
-
*
|
|
8368
|
+
/** The independently selectable logical storage classes — every class
|
|
8369
|
+
* `storage.listLocationDeclarations` reports, so an operator never meets a
|
|
8370
|
+
* Zod enum error where they should meet an explanation.
|
|
8371
|
+
*
|
|
8372
|
+
* `recordings` encompasses the high and mid segment profiles; `recordingsLow`
|
|
8373
|
+
* is low segments; `eventMedia` is post-analysis blobs; `galleryMedia` is the
|
|
8374
|
+
* enrolled gallery; `backups` is the system backup archive. The last two have
|
|
8375
|
+
* their own rules — see {@link StorageMigrationFindingCodeSchema}. */
|
|
8335
8376
|
var StorageMigrationClassSchema = _enum([
|
|
8336
8377
|
"recordings",
|
|
8337
8378
|
"recordingsLow",
|
|
8338
|
-
"eventMedia"
|
|
8379
|
+
"eventMedia",
|
|
8380
|
+
"backups",
|
|
8381
|
+
"galleryMedia"
|
|
8339
8382
|
]);
|
|
8340
8383
|
/** A destination is always an existing, fully-qualified location id. The
|
|
8341
8384
|
* migration API intentionally never changes a source location's `basePath`:
|
|
@@ -8343,20 +8386,56 @@ var StorageMigrationClassSchema = _enum([
|
|
|
8343
8386
|
var StorageMigrationDestinationsSchema = object({
|
|
8344
8387
|
recordings: string().min(1).optional(),
|
|
8345
8388
|
recordingsLow: string().min(1).optional(),
|
|
8346
|
-
eventMedia: string().min(1).optional()
|
|
8389
|
+
eventMedia: string().min(1).optional(),
|
|
8390
|
+
backups: string().min(1).optional(),
|
|
8391
|
+
galleryMedia: string().min(1).optional()
|
|
8347
8392
|
}).refine((value) => Object.keys(value).length > 0, { message: "select at least one storage class" });
|
|
8393
|
+
/**
|
|
8394
|
+
* How a migration sequences the cutover against the byte move.
|
|
8395
|
+
*
|
|
8396
|
+
* - `blocking` — the historical order: pause, move every byte, repoint,
|
|
8397
|
+
* resume. Recording is stopped for the whole move. Right
|
|
8398
|
+
* for a small or a cold class, and the only legal mode for
|
|
8399
|
+
* a `cardinality: 'single'` class.
|
|
8400
|
+
* - `nonBlocking` — repoint FIRST, drain behind: seal, pause, repoint,
|
|
8401
|
+
* refresh, resume, then move the past with everything
|
|
8402
|
+
* running. The pause is three bounded instants (a detach +
|
|
8403
|
+
* attach round, a write-gate drain, a lease) instead of one
|
|
8404
|
+
* bounded by bytes. 1.09 TB at 7–14 MB/s is thirty hours of
|
|
8405
|
+
* stopped recording under `blocking`; the same move is
|
|
8406
|
+
* seconds of stopped recording under `nonBlocking`.
|
|
8407
|
+
*
|
|
8408
|
+
* The mode is on the JOB, not only on the input, because `status` is where an
|
|
8409
|
+
* operator finds out which one is running.
|
|
8410
|
+
*/
|
|
8411
|
+
var StorageMigrationModeSchema = _enum(["blocking", "nonBlocking"]);
|
|
8348
8412
|
/** Shared input for planning and starting an orchestrated storage migration. */
|
|
8349
8413
|
var StorageMigrationInputSchema = object({
|
|
8350
8414
|
destinations: StorageMigrationDestinationsSchema,
|
|
8351
|
-
throttleMbps: number().min(1).max(1e3).optional()
|
|
8415
|
+
throttleMbps: number().min(1).max(1e3).optional(),
|
|
8416
|
+
/** Omitted = `blocking`, which stays the default. */
|
|
8417
|
+
mode: StorageMigrationModeSchema.optional()
|
|
8352
8418
|
});
|
|
8353
|
-
/**
|
|
8354
|
-
*
|
|
8355
|
-
*
|
|
8419
|
+
/**
|
|
8420
|
+
* The durable coordinator state machine.
|
|
8421
|
+
*
|
|
8422
|
+
* `blocking`:
|
|
8423
|
+
* planning → pausing → moving → verifying → repointing → refreshing → resuming → done
|
|
8424
|
+
*
|
|
8425
|
+
* `nonBlocking`:
|
|
8426
|
+
* planning → sealing → pausing → repointing → refreshing → resuming → draining → verifying → done
|
|
8427
|
+
*
|
|
8428
|
+
* Same phases, different order plus two new ones — not a second mover.
|
|
8429
|
+
* `sealing` closes the `eventMedia` NULL-row hole BEFORE anything is paused;
|
|
8430
|
+
* `draining` runs the same movers UNLEASED, after every writer is back up.
|
|
8431
|
+
* `repointing` is still the only phase that changes a default location.
|
|
8432
|
+
*/
|
|
8356
8433
|
var StorageMigrationPhaseSchema = _enum([
|
|
8357
8434
|
"planning",
|
|
8435
|
+
"sealing",
|
|
8358
8436
|
"pausing",
|
|
8359
8437
|
"moving",
|
|
8438
|
+
"draining",
|
|
8360
8439
|
"verifying",
|
|
8361
8440
|
"repointing",
|
|
8362
8441
|
"refreshing",
|
|
@@ -8381,6 +8460,9 @@ var StorageMigrationMoveSchema = object({
|
|
|
8381
8460
|
var StorageMigrationJobSchema = object({
|
|
8382
8461
|
jobId: string(),
|
|
8383
8462
|
phase: StorageMigrationPhaseSchema,
|
|
8463
|
+
/** Which order this job is running. `status` is the only place an operator
|
|
8464
|
+
* can tell a seconds-long cutover from a thirty-hour one. */
|
|
8465
|
+
mode: StorageMigrationModeSchema,
|
|
8384
8466
|
destinations: StorageMigrationDestinationsSchema,
|
|
8385
8467
|
throttleMbps: number(),
|
|
8386
8468
|
moves: array(StorageMigrationMoveSchema),
|
|
@@ -8393,13 +8475,30 @@ var StorageMigrationJobSchema = object({
|
|
|
8393
8475
|
finishedAt: number().nullable(),
|
|
8394
8476
|
error: string().nullable()
|
|
8395
8477
|
});
|
|
8478
|
+
var StorageMigrationFindingSchema = object({
|
|
8479
|
+
code: _enum([
|
|
8480
|
+
"sharesDeviceWithSource",
|
|
8481
|
+
"deviceIdentityUnknown",
|
|
8482
|
+
"unstampedEventMediaRows",
|
|
8483
|
+
"blockingOnly",
|
|
8484
|
+
"noMover"
|
|
8485
|
+
]),
|
|
8486
|
+
storageClass: StorageMigrationClassSchema,
|
|
8487
|
+
/** Human-readable, already carrying the ids and counts. */
|
|
8488
|
+
message: string()
|
|
8489
|
+
});
|
|
8396
8490
|
var StorageMigrationPlanSchema = object({
|
|
8397
8491
|
destinations: StorageMigrationDestinationsSchema,
|
|
8492
|
+
/** The mode this plan was built for. A plan is only valid for its mode: the
|
|
8493
|
+
* `eventMedia` seal gate and the single-cardinality refusal both depend on
|
|
8494
|
+
* it. */
|
|
8495
|
+
mode: StorageMigrationModeSchema,
|
|
8398
8496
|
moves: array(object({
|
|
8399
8497
|
storageClass: StorageMigrationClassSchema,
|
|
8400
8498
|
fromLocationId: string(),
|
|
8401
8499
|
toLocationId: string()
|
|
8402
|
-
}))
|
|
8500
|
+
})),
|
|
8501
|
+
findings: array(StorageMigrationFindingSchema)
|
|
8403
8502
|
});
|
|
8404
8503
|
/**
|
|
8405
8504
|
* `StorageLocationType` — an addon-declared id that identifies the *kind* of
|
|
@@ -19585,7 +19684,7 @@ DeviceType.Camera, method(object({ deviceId: number() }), array(TrackSchema).rea
|
|
|
19585
19684
|
}), method(RelocateMediaInputSchema, object({ jobId: string() }), {
|
|
19586
19685
|
kind: "mutation",
|
|
19587
19686
|
auth: "admin"
|
|
19588
|
-
}), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
19687
|
+
}), method(object({}), UnstampedEventMediaCountSchema, { auth: "admin" }), method(object({}), array(RelocateJobSchema).readonly(), {
|
|
19589
19688
|
kind: "query",
|
|
19590
19689
|
auth: "admin"
|
|
19591
19690
|
}), method(object({ jobId: string() }), object({ cancelled: boolean() }), {
|
|
@@ -21596,7 +21695,10 @@ method(object({
|
|
|
21596
21695
|
}), StorageLocationSchema, {
|
|
21597
21696
|
kind: "mutation",
|
|
21598
21697
|
auth: "admin"
|
|
21599
|
-
}), method(object({
|
|
21698
|
+
}), method(object({
|
|
21699
|
+
id: string(),
|
|
21700
|
+
force: boolean().optional()
|
|
21701
|
+
}), _void(), {
|
|
21600
21702
|
kind: "mutation",
|
|
21601
21703
|
auth: "admin"
|
|
21602
21704
|
}), method(object({ id: string() }), object({
|
|
@@ -35905,6 +36007,12 @@ Object.freeze({
|
|
|
35905
36007
|
addonId: null,
|
|
35906
36008
|
access: "create"
|
|
35907
36009
|
},
|
|
36010
|
+
"pipelineAnalytics.countUnstampedEventMedia": {
|
|
36011
|
+
capName: "pipeline-analytics",
|
|
36012
|
+
capScope: "device",
|
|
36013
|
+
addonId: null,
|
|
36014
|
+
access: "view"
|
|
36015
|
+
},
|
|
35908
36016
|
"pipelineAnalytics.deleteDeviceEvents": {
|
|
35909
36017
|
capName: "pipeline-analytics",
|
|
35910
36018
|
capScope: "device",
|