een-api-toolkit 0.3.82 → 0.3.91

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.
Files changed (52) hide show
  1. package/.claude/agents/api-coverage-agent.md +264 -0
  2. package/.claude/agents/een-devices-agent.md +21 -0
  3. package/.claude/agents/een-ptz-agent.md +235 -0
  4. package/CHANGELOG.md +56 -60
  5. package/README.md +24 -1
  6. package/dist/index.cjs +3 -3
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +400 -0
  9. package/dist/index.js +1079 -951
  10. package/dist/index.js.map +1 -1
  11. package/docs/AI-CONTEXT.md +3 -1
  12. package/docs/ai-reference/AI-AUTH.md +1 -1
  13. package/docs/ai-reference/AI-AUTOMATIONS.md +1 -1
  14. package/docs/ai-reference/AI-DEVICES.md +1 -1
  15. package/docs/ai-reference/AI-EVENT-DATA-SCHEMAS.md +1 -1
  16. package/docs/ai-reference/AI-EVENTS.md +1 -1
  17. package/docs/ai-reference/AI-GROUPING.md +1 -1
  18. package/docs/ai-reference/AI-JOBS.md +1 -1
  19. package/docs/ai-reference/AI-MEDIA.md +1 -1
  20. package/docs/ai-reference/AI-PTZ.md +158 -0
  21. package/docs/ai-reference/AI-SETUP.md +1 -1
  22. package/docs/ai-reference/AI-USERS.md +1 -1
  23. package/examples/vue-ptz/.env.example +4 -0
  24. package/examples/vue-ptz/README.md +221 -0
  25. package/examples/vue-ptz/e2e/app.spec.ts +58 -0
  26. package/examples/vue-ptz/e2e/auth.spec.ts +296 -0
  27. package/examples/vue-ptz/index.html +13 -0
  28. package/examples/vue-ptz/package-lock.json +1729 -0
  29. package/examples/vue-ptz/package.json +29 -0
  30. package/examples/vue-ptz/playwright.config.ts +49 -0
  31. package/examples/vue-ptz/screenshot-ptz.png +0 -0
  32. package/examples/vue-ptz/src/App.vue +154 -0
  33. package/examples/vue-ptz/src/components/ApiLog.vue +387 -0
  34. package/examples/vue-ptz/src/components/CameraSelector.vue +155 -0
  35. package/examples/vue-ptz/src/components/DirectionPad.vue +350 -0
  36. package/examples/vue-ptz/src/components/LiveVideoPlayer.vue +248 -0
  37. package/examples/vue-ptz/src/components/PositionDisplay.vue +206 -0
  38. package/examples/vue-ptz/src/components/PositionInput.vue +190 -0
  39. package/examples/vue-ptz/src/components/PresetManager.vue +538 -0
  40. package/examples/vue-ptz/src/composables/useApiLog.ts +89 -0
  41. package/examples/vue-ptz/src/main.ts +22 -0
  42. package/examples/vue-ptz/src/router/index.ts +61 -0
  43. package/examples/vue-ptz/src/views/Callback.vue +76 -0
  44. package/examples/vue-ptz/src/views/Home.vue +199 -0
  45. package/examples/vue-ptz/src/views/Login.vue +32 -0
  46. package/examples/vue-ptz/src/views/Logout.vue +59 -0
  47. package/examples/vue-ptz/src/views/PtzControl.vue +173 -0
  48. package/examples/vue-ptz/src/vite-env.d.ts +12 -0
  49. package/examples/vue-ptz/tsconfig.json +21 -0
  50. package/examples/vue-ptz/tsconfig.node.json +11 -0
  51. package/examples/vue-ptz/vite.config.ts +12 -0
  52. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -605,6 +605,13 @@ export declare interface Camera {
605
605
  rtspConnectionSettings?: CameraRtspConnectionSettings;
606
606
  /** Physical position of the camera */
607
607
  devicePosition?: CameraDevicePosition;
608
+ /** Capabilities of the camera (returned when `include: ['capabilities']` is requested) */
609
+ capabilities?: {
610
+ ptz?: {
611
+ /** Whether this camera supports PTZ controls */
612
+ capable?: boolean;
613
+ };
614
+ };
608
615
  /** List of enabled analytics on this camera */
609
616
  enabledAnalytics?: string[];
610
617
  /** Recording mode settings */
@@ -3861,6 +3868,62 @@ export declare function getNotification(notificationId: string): Promise<Result<
3861
3868
  */
3862
3869
  export declare function getProxyUrl(): string | undefined;
3863
3870
 
3871
+ /**
3872
+ * Get the current PTZ position of a camera.
3873
+ *
3874
+ * @remarks
3875
+ * Fetches the current pan, tilt, and zoom coordinates from
3876
+ * `/api/v3.0/cameras/{cameraId}/ptz/position`.
3877
+ *
3878
+ * For more details, see the
3879
+ * [EEN API Documentation](https://developer.eagleeyenetworks.com/reference/getptzposition).
3880
+ *
3881
+ * @param cameraId - The unique identifier of the PTZ camera
3882
+ * @returns A Result containing the current PTZ position or an error
3883
+ *
3884
+ * @example
3885
+ * ```typescript
3886
+ * import { getPtzPosition } from 'een-api-toolkit'
3887
+ *
3888
+ * const { data, error } = await getPtzPosition('camera-123')
3889
+ * if (data) {
3890
+ * console.log(`Pan: ${data.x}, Tilt: ${data.y}, Zoom: ${data.z}`)
3891
+ * }
3892
+ * ```
3893
+ *
3894
+ * @category PTZ
3895
+ */
3896
+ export declare function getPtzPosition(cameraId: string): Promise<Result<PtzPositionResponse>>;
3897
+
3898
+ /**
3899
+ * Get PTZ settings for a camera, including presets and automation mode.
3900
+ *
3901
+ * @remarks
3902
+ * Fetches PTZ configuration from `/api/v3.0/cameras/{cameraId}/ptz/settings`.
3903
+ * Returns presets, home preset, automation mode, and auto-start delay.
3904
+ *
3905
+ * For more details, see the
3906
+ * [EEN API Documentation](https://developer.eagleeyenetworks.com/reference/getptzsettings).
3907
+ *
3908
+ * @param cameraId - The unique identifier of the PTZ camera
3909
+ * @returns A Result containing the PTZ settings or an error
3910
+ *
3911
+ * @example
3912
+ * ```typescript
3913
+ * import { getPtzSettings } from 'een-api-toolkit'
3914
+ *
3915
+ * const { data, error } = await getPtzSettings('camera-123')
3916
+ * if (data) {
3917
+ * console.log('Mode:', data.mode)
3918
+ * console.log('Presets:', data.presets.length)
3919
+ * console.log('Home:', data.homePreset)
3920
+ * }
3921
+ * ```
3922
+ *
3923
+ * @category PTZ
3924
+ */
3925
+ export declare function getPtzSettings(cameraId: string): Promise<Result<PtzSettings>>;
3926
+
3864
3927
  /**
3865
3928
  * Get a recorded image from a camera.
3866
3929
  *
@@ -6259,6 +6322,39 @@ export declare type MetricActorType = 'bridge' | 'camera' | 'speaker' | 'account
6259
6322
  */
6260
6323
  export declare type MetricDataPoint = [number, number];
6261
6324
 
6325
+ /**
6326
+ * Move a PTZ camera to a new position.
6327
+ *
6328
+ * @remarks
6329
+ * Sends a movement command to a PTZ camera via
6330
+ * `PUT /api/v3.0/cameras/{cameraId}/ptz/position`.
6331
+ * Supports three move types: absolute position, relative direction, and center-on.
6332
+ *
6333
+ * For more details, see the
6334
+ * [EEN API Documentation](https://developer.eagleeyenetworks.com/reference/updateptzposition).
6335
+ *
6336
+ * @param cameraId - The unique identifier of the PTZ camera
6337
+ * @param move - The movement command (position, direction, or centerOn)
6338
+ * @returns A Result containing void on success or an error
6339
+ *
6340
+ * @example
6341
+ * ```typescript
6342
+ * import { movePtz } from 'een-api-toolkit'
6343
+ *
6344
+ * // Move to absolute position
6345
+ * await movePtz('camera-123', { moveType: 'position', x: 0.5, y: -0.3, z: 2.0 })
6346
+ *
6347
+ * // Move in a direction
6348
+ * await movePtz('camera-123', { moveType: 'direction', direction: ['left'], stepSize: 'medium' })
6349
+ *
6350
+ * // Center on a point in the frame
6351
+ * await movePtz('camera-123', { moveType: 'centerOn', relativeX: 0.75, relativeY: 0.5 })
6352
+ * ```
6353
+ *
6354
+ * @category PTZ
6355
+ */
6356
+ export declare function movePtz(cameraId: string, move: PtzMove): Promise<Result<void>>;
6357
+
6262
6358
  /**
6263
6359
  * Notification entity from EEN API v3.0.
6264
6360
  *
@@ -6432,6 +6528,276 @@ export declare interface PlaySpeakerAudioClipSettings {
6432
6528
  volume?: number;
6433
6529
  }
6434
6530
 
6531
+ /**
6532
+ * Center the camera on a point in the current frame.
6533
+ *
6534
+ * @remarks
6535
+ * Uses relative coordinates within the current video frame
6536
+ * to center the camera on a specific point. Useful for click-to-center
6537
+ * functionality in video players.
6538
+ * Both `relativeX` and `relativeY` must be in the range 0.0 to 1.0,
6539
+ * where (0.0, 0.0) is the top-left corner and (1.0, 1.0) is the bottom-right.
6540
+ *
6541
+ * @example
6542
+ * ```typescript
6543
+ * // Center on the middle-right area of the frame
6544
+ * const move: PtzCenterOnMove = {
6545
+ * moveType: 'centerOn',
6546
+ * relativeX: 0.75,
6547
+ * relativeY: 0.5
6548
+ * }
6549
+ * ```
6550
+ *
6551
+ * @category PTZ
6552
+ */
6553
+ export declare interface PtzCenterOnMove {
6554
+ /** Must be 'centerOn' */
6555
+ moveType: 'centerOn';
6556
+ /** Horizontal position in frame (0.0 = left, 1.0 = right) */
6557
+ relativeX: number;
6558
+ /** Vertical position in frame (0.0 = top, 1.0 = bottom) */
6559
+ relativeY: number;
6560
+ }
6561
+
6562
+ /**
6563
+ * Directional movement options for PTZ cameras.
6564
+ *
6565
+ * @category PTZ
6566
+ */
6567
+ export declare type PtzDirection = 'up' | 'down' | 'left' | 'right' | 'in' | 'out';
6568
+
6569
+ /**
6570
+ * Move in a relative direction with optional step size.
6571
+ *
6572
+ * @remarks
6573
+ * Moves the camera in one or more directions relative to its current position.
6574
+ * Multiple directions can be combined (e.g., up + left for diagonal movement).
6575
+ *
6576
+ * @example
6577
+ * ```typescript
6578
+ * const move: PtzDirectionMove = {
6579
+ * moveType: 'direction',
6580
+ * direction: ['up', 'left'],
6581
+ * stepSize: 'medium'
6582
+ * }
6583
+ * ```
6584
+ *
6585
+ * @category PTZ
6586
+ */
6587
+ export declare interface PtzDirectionMove {
6588
+ /** Must be 'direction' */
6589
+ moveType: 'direction';
6590
+ /** One or more directions to move */
6591
+ direction: PtzDirection[];
6592
+ /** Size of each movement step (default: medium) */
6593
+ stepSize?: PtzStepSize;
6594
+ }
6595
+
6596
+ /**
6597
+ * PTZ automation mode.
6598
+ *
6599
+ * @remarks
6600
+ * - `homeReturn` - Camera returns to the home preset after a period of inactivity
6601
+ * - `tour` - Camera cycles through presets automatically
6602
+ * - `manualOnly` - No automatic movement; camera stays where positioned
6603
+ *
6604
+ * @category PTZ
6605
+ */
6606
+ export declare type PtzMode = 'homeReturn' | 'tour' | 'manualOnly';
6607
+
6608
+ /**
6609
+ * Discriminated union of all PTZ move types.
6610
+ *
6611
+ * @remarks
6612
+ * Use the `moveType` field to discriminate between the three movement types.
6613
+ *
6614
+ * @example
6615
+ * ```typescript
6616
+ * import { movePtz, type PtzMove } from 'een-api-toolkit'
6617
+ *
6618
+ * // Position move
6619
+ * await movePtz('camera-id', { moveType: 'position', x: 0.5, y: 0.0, z: 1.0 })
6620
+ *
6621
+ * // Direction move
6622
+ * await movePtz('camera-id', { moveType: 'direction', direction: ['left'], stepSize: 'small' })
6623
+ *
6624
+ * // Center-on move
6625
+ * await movePtz('camera-id', { moveType: 'centerOn', relativeX: 0.5, relativeY: 0.5 })
6626
+ * ```
6627
+ *
6628
+ * @category PTZ
6629
+ */
6630
+ export declare type PtzMove = PtzPositionMove | PtzDirectionMove | PtzCenterOnMove;
6631
+
6632
+ /**
6633
+ * Types of PTZ movement commands.
6634
+ *
6635
+ * @remarks
6636
+ * - `position` - Move to absolute coordinates (x, y, z)
6637
+ * - `direction` - Move in relative directions (up, down, left, right, in, out)
6638
+ * - `centerOn` - Center the camera view on a point in the current frame
6639
+ *
6640
+ * @category PTZ
6641
+ */
6642
+ export declare type PtzMoveType = 'position' | 'direction' | 'centerOn';
6643
+
6644
+ /**
6645
+ * Pan/Tilt/Zoom position coordinates for movement commands.
6646
+ *
6647
+ * @remarks
6648
+ * Used when specifying target positions in movement commands.
6649
+ * Values are optional since you may want to move only one axis at a time.
6650
+ *
6651
+ * @category PTZ
6652
+ */
6653
+ export declare interface PtzPosition {
6654
+ /** Pan position (horizontal rotation) */
6655
+ x?: number;
6656
+ /** Tilt position (vertical rotation) */
6657
+ y?: number;
6658
+ /** Zoom level */
6659
+ z?: number;
6660
+ }
6661
+
6662
+ /**
6663
+ * Move to absolute PTZ coordinates.
6664
+ *
6665
+ * @remarks
6666
+ * Moves the camera to specific x, y, z position values.
6667
+ * At least one coordinate (x, y, or z) should be provided for a meaningful move.
6668
+ *
6669
+ * @example
6670
+ * ```typescript
6671
+ * const move: PtzPositionMove = {
6672
+ * moveType: 'position',
6673
+ * x: 0.5,
6674
+ * y: -0.3,
6675
+ * z: 2.0
6676
+ * }
6677
+ * ```
6678
+ *
6679
+ * @category PTZ
6680
+ */
6681
+ export declare interface PtzPositionMove {
6682
+ /** Must be 'position' */
6683
+ moveType: 'position';
6684
+ /** Target pan position */
6685
+ x?: number;
6686
+ /** Target tilt position */
6687
+ y?: number;
6688
+ /** Target zoom level */
6689
+ z?: number;
6690
+ }
6691
+
6692
+ /**
6693
+ * PTZ position as returned by the API (all fields present).
6694
+ *
6695
+ * @remarks
6696
+ * When reading the current camera position via `getPtzPosition()`, the API
6697
+ * always returns all three coordinates. This type extends `PtzPosition` with
6698
+ * required fields for type safety at response sites.
6699
+ *
6700
+ * @category PTZ
6701
+ */
6702
+ export declare interface PtzPositionResponse {
6703
+ /** Pan position (horizontal rotation) */
6704
+ x: number;
6705
+ /** Tilt position (vertical rotation) */
6706
+ y: number;
6707
+ /** Zoom level */
6708
+ z: number;
6709
+ }
6710
+
6711
+ /**
6712
+ * A saved PTZ preset position.
6713
+ *
6714
+ * @remarks
6715
+ * Presets allow quick navigation to saved camera positions.
6716
+ *
6717
+ * @category PTZ
6718
+ */
6719
+ export declare interface PtzPreset {
6720
+ /** Human-readable name for this preset */
6721
+ name: string;
6722
+ /** The saved position coordinates (always has x, y, z from the API) */
6723
+ position: PtzPositionResponse;
6724
+ /** Time the camera stays at this preset (in seconds) during tour mode */
6725
+ timeAtPreset: number;
6726
+ }
6727
+
6728
+ /**
6729
+ * PTZ camera settings including presets and automation mode.
6730
+ *
6731
+ * @remarks
6732
+ * Contains the full PTZ configuration for a camera: saved presets,
6733
+ * the designated home preset, automation mode, and auto-start delay.
6734
+ *
6735
+ * @example
6736
+ * ```typescript
6737
+ * import { getPtzSettings } from 'een-api-toolkit'
6738
+ *
6739
+ * const { data, error } = await getPtzSettings('camera-id')
6740
+ * if (data) {
6741
+ * console.log('Mode:', data.mode)
6742
+ * console.log('Presets:', data.presets.map(p => p.name))
6743
+ * console.log('Home preset:', data.homePreset)
6744
+ * }
6745
+ * ```
6746
+ *
6747
+ * @category PTZ
6748
+ */
6749
+ export declare interface PtzSettings {
6750
+ /** Array of saved preset positions */
6751
+ presets: PtzPreset[];
6752
+ /** Name of the home preset, or null if none is set */
6753
+ homePreset: string | null;
6754
+ /** Automation mode controlling automatic camera movement */
6755
+ mode: PtzMode;
6756
+ /** Seconds of inactivity before automatic movement begins */
6757
+ autoStartDelay: number;
6758
+ }
6759
+
6760
+ /**
6761
+ * Parameters for updating PTZ settings (all fields optional).
6762
+ *
6763
+ * @remarks
6764
+ * Used with `updatePtzSettings()` to partially update PTZ configuration.
6765
+ * Only provided fields are updated; omitted fields retain their current values.
6766
+ *
6767
+ * @example
6768
+ * ```typescript
6769
+ * import { updatePtzSettings } from 'een-api-toolkit'
6770
+ *
6771
+ * // Change mode only
6772
+ * await updatePtzSettings('camera-id', { mode: 'tour' })
6773
+ *
6774
+ * // Update presets and home preset
6775
+ * await updatePtzSettings('camera-id', {
6776
+ * presets: [{ name: 'Entrance', position: { x: 0, y: 0, z: 1 }, timeAtPreset: 10 }],
6777
+ * homePreset: 'Entrance'
6778
+ * })
6779
+ * ```
6780
+ *
6781
+ * @category PTZ
6782
+ */
6783
+ export declare interface PtzSettingsUpdate {
6784
+ /** Updated array of preset positions */
6785
+ presets?: PtzPreset[];
6786
+ /** Updated home preset name */
6787
+ homePreset?: string | null;
6788
+ /** Updated automation mode */
6789
+ mode?: PtzMode;
6790
+ /** Updated auto-start delay in seconds */
6791
+ autoStartDelay?: number;
6792
+ }
6793
+
6794
+ /**
6795
+ * Step size for directional movements.
6796
+ *
6797
+ * @category PTZ
6798
+ */
6799
+ export declare type PtzStepSize = 'small' | 'medium' | 'large';
6800
+
6435
6801
  /**
6436
6802
  * Result of getting a recorded image.
6437
6803
  *
@@ -6815,6 +7181,40 @@ export declare interface UpdateLayoutParams {
6815
7181
  panes?: LayoutPane[];
6816
7182
  }
6817
7183
 
7184
+ /**
7185
+ * Update PTZ settings for a camera (partial update).
7186
+ *
7187
+ * @remarks
7188
+ * Updates PTZ configuration via `PATCH /api/v3.0/cameras/{cameraId}/ptz/settings`.
7189
+ * Only provided fields are updated; omitted fields retain their current values.
7190
+ *
7191
+ * For more details, see the
7192
+ * [EEN API Documentation](https://developer.eagleeyenetworks.com/reference/updateptzsettings).
7193
+ *
7194
+ * @param cameraId - The unique identifier of the PTZ camera
7195
+ * @param settings - The settings fields to update
7196
+ * @returns A Result containing void on success or an error
7197
+ *
7198
+ * @example
7199
+ * ```typescript
7200
+ * import { updatePtzSettings } from 'een-api-toolkit'
7201
+ *
7202
+ * // Change mode to tour
7203
+ * await updatePtzSettings('camera-123', { mode: 'tour' })
7204
+ *
7205
+ * // Add a preset and set it as home
7206
+ * await updatePtzSettings('camera-123', {
7207
+ * presets: [
7208
+ * { name: 'Entrance', position: { x: 0, y: 0, z: 1 }, timeAtPreset: 10 }
7209
+ * ],
7210
+ * homePreset: 'Entrance'
7211
+ * })
7212
+ * ```
7213
+ *
7214
+ * @category PTZ
7215
+ */
7216
+ export declare function updatePtzSettings(cameraId: string, settings: PtzSettingsUpdate): Promise<Result<void>>;
7217
+
6818
7218
  /**
6819
7219
  * Pinia store for authentication state management
6820
7220
  */