@opencx/mcp 1.15.35 → 1.15.36

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=email-tools.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-tools.spec.d.ts","sourceRoot":"","sources":["../src/email-tools.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,149 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { InMemoryTransport } from '@modelcontextprotocol/sdk/inMemory.js';
3
+ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
4
+ import { createServer } from './server.js';
5
+ // `send_email`, from the agent's side of the wire.
6
+ //
7
+ // Regression: the tool used to take `recipients: [{ contact_id }]` and put the
8
+ // contact UUID on the wire as `to_email`, so the API rejected every call with
9
+ // `recipients.0.to_email invalid_format`. The public API addresses recipients
10
+ // by email address (the contact is upserted by email on send) — the tool now
11
+ // carries the same shape verbatim.
12
+ function mockResponse(body, status = 200) {
13
+ return new Response(JSON.stringify(body), { status, statusText: 'OK' });
14
+ }
15
+ function requestUrl(call) {
16
+ const arg = call[0];
17
+ return arg instanceof Request ? arg.url : String(arg);
18
+ }
19
+ async function requestBody(call) {
20
+ const arg = call[0];
21
+ if (arg instanceof Request) {
22
+ const text = await arg.clone().text();
23
+ return text ? JSON.parse(text) : undefined;
24
+ }
25
+ const init = call[1];
26
+ if (typeof init === 'object' &&
27
+ init !== null &&
28
+ 'body' in init &&
29
+ typeof init.body === 'string') {
30
+ return JSON.parse(init.body);
31
+ }
32
+ return undefined;
33
+ }
34
+ describe('email tools', () => {
35
+ let client;
36
+ let cleanup;
37
+ let fetchSpy;
38
+ beforeEach(async () => {
39
+ fetchSpy = vi.fn().mockResolvedValue(mockResponse({ ok: true }));
40
+ vi.stubGlobal('fetch', fetchSpy);
41
+ const server = createServer('test-api-key', 'https://api.test.com');
42
+ const [clientTransport, serverTransport] = InMemoryTransport.createLinkedPair();
43
+ await server.connect(serverTransport);
44
+ client = new Client({ name: 'test-client', version: '1.0.0' });
45
+ await client.connect(clientTransport);
46
+ cleanup = async () => {
47
+ await client.close();
48
+ await server.close();
49
+ };
50
+ });
51
+ afterEach(async () => {
52
+ await cleanup();
53
+ vi.restoreAllMocks();
54
+ });
55
+ const toolNamed = async (name) => {
56
+ const { tools } = await client.listTools();
57
+ return tools.find((t) => t.name === name);
58
+ };
59
+ describe('send_email', () => {
60
+ it('declares recipients by to_email, never by contact_id', async () => {
61
+ const tool = await toolNamed('send_email');
62
+ expect(tool).toBeDefined();
63
+ const recipients = JSON.stringify(tool.inputSchema.properties?.recipients);
64
+ expect(recipients).toContain('"to_email"');
65
+ expect(recipients).not.toContain('"contact_id"');
66
+ });
67
+ it('puts the recipient email address on the wire as to_email', async () => {
68
+ await client.callTool({
69
+ name: 'send_email',
70
+ arguments: {
71
+ from_email: 'reservations@example.com',
72
+ recipients: [{ to_email: 'contact@example.com' }],
73
+ },
74
+ });
75
+ expect(fetchSpy).toHaveBeenCalledTimes(1);
76
+ expect(requestUrl(fetchSpy.mock.calls[0])).toContain('/email');
77
+ const body = await requestBody(fetchSpy.mock.calls[0]);
78
+ expect(body).toMatchObject({
79
+ from_email: 'reservations@example.com',
80
+ recipients: [{ to_email: 'contact@example.com' }],
81
+ });
82
+ });
83
+ it('forwards the per-recipient overrides verbatim alongside the address', async () => {
84
+ await client.callTool({
85
+ name: 'send_email',
86
+ arguments: {
87
+ from_email: 'reservations@example.com',
88
+ recipients: [
89
+ {
90
+ to_email: 'a@example.com',
91
+ email_subject: 'Your booking',
92
+ email_body: 'See you tomorrow',
93
+ email_sender_name: 'Reservations',
94
+ email_is_transactional: true,
95
+ },
96
+ { to_email: 'b@example.com' },
97
+ ],
98
+ delay_in_minutes: 5,
99
+ fallback_email_subject: 'Fallback subject',
100
+ },
101
+ });
102
+ const body = await requestBody(fetchSpy.mock.calls[0]);
103
+ expect(body).toEqual({
104
+ from_email: 'reservations@example.com',
105
+ recipients: [
106
+ {
107
+ to_email: 'a@example.com',
108
+ email_subject: 'Your booking',
109
+ email_body: 'See you tomorrow',
110
+ email_sender_name: 'Reservations',
111
+ email_is_transactional: true,
112
+ },
113
+ { to_email: 'b@example.com' },
114
+ ],
115
+ delay_in_minutes: 5,
116
+ fallback_email_subject: 'Fallback subject',
117
+ });
118
+ });
119
+ it('rejects a recipient that is not an email address before any request is made', async () => {
120
+ // Control for the wire test above: the same call with a contact UUID in
121
+ // the address slot never reaches fetch — the tool's own schema stops it.
122
+ const result = await client.callTool({
123
+ name: 'send_email',
124
+ arguments: {
125
+ from_email: 'reservations@example.com',
126
+ recipients: [{ to_email: 'bd52c727-d079-4a0d-9f51-a755e08b5024' }],
127
+ },
128
+ });
129
+ expect(result.isError).toBe(true);
130
+ expect(fetchSpy).not.toHaveBeenCalled();
131
+ });
132
+ it('tells the agent recipients are email addresses and that domains, not senders, gate it', async () => {
133
+ const tool = await toolNamed('send_email');
134
+ expect(tool.description).toMatch(/email address/i);
135
+ expect(tool.description).toMatch(/list_email_domains/);
136
+ expect(tool.description).not.toMatch(/contact ID to send to/i);
137
+ });
138
+ });
139
+ describe('list_email_senders', () => {
140
+ it('says it lists sequence mailboxes, not the domains send_email needs', async () => {
141
+ // The agent conflated "no senders" with "cannot send": the mailbox list
142
+ // is the sequence fleet; send_email is gated on verified domains.
143
+ const tool = await toolNamed('list_email_senders');
144
+ expect(tool.description).toMatch(/list_email_domains/);
145
+ expect(tool.description).toMatch(/never blocks `send_email`/);
146
+ });
147
+ });
148
+ });
149
+ //# sourceMappingURL=email-tools.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-tools.spec.js","sourceRoot":"","sources":["../src/email-tools.spec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAC1E,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,mDAAmD;AACnD,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,8EAA8E;AAC9E,6EAA6E;AAC7E,mCAAmC;AAEnC,SAAS,YAAY,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG;IAC/C,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAC1E,CAAC;AAED,SAAS,UAAU,CAAC,IAAe;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,OAAO,GAAG,YAAY,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AACxD,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,IAAe;IACxC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,IAAI,GAAG,YAAY,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7C,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IACE,OAAO,IAAI,KAAK,QAAQ;QACxB,IAAI,KAAK,IAAI;QACb,MAAM,IAAI,IAAI;QACd,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,EAC7B,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,IAAI,MAAc,CAAC;IACnB,IAAI,OAA4B,CAAC;IACjC,IAAI,QAAkC,CAAC;IAEvC,UAAU,CAAC,KAAK,IAAI,EAAE;QACpB,QAAQ,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QACjE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAEjC,MAAM,MAAM,GAAG,YAAY,CAAC,cAAc,EAAE,sBAAsB,CAAC,CAAC;QACpE,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,iBAAiB,CAAC,gBAAgB,EAAE,CAAC;QAChF,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtC,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/D,MAAM,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACtC,OAAO,GAAG,KAAK,IAAI,EAAE;YACnB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;YACrB,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,MAAM,OAAO,EAAE,CAAC;QAChB,EAAE,CAAC,eAAe,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;QACvC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAC;QAC3C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5C,CAAC,CAAC;IAEF,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,sDAAsD,EAAE,KAAK,IAAI,EAAE;YACpE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;YAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,IAAK,CAAC,WAAW,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAC5E,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,KAAK,IAAI,EAAE;YACxE,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACpB,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE;oBACT,UAAU,EAAE,0BAA0B;oBACtC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;iBAClD;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,QAAQ,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YAC1C,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,CAAC,aAAa,CAAC;gBACzB,UAAU,EAAE,0BAA0B;gBACtC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,qBAAqB,EAAE,CAAC;aAClD,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;YACnF,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACpB,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE;oBACT,UAAU,EAAE,0BAA0B;oBACtC,UAAU,EAAE;wBACV;4BACE,QAAQ,EAAE,eAAe;4BACzB,aAAa,EAAE,cAAc;4BAC7B,UAAU,EAAE,kBAAkB;4BAC9B,iBAAiB,EAAE,cAAc;4BACjC,sBAAsB,EAAE,IAAI;yBAC7B;wBACD,EAAE,QAAQ,EAAE,eAAe,EAAE;qBAC9B;oBACD,gBAAgB,EAAE,CAAC;oBACnB,sBAAsB,EAAE,kBAAkB;iBAC3C;aACF,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC;YACxD,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;gBACnB,UAAU,EAAE,0BAA0B;gBACtC,UAAU,EAAE;oBACV;wBACE,QAAQ,EAAE,eAAe;wBACzB,aAAa,EAAE,cAAc;wBAC7B,UAAU,EAAE,kBAAkB;wBAC9B,iBAAiB,EAAE,cAAc;wBACjC,sBAAsB,EAAE,IAAI;qBAC7B;oBACD,EAAE,QAAQ,EAAE,eAAe,EAAE;iBAC9B;gBACD,gBAAgB,EAAE,CAAC;gBACnB,sBAAsB,EAAE,kBAAkB;aAC3C,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6EAA6E,EAAE,KAAK,IAAI,EAAE;YAC3F,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;gBACnC,IAAI,EAAE,YAAY;gBAClB,SAAS,EAAE;oBACT,UAAU,EAAE,0BAA0B;oBACtC,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,sCAAsC,EAAE,CAAC;iBACnE;aACF,CAAC,CAAC;YAEH,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uFAAuF,EAAE,KAAK,IAAI,EAAE;YACrG,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACpD,MAAM,CAAC,IAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,CAAC,IAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;QAClC,EAAE,CAAC,oEAAoE,EAAE,KAAK,IAAI,EAAE;YAClF,wEAAwE;YACxE,kEAAkE;YAClE,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,oBAAoB,CAAC,CAAC;YACnD,MAAM,CAAC,IAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;YACxD,MAAM,CAAC,IAAK,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -111,6 +111,51 @@ describe('phone tools', () => {
111
111
  expect(getRequestMethod(call)).toBe('PATCH');
112
112
  expect(await getRequestBody(call)).toEqual({ transfer_destination_ids: [] });
113
113
  });
114
+ it('updates independent instruction and knowledge search allowlists', async () => {
115
+ fetchSpy.mockResolvedValueOnce(mockResponse({
116
+ success: true,
117
+ totalTokens: 0,
118
+ instructionMode: 'selected',
119
+ knowledgeMode: 'selected',
120
+ }));
121
+ await client.callTool({
122
+ name: 'update_phone_agent_knowledge_sources',
123
+ arguments: {
124
+ phone_agent_id: 'agent-1',
125
+ instruction_ids: ['instruction-1'],
126
+ directory_ids: [],
127
+ knowledge_item_ids: ['knowledge-1'],
128
+ knowledge_folder_keys: ['website:help.example.com'],
129
+ },
130
+ });
131
+ const call = fetchSpy.mock.calls[0];
132
+ expect(getRequestUrl(call)).toBe('https://api.test.com/phone/agent-1/knowledge-sources');
133
+ expect(getRequestMethod(call)).toBe('PUT');
134
+ expect(await getRequestBody(call)).toEqual({
135
+ instructionIds: ['instruction-1'],
136
+ directoryIds: [],
137
+ knowledgeItemIds: ['knowledge-1'],
138
+ knowledgeFolderKeys: ['website:help.example.com'],
139
+ });
140
+ });
141
+ it('omits knowledge allowlists for legacy-compatible instruction-only updates', async () => {
142
+ fetchSpy.mockResolvedValueOnce(mockResponse({
143
+ success: true,
144
+ totalTokens: 0,
145
+ instructionMode: 'all',
146
+ knowledgeMode: 'selected',
147
+ }));
148
+ await client.callTool({
149
+ name: 'update_phone_agent_knowledge_sources',
150
+ arguments: {
151
+ phone_agent_id: 'agent-1',
152
+ instruction_ids: [],
153
+ directory_ids: [],
154
+ },
155
+ });
156
+ const call = fetchSpy.mock.calls[0];
157
+ expect(await getRequestBody(call)).toEqual({ instructionIds: [], directoryIds: [] });
158
+ });
114
159
  it('make_outbound_call maps session_custom_data / extra_instructions onto the API body', async () => {
115
160
  fetchSpy.mockResolvedValueOnce(mockResponse({ sessionId: 's-1', callId: 'c-1' }));
116
161
  const result = await client.callTool({
@@ -1 +1 @@
1
- {"version":3,"file":"phone-tools.spec.js","sourceRoot":"","sources":["../src/phone-tools.spec.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"phone-tools.spec.js","sourceRoot":"","sources":["../src/phone-tools.spec.ts"],"names":[],"mappings":"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"}
package/dist/schema.d.ts CHANGED
@@ -599,6 +599,30 @@ export interface paths {
599
599
  patch?: never;
600
600
  trace?: never;
601
601
  };
602
+ "/chat/sessions/{session_id}/structured-field-values": {
603
+ parameters: {
604
+ query?: never;
605
+ header?: never;
606
+ path?: never;
607
+ cookie?: never;
608
+ };
609
+ /**
610
+ * Get session structured field values
611
+ * @description Returns the Structured Field values recorded on a session, plus `applicable_field_ids`: the fields that currently apply to it once every "show when" rule is resolved. A field missing from that list is hidden for this session: it holds no value and rejects writes until its parent field matches.
612
+ */
613
+ get: operations["getSessionStructuredFieldValues"];
614
+ /**
615
+ * Set session structured field values
616
+ * @description Upserts Structured Field values on a session; `null` clears a field. Every value is validated against its live field definition (an enum leaf choice, a user/team/tag of the organization, or a typed scalar), and a bad entry rejects the whole batch. A value on a field whose "show when" rule is unmet after the batch is rejected with 400; set the parent field in the same batch instead. Values whose field stops applying because a parent changed are cleared automatically. Returns the full current list with `applicable_field_ids`.
617
+ */
618
+ put: operations["setSessionStructuredFieldValues"];
619
+ post?: never;
620
+ delete?: never;
621
+ options?: never;
622
+ head?: never;
623
+ patch?: never;
624
+ trace?: never;
625
+ };
602
626
  "/chat/sessions/investigate-debug": {
603
627
  parameters: {
604
628
  query?: never;
@@ -6244,15 +6268,22 @@ export interface components {
6244
6268
  PhoneHandoffReason: "ai_initiated" | "no_agent_assigned" | "agent_unavailable" | "caller_requested" | "timeout" | "unknown";
6245
6269
  /** @enum {string} */
6246
6270
  StructuredFieldTypeDto: "enum" | "text" | "number" | "boolean" | "date" | "user" | "team" | "tag";
6271
+ StructuredFieldShowWhenDto: {
6272
+ /** Format: uuid */
6273
+ field_id: string;
6274
+ values: string[];
6275
+ };
6247
6276
  CreateStructuredFieldDto: {
6248
6277
  key: string;
6249
6278
  name: string;
6250
6279
  description: string;
6251
6280
  type?: components["schemas"]["StructuredFieldTypeDto"];
6281
+ show_when?: components["schemas"]["StructuredFieldShowWhenDto"] | null;
6252
6282
  };
6253
6283
  UpdateStructuredFieldDto: {
6254
6284
  name?: string;
6255
6285
  description?: string;
6286
+ show_when?: components["schemas"]["StructuredFieldShowWhenDto"] | null;
6256
6287
  };
6257
6288
  CreateStructuredFieldVariantDto: {
6258
6289
  value: string;
@@ -6265,6 +6296,14 @@ export interface components {
6265
6296
  variant_description?: string;
6266
6297
  parent_id?: string | null;
6267
6298
  };
6299
+ SessionStructuredFieldValueInputDto: {
6300
+ /** Format: uuid */
6301
+ field_id: string;
6302
+ value: string | null;
6303
+ };
6304
+ SetSessionStructuredFieldValuesDto: {
6305
+ values: components["schemas"]["SessionStructuredFieldValueInputDto"][];
6306
+ };
6268
6307
  CompanyOwnerInput: {
6269
6308
  /** @description OpenCX user id of the owning teammate */
6270
6309
  id?: number;
@@ -9462,10 +9501,27 @@ export interface components {
9462
9501
  created_at: string;
9463
9502
  /** Format: date-time */
9464
9503
  updated_at: string;
9504
+ show_when_field_id: string | null;
9505
+ show_when_values: string[] | null;
9465
9506
  variants: components["schemas"]["StructuredFieldVariantTreeDto"][];
9466
9507
  system_options: components["schemas"]["StructuredFieldSystemOptionDto"][];
9467
9508
  };
9468
9509
  StructuredFieldListDto: components["schemas"]["StructuredFieldTreeDto"][];
9510
+ SessionStructuredFieldValueDto: {
9511
+ org_id: string;
9512
+ session_id: string;
9513
+ /** Format: uuid */
9514
+ field_id: string;
9515
+ value: string;
9516
+ /** Format: date-time */
9517
+ created_at: string;
9518
+ /** Format: date-time */
9519
+ updated_at: string;
9520
+ };
9521
+ SessionStructuredFieldValueListDto: {
9522
+ data: components["schemas"]["SessionStructuredFieldValueDto"][];
9523
+ applicable_field_ids: string[];
9524
+ };
9469
9525
  GenericResponseDto: {
9470
9526
  data?: {
9471
9527
  success: boolean;
@@ -13086,6 +13142,15 @@ export interface components {
13086
13142
  has_previous_page: boolean;
13087
13143
  };
13088
13144
  };
13145
+ CsatScoreAgent: {
13146
+ id: number;
13147
+ name: string | null;
13148
+ avatar_url: string | null;
13149
+ };
13150
+ CsatScoreTeam: {
13151
+ id: string;
13152
+ name: string | null;
13153
+ };
13089
13154
  CsatScorePublic: {
13090
13155
  id: string;
13091
13156
  organization_id: string;
@@ -13098,6 +13163,10 @@ export interface components {
13098
13163
  /** Format: date-time */
13099
13164
  updated_at: string;
13100
13165
  contact: components["schemas"]["Contact"] | null;
13166
+ /** @description The agent this score is attributed to: the session assignee at the moment the customer submitted it. Fixed at submit time, so reassigning the session afterwards never moves the rating. Null when the session was unassigned. */
13167
+ agent: components["schemas"]["CsatScoreAgent"] | null;
13168
+ /** @description The team this score is attributed to, captured at the moment the customer submitted it. Fixed at submit time, so moving the session between teams afterwards never moves the rating. Null when the session belonged to no team. */
13169
+ team: components["schemas"]["CsatScoreTeam"] | null;
13101
13170
  };
13102
13171
  CsatScorePublicResponseDto: components["schemas"]["CsatScorePublic"] | null;
13103
13172
  PaginatedCsatScoresPublicResponseDto: {
@@ -15628,6 +15697,74 @@ export interface operations {
15628
15697
  };
15629
15698
  };
15630
15699
  };
15700
+ getSessionStructuredFieldValues: {
15701
+ parameters: {
15702
+ query?: never;
15703
+ header?: never;
15704
+ path: {
15705
+ /** @description The unique identifier of the chat session */
15706
+ session_id: string;
15707
+ };
15708
+ cookie?: never;
15709
+ };
15710
+ requestBody?: never;
15711
+ responses: {
15712
+ /** @description Default Response */
15713
+ 200: {
15714
+ headers: {
15715
+ [name: string]: unknown;
15716
+ };
15717
+ content: {
15718
+ "application/json": components["schemas"]["SessionStructuredFieldValueListDto"];
15719
+ };
15720
+ };
15721
+ /** @description Internal Server Error */
15722
+ 500: {
15723
+ headers: {
15724
+ [name: string]: unknown;
15725
+ };
15726
+ content: {
15727
+ "application/json": components["schemas"]["ErrorDto"];
15728
+ };
15729
+ };
15730
+ };
15731
+ };
15732
+ setSessionStructuredFieldValues: {
15733
+ parameters: {
15734
+ query?: never;
15735
+ header?: never;
15736
+ path: {
15737
+ /** @description The unique identifier of the chat session */
15738
+ session_id: string;
15739
+ };
15740
+ cookie?: never;
15741
+ };
15742
+ requestBody: {
15743
+ content: {
15744
+ "application/json": components["schemas"]["SetSessionStructuredFieldValuesDto"];
15745
+ };
15746
+ };
15747
+ responses: {
15748
+ /** @description Default Response */
15749
+ 200: {
15750
+ headers: {
15751
+ [name: string]: unknown;
15752
+ };
15753
+ content: {
15754
+ "application/json": components["schemas"]["SessionStructuredFieldValueListDto"];
15755
+ };
15756
+ };
15757
+ /** @description Internal Server Error */
15758
+ 500: {
15759
+ headers: {
15760
+ [name: string]: unknown;
15761
+ };
15762
+ content: {
15763
+ "application/json": components["schemas"]["ErrorDto"];
15764
+ };
15765
+ };
15766
+ };
15767
+ };
15631
15768
  investigateSessionDebug: {
15632
15769
  parameters: {
15633
15770
  query?: never;