@owine/unifi-protect-mcp 2.7.5 → 2.8.1

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.
@@ -20,7 +20,11 @@ export declare const cameraSchema: import("zod").ZodObject<{
20
20
  supportFullHdSnapshot: import("zod").ZodOptional<import("zod").ZodUnknown>;
21
21
  videoModes: import("zod").ZodOptional<import("zod").ZodUnknown>;
22
22
  }, import("zod/v4/core").$loose>>;
23
- lcdMessage: import("zod").ZodOptional<import("zod").ZodUnknown>;
23
+ lcdMessage: import("zod").ZodOptional<import("zod").ZodObject<{
24
+ type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
25
+ resetAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
26
+ text: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
27
+ }, import("zod/v4/core").$loose>>;
24
28
  ledSettings: import("zod").ZodOptional<import("zod").ZodObject<{
25
29
  isEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
26
30
  floodLed: import("zod").ZodOptional<import("zod").ZodUnknown>;
@@ -60,7 +64,11 @@ export declare const cameraOutputSchema: {
60
64
  supportFullHdSnapshot: import("zod").ZodOptional<import("zod").ZodUnknown>;
61
65
  videoModes: import("zod").ZodOptional<import("zod").ZodUnknown>;
62
66
  }, import("zod/v4/core").$loose>>;
63
- lcdMessage: import("zod").ZodOptional<import("zod").ZodUnknown>;
67
+ lcdMessage: import("zod").ZodOptional<import("zod").ZodObject<{
68
+ type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
69
+ resetAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
70
+ text: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
71
+ }, import("zod/v4/core").$loose>>;
64
72
  ledSettings: import("zod").ZodOptional<import("zod").ZodObject<{
65
73
  isEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
66
74
  floodLed: import("zod").ZodOptional<import("zod").ZodUnknown>;
@@ -101,7 +109,11 @@ export declare const cameraListOutputSchema: {
101
109
  supportFullHdSnapshot: import("zod").ZodOptional<import("zod").ZodUnknown>;
102
110
  videoModes: import("zod").ZodOptional<import("zod").ZodUnknown>;
103
111
  }, import("zod/v4/core").$loose>>;
104
- lcdMessage: import("zod").ZodOptional<import("zod").ZodUnknown>;
112
+ lcdMessage: import("zod").ZodOptional<import("zod").ZodObject<{
113
+ type: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
114
+ resetAt: import("zod").ZodOptional<import("zod").ZodUnknown>;
115
+ text: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
116
+ }, import("zod/v4/core").$loose>>;
105
117
  ledSettings: import("zod").ZodOptional<import("zod").ZodObject<{
106
118
  isEnabled: import("zod").ZodOptional<import("zod").ZodUnknown>;
107
119
  floodLed: import("zod").ZodOptional<import("zod").ZodUnknown>;
@@ -134,4 +146,7 @@ export declare const rtspStreamOutputSchema: {
134
146
  };
135
147
  export declare const talkbackSessionOutputSchema: {
136
148
  url: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
149
+ codec: import("zod").ZodOptional<import("zod").ZodNullable<import("zod").ZodString>>;
150
+ samplingRate: import("zod").ZodOptional<import("zod").ZodUnknown>;
151
+ bitsPerSample: import("zod").ZodOptional<import("zod").ZodUnknown>;
137
152
  };
@@ -3,10 +3,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.talkbackSessionOutputSchema = exports.rtspStreamOutputSchema = exports.rtspStreamSchema = exports.cameraListOutputSchema = exports.cameraOutputSchema = exports.cameraSchema = void 0;
4
4
  const common_js_1 = require("./common.js");
5
5
  /**
6
- * Verified against live UniFi Protect Integration API 7.1.60 (2026-05-15).
6
+ * Verified against live UniFi Protect Integration API 7.1.83 (2026-06-20).
7
7
  * The Integration API camera object is far smaller than the internal Protect
8
8
  * app's camera model — no isRecording/lastMotion/channels/firmwareVersion/etc.
9
- * `list` and `get-by-id` return the same field set.
9
+ * `list` and `get-by-id` return the same field set (confirmed live).
10
10
  */
11
11
  const featureFlagsSchema = (0, common_js_1.passthroughObject)({
12
12
  hasHdr: (0, common_js_1.unknownField)("Supports HDR (boolean)"),
@@ -34,6 +34,13 @@ const smartDetectSettingsSchema = (0, common_js_1.passthroughObject)({
34
34
  objectTypes: (0, common_js_1.unknownField)("Enabled object-detect types (array of strings)"),
35
35
  audioTypes: (0, common_js_1.unknownField)("Enabled audio-detect types (array of strings)"),
36
36
  });
37
+ // Verified live (7.1.83): doorbell LCD message. `resetAt` is null when the
38
+ // message has no expiry, so it stays unknownField (number|null).
39
+ const lcdMessageSchema = (0, common_js_1.passthroughObject)({
40
+ type: (0, common_js_1.nullableString)('Message type, e.g. "CUSTOM_MESSAGE", "LEAVE_PACKAGE_AT_DOOR", "DO_NOT_DISTURB"'),
41
+ resetAt: (0, common_js_1.unknownField)("Auto-reset timestamp in epoch ms, or null (number|null)"),
42
+ text: (0, common_js_1.nullableString)("Message text shown on the doorbell LCD"),
43
+ });
37
44
  exports.cameraSchema = (0, common_js_1.passthroughObject)({
38
45
  id: (0, common_js_1.idField)("Camera ID"),
39
46
  mac: (0, common_js_1.nullableString)("MAC address"),
@@ -47,7 +54,7 @@ exports.cameraSchema = (0, common_js_1.passthroughObject)({
47
54
  micVolume: (0, common_js_1.unknownField)("Microphone volume 0-100 (number)"),
48
55
  videoMode: (0, common_js_1.nullableString)('Video mode, e.g. "default"'),
49
56
  featureFlags: featureFlagsSchema.optional(),
50
- lcdMessage: (0, common_js_1.unknownField)("Doorbell LCD message (object; often empty {})"),
57
+ lcdMessage: lcdMessageSchema.optional(),
51
58
  ledSettings: ledSettingsSchema.optional(),
52
59
  osdSettings: osdSettingsSchema.optional(),
53
60
  smartDetectSettings: smartDetectSettingsSchema.optional(),
@@ -64,6 +71,11 @@ exports.rtspStreamSchema = (0, common_js_1.passthroughObject)({
64
71
  package: (0, common_js_1.nullableString)("RTSPS URL for the package-camera stream"),
65
72
  });
66
73
  exports.rtspStreamOutputSchema = { ...exports.rtspStreamSchema.shape };
74
+ // Verified against 7.1.83 docs: talkback returns the stream URL plus audio
75
+ // config the client needs to encode outbound audio.
67
76
  exports.talkbackSessionOutputSchema = {
68
- url: (0, common_js_1.nullableString)("Talkback session URL"),
77
+ url: (0, common_js_1.nullableString)("Talkback session URL (e.g. rtp://host:port)"),
78
+ codec: (0, common_js_1.nullableString)('Audio codec, e.g. "opus"'),
79
+ samplingRate: (0, common_js_1.unknownField)("Audio sampling rate in Hz (number)"),
80
+ bitsPerSample: (0, common_js_1.unknownField)("Audio bit depth (number)"),
69
81
  };
@@ -2,7 +2,7 @@ import { z } from "zod";
2
2
  /**
3
3
  * Schema primitives for Protect outputSchema declarations.
4
4
  *
5
- * Hard-won rule (verified against live 7.1.60): the UniFi Protect Integration
5
+ * Hard-won rule (verified against live 7.1.83): the UniFi Protect Integration
6
6
  * API returns explicit `null` for absent string fields (e.g. a user with no
7
7
  * email returns `email: null`, not omitted). `z.string().optional()` permits
8
8
  * `undefined` but REJECTS `null`, which fails SDK output validation and breaks
@@ -9,7 +9,7 @@ const zod_1 = require("zod");
9
9
  /**
10
10
  * Schema primitives for Protect outputSchema declarations.
11
11
  *
12
- * Hard-won rule (verified against live 7.1.60): the UniFi Protect Integration
12
+ * Hard-won rule (verified against live 7.1.83): the UniFi Protect Integration
13
13
  * API returns explicit `null` for absent string fields (e.g. a user with no
14
14
  * email returns `email: null`, not omitted). `z.string().optional()` permits
15
15
  * `undefined` but REJECTS `null`, which fails SDK output validation and breaks