@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.
- package/dist/email-tools.spec.d.ts +2 -0
- package/dist/email-tools.spec.d.ts.map +1 -0
- package/dist/email-tools.spec.js +149 -0
- package/dist/email-tools.spec.js.map +1 -0
- package/dist/phone-tools.spec.js +45 -0
- package/dist/phone-tools.spec.js.map +1 -1
- package/dist/schema.d.ts +137 -0
- package/dist/schema.d.ts.map +1 -1
- package/dist/tools/campaign-channel.d.ts.map +1 -1
- package/dist/tools/campaign-channel.js +3 -1
- package/dist/tools/campaign-channel.js.map +1 -1
- package/dist/tools/conversation-sankey.d.ts.map +1 -1
- package/dist/tools/conversation-sankey.js +5 -2
- package/dist/tools/conversation-sankey.js.map +1 -1
- package/dist/tools/csat.d.ts.map +1 -1
- package/dist/tools/csat.js +3 -3
- package/dist/tools/csat.js.map +1 -1
- package/dist/tools/email.d.ts.map +1 -1
- package/dist/tools/email.js +20 -6
- package/dist/tools/email.js.map +1 -1
- package/dist/tools/impact-report.d.ts.map +1 -1
- package/dist/tools/impact-report.js +1 -1
- package/dist/tools/impact-report.js.map +1 -1
- package/dist/tools/phone.d.ts.map +1 -1
- package/dist/tools/phone.js +15 -3
- package/dist/tools/phone.js.map +1 -1
- package/dist/tools/sessions.d.ts.map +1 -1
- package/dist/tools/sessions.js +32 -2
- package/dist/tools/sessions.js.map +1 -1
- package/dist/tools/structured-fields.d.ts.map +1 -1
- package/dist/tools/structured-fields.js +17 -2
- package/dist/tools/structured-fields.js.map +1 -1
- package/package.json +1 -1
|
@@ -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":"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"}
|
package/dist/phone-tools.spec.js
CHANGED
|
@@ -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;
|