@roarkanalytics/sdk-mcp 4.44.0 → 5.0.0

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.
@@ -187,11 +187,12 @@ const EMBEDDED_METHODS = [
187
187
  endpoint: '/v1/call',
188
188
  httpMethod: 'get',
189
189
  summary: 'List calls',
190
- description: 'Returns a paginated list of calls for the authenticated project.',
190
+ description: 'Returns a paginated list of calls for the authenticated project. Pass agentId to keep calls for specific agents, or properties[agent_name][eq] when you only have the agent name. sortBy and sortDirection apply together with those filters.',
191
191
  stainlessPath: '(resource) call > (method) list',
192
192
  qualified: 'client.call.list',
193
193
  params: [
194
194
  'after?: string;',
195
+ 'agentId?: string;',
195
196
  "countedInResults?: 'true' | 'false';",
196
197
  "excludeHiddenRuns?: 'true' | 'false';",
197
198
  'limit?: number;',
@@ -205,7 +206,7 @@ const EMBEDDED_METHODS = [
205
206
  "status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED';",
206
207
  ],
207
208
  response: "{ data: { id: string; callDirection: 'INBOUND' | 'OUTBOUND'; projectId: string; recordingUrlAccess: 'AVAILABLE' | 'NOT_AVAILABLE' | 'RESTRICTED'; startedAt: string; agents?: { id: string; agentVersionId?: string; endpoint?: object; }[]; createdAt?: string; customers?: { label?: string; phoneNumberE164?: string; }[]; durationMs?: number; endedAt?: string; endedStatus?: string; externalId?: string; policyIds?: string[]; properties?: object; recordingUrl?: string; simulationJobId?: string; status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'; summary?: string; supersededByCallId?: string; title?: string; updatedAt?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }",
208
- markdown: "## list\n\n`client.call.list(after?: string, countedInResults?: 'true' | 'false', excludeHiddenRuns?: 'true' | 'false', limit?: number, properties?: object, searchText?: string, simulationRunPlanIds?: string, simulationRunPlanJobId?: string, simulationRunPlanJobIds?: string, sortBy?: 'createdAt' | 'startedAt' | 'endedAt' | 'duration' | 'title' | 'status', sortDirection?: 'asc' | 'desc', status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'): { data: object[]; pagination: object; }`\n\n**get** `/v1/call`\n\nReturns a paginated list of calls for the authenticated project.\n\n### Parameters\n\n- `after?: string`\n Cursor for pagination - use the nextCursor value from a previous response\n\n- `countedInResults?: 'true' | 'false'`\n true: only simulated calls their run's results count (not invalidated, for example because the agent never spoke). false: only the simulated calls the results leave out, each invalidated. Live calls, and calls removed from their run, match neither.\n\n- `excludeHiddenRuns?: 'true' | 'false'`\n true: leave out calls from runs hidden from the runs list. Live calls stay in. false is the same as leaving it out.\n\n- `limit?: number`\n Maximum number of calls to return (default: 20, max: 100)\n\n- `properties?: object`\n Filter on custom properties, one entry per property name: properties[<name>][exists]=true keeps calls that have the property set (whatever the value), properties[<name>][exists]=false keeps calls missing it (never sent, sent as null, or removed). A property the project has never seen is missing on every call. Names match the way properties are stored, so planTier and plan_tier are one property. At most 20 properties; a name taken by a built-in call filter, such as status, is rejected with 400.\n\n- `searchText?: string`\n Search text to filter calls by title, summary, or transcript\n\n- `simulationRunPlanIds?: string`\n Calls from every run of any of these run plans, comma-separated, at most 100\n\n- `simulationRunPlanJobId?: string`\n Filter by simulation run plan job ID to get all calls from a specific simulation batch\n\n- `simulationRunPlanJobIds?: string`\n Calls from any of these simulation runs (run plan job ids), comma-separated, at most 100\n\n- `sortBy?: 'createdAt' | 'startedAt' | 'endedAt' | 'duration' | 'title' | 'status'`\n Field to sort by (default: createdAt)\n\n- `sortDirection?: 'asc' | 'desc'`\n Sort direction (default: desc)\n\n- `status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'`\n Filter by call status\n\n### Returns\n\n- `{ data: { id: string; callDirection: 'INBOUND' | 'OUTBOUND'; projectId: string; recordingUrlAccess: 'AVAILABLE' | 'NOT_AVAILABLE' | 'RESTRICTED'; startedAt: string; agents?: { id: string; agentVersionId?: string; endpoint?: object; }[]; createdAt?: string; customers?: { label?: string; phoneNumberE164?: string; }[]; durationMs?: number; endedAt?: string; endedStatus?: string; externalId?: string; policyIds?: string[]; properties?: object; recordingUrl?: string; simulationJobId?: string; status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'; summary?: string; supersededByCallId?: string; title?: string; updatedAt?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n\n - `data: { id: string; callDirection: 'INBOUND' | 'OUTBOUND'; projectId: string; recordingUrlAccess: 'AVAILABLE' | 'NOT_AVAILABLE' | 'RESTRICTED'; startedAt: string; agents?: { id: string; agentVersionId?: string; endpoint?: { id: string; environment: string; phoneNumberE164?: string; }; }[]; createdAt?: string; customers?: { label?: string; phoneNumberE164?: string; }[]; durationMs?: number; endedAt?: string; endedStatus?: string; externalId?: string; policyIds?: string[]; properties?: object; recordingUrl?: string; simulationJobId?: string; status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'; summary?: string; supersededByCallId?: string; title?: string; updatedAt?: string; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst calls = await client.call.list();\n\nconsole.log(calls);\n```",
209
+ markdown: "## list\n\n`client.call.list(after?: string, agentId?: string, countedInResults?: 'true' | 'false', excludeHiddenRuns?: 'true' | 'false', limit?: number, properties?: object, searchText?: string, simulationRunPlanIds?: string, simulationRunPlanJobId?: string, simulationRunPlanJobIds?: string, sortBy?: 'createdAt' | 'startedAt' | 'endedAt' | 'duration' | 'title' | 'status', sortDirection?: 'asc' | 'desc', status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'): { data: object[]; pagination: object; }`\n\n**get** `/v1/call`\n\nReturns a paginated list of calls for the authenticated project. Pass agentId to keep calls for specific agents, or properties[agent_name][eq] when you only have the agent name. sortBy and sortDirection apply together with those filters.\n\n### Parameters\n\n- `after?: string`\n Cursor for pagination - use the nextCursor value from a previous response\n\n- `agentId?: string`\n Calls that include any of these agents. One id, or several separated by commas, at most 100. A call with more than one agent matches when any of them is listed. An id that is not an agent on a call in this project matches nothing. Combines with the other filters, including sortBy and sortDirection.\n\n- `countedInResults?: 'true' | 'false'`\n true: only simulated calls their run's results count (not invalidated, for example because the agent never spoke). false: only the simulated calls the results leave out, each invalidated. Live calls, and calls removed from their run, match neither.\n\n- `excludeHiddenRuns?: 'true' | 'false'`\n true: leave out calls from runs hidden from the runs list. Live calls stay in. false is the same as leaving it out.\n\n- `limit?: number`\n Maximum number of calls to return (default: 20, max: 100)\n\n- `properties?: object`\n Filter on properties, one entry per property name. properties[<name>][exists]=true keeps calls that have the property set (whatever the value), properties[<name>][exists]=false keeps calls missing it (never sent, sent as null, or removed). properties[<name>][eq]=<value> keeps calls whose value equals it, ignoring case. agent_name and agent_id are built in and read the agents linked to the call, not a stored snapshot: agent_name matches an agent name, agent_id matches an agent id (a UUID). A call with several agents matches when any of them does. A custom property the project has never stored matches no calls under eq. Names match the way properties are stored, so planTier and plan_tier are one property, and agentName is agent_name. At most 20 properties. A name taken by a built-in call filter, such as status, is rejected with 400. One operator per property.\n\n- `searchText?: string`\n Search text to filter calls by title, summary, or transcript\n\n- `simulationRunPlanIds?: string`\n Calls from every run of any of these run plans, comma-separated, at most 100\n\n- `simulationRunPlanJobId?: string`\n Filter by simulation run plan job ID to get all calls from a specific simulation batch\n\n- `simulationRunPlanJobIds?: string`\n Calls from any of these simulation runs (run plan job ids), comma-separated, at most 100\n\n- `sortBy?: 'createdAt' | 'startedAt' | 'endedAt' | 'duration' | 'title' | 'status'`\n Field to sort by (default: createdAt)\n\n- `sortDirection?: 'asc' | 'desc'`\n Sort direction (default: desc)\n\n- `status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'`\n Filter by call status\n\n### Returns\n\n- `{ data: { id: string; callDirection: 'INBOUND' | 'OUTBOUND'; projectId: string; recordingUrlAccess: 'AVAILABLE' | 'NOT_AVAILABLE' | 'RESTRICTED'; startedAt: string; agents?: { id: string; agentVersionId?: string; endpoint?: object; }[]; createdAt?: string; customers?: { label?: string; phoneNumberE164?: string; }[]; durationMs?: number; endedAt?: string; endedStatus?: string; externalId?: string; policyIds?: string[]; properties?: object; recordingUrl?: string; simulationJobId?: string; status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'; summary?: string; supersededByCallId?: string; title?: string; updatedAt?: string; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n\n - `data: { id: string; callDirection: 'INBOUND' | 'OUTBOUND'; projectId: string; recordingUrlAccess: 'AVAILABLE' | 'NOT_AVAILABLE' | 'RESTRICTED'; startedAt: string; agents?: { id: string; agentVersionId?: string; endpoint?: { id: string; environment: string; phoneNumberE164?: string; }; }[]; createdAt?: string; customers?: { label?: string; phoneNumberE164?: string; }[]; durationMs?: number; endedAt?: string; endedStatus?: string; externalId?: string; policyIds?: string[]; properties?: object; recordingUrl?: string; simulationJobId?: string; status?: 'RINGING' | 'IN_PROGRESS' | 'ENDED'; summary?: string; supersededByCallId?: string; title?: string; updatedAt?: string; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst calls = await client.call.list();\n\nconsole.log(calls);\n```",
209
210
  perLanguage: {
210
211
  typescript: {
211
212
  method: 'client.call.list',
@@ -3303,11 +3304,13 @@ const EMBEDDED_METHODS = [
3303
3304
  params: [
3304
3305
  'jobDescription: string;',
3305
3306
  'name: string;',
3306
- "tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; };",
3307
+ "llm?: { model: string; provider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; };",
3308
+ "stt?: { model: string; provider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; };",
3309
+ "tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; model?: string; };",
3307
3310
  'voice?: string;',
3308
3311
  ],
3309
3312
  response: '{ data: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }; }',
3310
- markdown: "## build\n\n`client.agent.build(jobDescription: string, name: string, tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; }, voice?: string): { data: object; }`\n\n**post** `/v1/agent/build`\n\nCreates a new Roark-hosted agent from a one-line job description. Roark authors the system prompt and hosts the config, so the agent is live and self-improvable from creation.\n\n### Parameters\n\n- `jobDescription: string`\n One-line description of what the agent should do. Roark authors the system prompt from this.\n\n- `name: string`\n Name of the agent\n\n- `tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; }`\n Optional provider voice the hosted agent speaks with\n\n- `voice?: string`\n Optional display name of the agent's voice. The authored prompt matches its delivery to it.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }; }`\n\n - `data: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agent.build({ jobDescription: 'x', name: 'x' });\n\nconsole.log(response);\n```",
3313
+ markdown: "## build\n\n`client.agent.build(jobDescription: string, name: string, llm?: { model: string; provider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; }, stt?: { model: string; provider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; }, tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; model?: string; }, voice?: string): { data: object; }`\n\n**post** `/v1/agent/build`\n\nCreates a new Roark-hosted agent from a one-line job description. Roark authors the system prompt and hosts the config, so the agent is live and self-improvable from creation.\n\n### Parameters\n\n- `jobDescription: string`\n One-line description of what the agent should do. Roark authors the system prompt from this.\n\n- `name: string`\n Name of the agent\n\n- `llm?: { model: string; provider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; }`\n Optional text model the hosted agent thinks with. Roark's default when omitted\n\n- `stt?: { model: string; provider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; }`\n Optional transcriber the hosted agent hears with. Roark's default when omitted\n\n- `tts?: { provider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; voiceId: string; model?: string; }`\n Optional provider voice the hosted agent speaks with\n\n- `voice?: string`\n Optional display name of the agent's voice. The authored prompt matches its delivery to it.\n\n### Returns\n\n- `{ data: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }; }`\n\n - `data: { id: string; createdAt: string; customId: string; description: string; name: string; updatedAt: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agent.build({ jobDescription: 'x', name: 'x' });\n\nconsole.log(response);\n```",
3311
3314
  perLanguage: {
3312
3315
  typescript: {
3313
3316
  method: 'client.agent.build',
@@ -3706,8 +3709,8 @@ const EMBEDDED_METHODS = [
3706
3709
  stainlessPath: '(resource) agentVersion > (method) list',
3707
3710
  qualified: 'client.agentVersion.list',
3708
3711
  params: ['agentId: string;', 'after?: string;', 'limit?: number;'],
3709
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }",
3710
- markdown: "## list\n\n`client.agentVersion.list(agentId: string, after?: string, limit?: number): { data: object[]; pagination: object; }`\n\n**get** `/v1/agent/{agentId}/versions`\n\nThe open draft first, if there is one, then published versions newest first. Paginated: pass `pagination.nextCursor` as `after` for the next page.\n\n### Parameters\n\n- `agentId: string`\n\n- `after?: string`\n\n- `limit?: number`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentVersions = await client.agentVersion.list('agentId');\n\nconsole.log(agentVersions);\n```",
3712
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }",
3713
+ markdown: "## list\n\n`client.agentVersion.list(agentId: string, after?: string, limit?: number): { data: object[]; pagination: object; }`\n\n**get** `/v1/agent/{agentId}/versions`\n\nThe open draft first, if there is one, then published versions newest first. Paginated: pass `pagination.nextCursor` as `after` for the next page.\n\n### Parameters\n\n- `agentId: string`\n\n- `after?: string`\n\n- `limit?: number`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]; pagination: { hasMore: boolean; nextCursor: string; total: number; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }[]`\n - `pagination: { hasMore: boolean; nextCursor: string; total: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentVersions = await client.agentVersion.list('agentId');\n\nconsole.log(agentVersions);\n```",
3711
3714
  perLanguage: {
3712
3715
  typescript: {
3713
3716
  method: 'client.agentVersion.list',
@@ -3731,8 +3734,8 @@ const EMBEDDED_METHODS = [
3731
3734
  stainlessPath: '(resource) agentVersion > (method) getById',
3732
3735
  qualified: 'client.agentVersion.getByID',
3733
3736
  params: ['agentId: string;', 'versionId: string;'],
3734
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3735
- markdown: "## getById\n\n`client.agentVersion.getByID(agentId: string, versionId: string): { data: object; }`\n\n**get** `/v1/agent/{agentId}/versions/{versionId}`\n\nOne version with every setting, plus the issues that stop it from running, if any.\n\n### Parameters\n\n- `agentId: string`\n\n- `versionId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentVersion.getByID('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response);\n```",
3737
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3738
+ markdown: "## getById\n\n`client.agentVersion.getByID(agentId: string, versionId: string): { data: object; }`\n\n**get** `/v1/agent/{agentId}/versions/{versionId}`\n\nOne version with every setting, plus the issues that stop it from running, if any.\n\n### Parameters\n\n- `agentId: string`\n\n- `versionId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentVersion.getByID('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response);\n```",
3736
3739
  perLanguage: {
3737
3740
  typescript: {
3738
3741
  method: 'client.agentVersion.getByID',
@@ -3748,32 +3751,32 @@ const EMBEDDED_METHODS = [
3748
3751
  },
3749
3752
  },
3750
3753
  {
3751
- name: 'restore',
3752
- endpoint: '/v1/agent/{agentId}/versions/{versionId}/restore',
3754
+ name: 'rollback',
3755
+ endpoint: '/v1/agent/{agentId}/versions/{versionId}/rollback',
3753
3756
  httpMethod: 'post',
3754
- summary: 'Restore an agent version',
3755
- description: "Roll back: publishes a new version, numbered after the latest, with this version's settings and makes it live. History stays append-only. An open draft started before this is kept but can no longer be published (409 `agent_draft_base_changed`); discard it or start a new one. Pass `expectedLiveVersionId` to be refused (409 `agent_live_version_changed`) if another version went live since you read it.",
3756
- stainlessPath: '(resource) agentVersion > (method) restore',
3757
- qualified: 'client.agentVersion.restore',
3757
+ summary: 'Roll an agent back to a version',
3758
+ description: "Publishes a new version, numbered after the latest, with this version's settings and makes it live. History stays append-only. An open draft started before this is kept but can no longer be published (409 `agent_draft_base_changed`); discard it or start a new one. Pass `expectedLiveVersionId` to be refused (409 `agent_live_version_changed`) if another version went live since you read it.",
3759
+ stainlessPath: '(resource) agentVersion > (method) rollback',
3760
+ qualified: 'client.agentVersion.rollback',
3758
3761
  params: [
3759
3762
  'agentId: string;',
3760
3763
  'versionId: string;',
3761
3764
  'expectedLiveVersionId?: string;',
3762
3765
  'summary?: string;',
3763
3766
  ],
3764
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3765
- markdown: "## restore\n\n`client.agentVersion.restore(agentId: string, versionId: string, expectedLiveVersionId?: string, summary?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/versions/{versionId}/restore`\n\nRoll back: publishes a new version, numbered after the latest, with this version's settings and makes it live. History stays append-only. An open draft started before this is kept but can no longer be published (409 `agent_draft_base_changed`); discard it or start a new one. Pass `expectedLiveVersionId` to be refused (409 `agent_live_version_changed`) if another version went live since you read it.\n\n### Parameters\n\n- `agentId: string`\n\n- `versionId: string`\n\n- `expectedLiveVersionId?: string`\n The live version when you decided to restore. When sent, the restore is refused with 409 if another version went live since.\n\n- `summary?: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentVersion.restore('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response);\n```",
3767
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3768
+ markdown: "## rollback\n\n`client.agentVersion.rollback(agentId: string, versionId: string, expectedLiveVersionId?: string, summary?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/versions/{versionId}/rollback`\n\nPublishes a new version, numbered after the latest, with this version's settings and makes it live. History stays append-only. An open draft started before this is kept but can no longer be published (409 `agent_draft_base_changed`); discard it or start a new one. Pass `expectedLiveVersionId` to be refused (409 `agent_live_version_changed`) if another version went live since you read it.\n\n### Parameters\n\n- `agentId: string`\n\n- `versionId: string`\n\n- `expectedLiveVersionId?: string`\n The live version when you decided to roll back. When sent, the rollback is refused with 409 if another version went live since.\n\n- `summary?: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentVersion.rollback('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response);\n```",
3766
3769
  perLanguage: {
3767
3770
  typescript: {
3768
- method: 'client.agentVersion.restore',
3769
- example: "import Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark({\n bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted\n});\n\nconst response = await client.agentVersion.restore('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response.data);",
3771
+ method: 'client.agentVersion.rollback',
3772
+ example: "import Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark({\n bearerToken: process.env['ROARK_API_BEARER_TOKEN'], // This is the default and can be omitted\n});\n\nconst response = await client.agentVersion.rollback('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n agentId: '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',\n});\n\nconsole.log(response.data);",
3770
3773
  },
3771
3774
  python: {
3772
- method: 'agent_version.restore',
3773
- example: 'import os\nfrom roark_analytics import Roark\n\nclient = Roark(\n bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"), # This is the default and can be omitted\n)\nresponse = client.agent_version.restore(\n version_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n agent_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n)\nprint(response.data)',
3775
+ method: 'agent_version.rollback',
3776
+ example: 'import os\nfrom roark_analytics import Roark\n\nclient = Roark(\n bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"), # This is the default and can be omitted\n)\nresponse = client.agent_version.rollback(\n version_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n agent_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n)\nprint(response.data)',
3774
3777
  },
3775
3778
  http: {
3776
- example: 'curl https://api.roark.ai/v1/agent/$AGENT_ID/versions/$VERSION_ID/restore \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3779
+ example: 'curl https://api.roark.ai/v1/agent/$AGENT_ID/versions/$VERSION_ID/rollback \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3777
3780
  },
3778
3781
  },
3779
3782
  },
@@ -3786,8 +3789,8 @@ const EMBEDDED_METHODS = [
3786
3789
  stainlessPath: '(resource) agentDraft > (method) get',
3787
3790
  qualified: 'client.agentDraft.get',
3788
3791
  params: ['agentId: string;'],
3789
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3790
- markdown: "## get\n\n`client.agentDraft.get(agentId: string): { data: object; }`\n\n**get** `/v1/agent/{agentId}/draft`\n\nThe agent's open draft, with the issues that would stop it from being published.\n\n### Parameters\n\n- `agentId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.get('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3792
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3793
+ markdown: "## get\n\n`client.agentDraft.get(agentId: string): { data: object; }`\n\n**get** `/v1/agent/{agentId}/draft`\n\nThe agent's open draft, with the issues that would stop it from being published.\n\n### Parameters\n\n- `agentId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.get('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3791
3794
  perLanguage: {
3792
3795
  typescript: {
3793
3796
  method: 'client.agentDraft.get',
@@ -3811,8 +3814,8 @@ const EMBEDDED_METHODS = [
3811
3814
  stainlessPath: '(resource) agentDraft > (method) create',
3812
3815
  qualified: 'client.agentDraft.create',
3813
3816
  params: ['agentId: string;', 'fromVersionId?: string;'],
3814
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3815
- markdown: "## create\n\n`client.agentDraft.create(agentId: string, fromVersionId?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/draft`\n\nOpens the agent's one shared draft, a copy of the live version or of an older published version. Fails with 409 when a draft is already open.\n\n### Parameters\n\n- `agentId: string`\n\n- `fromVersionId?: string`\n Start from this published version instead of the live one.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3817
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3818
+ markdown: "## create\n\n`client.agentDraft.create(agentId: string, fromVersionId?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/draft`\n\nOpens the agent's one shared draft, a copy of the live version or of an older published version. Fails with 409 when a draft is already open.\n\n### Parameters\n\n- `agentId: string`\n\n- `fromVersionId?: string`\n Start from this published version instead of the live one.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.create('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3816
3819
  perLanguage: {
3817
3820
  typescript: {
3818
3821
  method: 'client.agentDraft.create',
@@ -3830,18 +3833,18 @@ const EMBEDDED_METHODS = [
3830
3833
  {
3831
3834
  name: 'update',
3832
3835
  endpoint: '/v1/agent/{agentId}/draft',
3833
- httpMethod: 'patch',
3836
+ httpMethod: 'put',
3834
3837
  summary: 'Edit the draft',
3835
3838
  description: 'Changes settings on the draft. Omitted settings stay as they are. Pass the revision you read as expectedRevision to fail with 409 if anyone edited the draft since, instead of applying on top of their edit.',
3836
3839
  stainlessPath: '(resource) agentDraft > (method) update',
3837
3840
  qualified: 'client.agentDraft.update',
3838
3841
  params: [
3839
3842
  'agentId: string;',
3840
- "settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; llmBackendModel?: string; llmMaxTokens?: number; llmModel?: string; llmProvider?: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature?: number; llmVoice?: string; modalities?: 'call' | 'chat'[]; sttEndpointingMs?: number; sttKeyterms?: string[]; sttModel?: string; sttProvider?: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat?: boolean; sttTurnDetection?: 'pipeline' | 'provider'; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; vadStartSecs?: number; vadStopSecs?: number; };",
3843
+ "settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; modalities?: 'call' | 'chat'[]; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; vadStartSecs?: number; vadStopSecs?: number; };",
3841
3844
  'expectedRevision?: number;',
3842
3845
  ],
3843
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3844
- markdown: "## update\n\n`client.agentDraft.update(agentId: string, settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; llmBackendModel?: string; llmMaxTokens?: number; llmModel?: string; llmProvider?: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature?: number; llmVoice?: string; modalities?: 'call' | 'chat'[]; sttEndpointingMs?: number; sttKeyterms?: string[]; sttModel?: string; sttProvider?: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat?: boolean; sttTurnDetection?: 'pipeline' | 'provider'; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; vadStartSecs?: number; vadStopSecs?: number; }, expectedRevision?: number): { data: object; }`\n\n**patch** `/v1/agent/{agentId}/draft`\n\nChanges settings on the draft. Omitted settings stay as they are. Pass the revision you read as expectedRevision to fail with 409 if anyone edited the draft since, instead of applying on top of their edit.\n\n### Parameters\n\n- `agentId: string`\n\n- `settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; llmBackendModel?: string; llmMaxTokens?: number; llmModel?: string; llmProvider?: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature?: number; llmVoice?: string; modalities?: 'call' | 'chat'[]; sttEndpointingMs?: number; sttKeyterms?: string[]; sttModel?: string; sttProvider?: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat?: boolean; sttTurnDetection?: 'pipeline' | 'provider'; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; vadStartSecs?: number; vadStopSecs?: number; }`\n The settings to change. Omitted settings stay as they are; null clears one to the runtime default. subAgents replaces every speaker and must include `main`.\n\n- `expectedRevision?: number`\n The draft's revision when you read it. When sent, the edit is refused if the draft changed since; when omitted, it applies on top of the latest edit.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n settings: {},\n});\n\nconsole.log(agentDraft);\n```",
3846
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3847
+ markdown: "## update\n\n`client.agentDraft.update(agentId: string, settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; modalities?: 'call' | 'chat'[]; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; vadStartSecs?: number; vadStopSecs?: number; }, expectedRevision?: number): { data: object; }`\n\n**put** `/v1/agent/{agentId}/draft`\n\nChanges settings on the draft. Omitted settings stay as they are. Pass the revision you read as expectedRevision to fail with 409 if anyone edited the draft since, instead of applying on top of their edit.\n\n### Parameters\n\n- `agentId: string`\n\n- `settings: { backgroundNoise?: string; backgroundNoiseUrl?: string; backgroundNoiseVolume?: number; callMaxDurationSeconds?: number; callSilenceTimeoutSeconds?: number; chatInactivityTimeoutSeconds?: number; chatMaxDurationSeconds?: number; endCallGoodbyeMessage?: string; endDetectionPhrases?: string[]; endDetectionReasons?: string[]; firstMessage?: string; firstMessageAudioUrl?: string; firstMessageMode?: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount?: number; idleMessages?: string[]; idleTimeoutSeconds?: number; interruptionMode?: 'ALLOW' | 'BLOCK'; language?: string; modalities?: 'call' | 'chat'[]; subAgents?: { handoffs: object[]; isInitial: boolean; key: 'main' | string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; vadStartSecs?: number; vadStopSecs?: number; }`\n The settings to change. Omitted settings stay as they are; null clears one to the runtime default. subAgents replaces every speaker, model configs included, and must include `main`; in a model config, omitted fields use the runtime default.\n\n- `expectedRevision?: number`\n The draft's revision when you read it. When sent, the edit is refused if the draft changed since; when omitted, it applies on top of the latest edit.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n settings: {},\n});\n\nconsole.log(agentDraft);\n```",
3845
3848
  perLanguage: {
3846
3849
  typescript: {
3847
3850
  method: 'client.agentDraft.update',
@@ -3852,7 +3855,7 @@ const EMBEDDED_METHODS = [
3852
3855
  example: 'import os\nfrom roark_analytics import Roark\n\nclient = Roark(\n bearer_token=os.environ.get("ROARK_API_BEARER_TOKEN"), # This is the default and can be omitted\n)\nagent_draft = client.agent_draft.update(\n agent_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n settings={},\n)\nprint(agent_draft.data)',
3853
3856
  },
3854
3857
  http: {
3855
- example: 'curl https://api.roark.ai/v1/agent/$AGENT_ID/draft \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "settings": {}\n }\'',
3858
+ example: 'curl https://api.roark.ai/v1/agent/$AGENT_ID/draft \\\n -X PUT \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "settings": {}\n }\'',
3856
3859
  },
3857
3860
  },
3858
3861
  },
@@ -3865,8 +3868,8 @@ const EMBEDDED_METHODS = [
3865
3868
  stainlessPath: '(resource) agentDraft > (method) delete',
3866
3869
  qualified: 'client.agentDraft.delete',
3867
3870
  params: ['agentId: string;'],
3868
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3869
- markdown: "## delete\n\n`client.agentDraft.delete(agentId: string): { data: object; }`\n\n**delete** `/v1/agent/{agentId}/draft`\n\nThrows the open draft away and returns it. The live version is unchanged.\n\n### Parameters\n\n- `agentId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3871
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3872
+ markdown: "## delete\n\n`client.agentDraft.delete(agentId: string): { data: object; }`\n\n**delete** `/v1/agent/{agentId}/draft`\n\nThrows the open draft away and returns it. The live version is unchanged.\n\n### Parameters\n\n- `agentId: string`\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst agentDraft = await client.agentDraft.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(agentDraft);\n```",
3870
3873
  perLanguage: {
3871
3874
  typescript: {
3872
3875
  method: 'client.agentDraft.delete',
@@ -3890,8 +3893,8 @@ const EMBEDDED_METHODS = [
3890
3893
  stainlessPath: '(resource) agentDraft > (method) publish',
3891
3894
  qualified: 'client.agentDraft.publish',
3892
3895
  params: ['agentId: string;', 'expectedRevision: number;', 'summary?: string;'],
3893
- response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3894
- markdown: "## publish\n\n`client.agentDraft.publish(agentId: string, expectedRevision: number, summary?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/draft/publish`\n\nMakes the draft the live version, numbered v1, v2, ... Fails with 409 if the draft was edited after expectedRevision, if another version was published since the draft started, or if it changes nothing; with 400 and the issues if the version cannot run.\n\n### Parameters\n\n- `agentId: string`\n\n- `expectedRevision: number`\n The draft revision you reviewed.\n\n- `summary?: string`\n What changed.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: object[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; llmBackendModel: string; llmMaxTokens: number; llmModel: string; llmProvider: 'OPENAI' | 'ANTHROPIC' | 'GOOGLE' | 'XAI' | 'ULTRAVOX' | 'AWS' | 'ELEVENLABS'; llmTemperature: number; llmVoice: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; restoredFromVersionId: string; revision: number; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; sttEndpointingMs: number; sttKeyterms: string[]; sttModel: string; sttProvider: 'DEEPGRAM' | 'OPENAI_WHISPER' | 'SPEECHMATICS' | 'ASSEMBLYAI' | 'ELEVENLABS'; sttSmartFormat: boolean; sttTurnDetection: 'pipeline' | 'provider'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; ttsModel: string; ttsProvider: 'CARTESIA' | 'ELEVENLABS' | 'OPENAI' | 'RIME'; ttsSimilarityBoost: number; ttsSpeed: number; ttsStability: number; ttsVoiceId: string; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentDraft.publish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n expectedRevision: 1,\n});\n\nconsole.log(response);\n```",
3896
+ response: "{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }",
3897
+ markdown: "## publish\n\n`client.agentDraft.publish(agentId: string, expectedRevision: number, summary?: string): { data: object; }`\n\n**post** `/v1/agent/{agentId}/draft/publish`\n\nMakes the draft the live version, numbered v1, v2, ... Fails with 409 if the draft was edited after expectedRevision, if another version was published since the draft started, or if it changes nothing; with 400 and the issues if the version cannot run.\n\n### Parameters\n\n- `agentId: string`\n\n- `expectedRevision: number`\n The draft revision you reviewed.\n\n- `summary?: string`\n What changed.\n\n### Returns\n\n- `{ data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: object[]; isInitial: boolean; key: string; modelConfigs: object[]; name: string; systemPrompt: string; tools: object[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }; }`\n\n - `data: { id: string; agentId: string; backgroundNoise: string; backgroundNoiseUrl: string; backgroundNoiseVolume: number; baseVersionId: string; callMaxDurationSeconds: number; callSilenceTimeoutSeconds: number; chatInactivityTimeoutSeconds: number; chatMaxDurationSeconds: number; createdAt: string; createdById: string; createdByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; endCallGoodbyeMessage: string; endDetectionPhrases: string[]; endDetectionReasons: string[]; firstMessage: string; firstMessageAudioUrl: string; firstMessageMode: 'SPEAK_TEXT' | 'PLAY_AUDIO' | 'WAIT_FOR_CALLER'; idleMaxCount: number; idleMessages: string[]; idleTimeoutSeconds: number; interruptionMode: 'ALLOW' | 'BLOCK'; language: string; modalities: 'call' | 'chat'[]; publishedAt: string; publishedById: string; publishedByType: 'USER' | 'API' | 'CONFIG' | 'AUTOIMPROVE' | 'INTEGRATION' | 'SYSTEM'; revision: number; rolledBackFromVersionId: string; status: 'DRAFT' | 'PUBLISHED' | 'DISCARDED'; subAgents: { handoffs: { description: string; history: 'SHARED' | 'NONE'; note: string; once: boolean; to: string; }[]; isInitial: boolean; key: string; modelConfigs: { llm: object[]; stt: object[]; tts: object[]; type: 'CASCADE'; } | { speechToSpeech: object; type: 'SPEECH_TO_SPEECH'; }[]; name: string; systemPrompt: string; tools: { pinnedVersion: number; toolDefinitionId: string; }[]; }[]; summary: string; updatedAt: string; vadStartSecs: number; vadStopSecs: number; versionNumber: number; issues?: { field: string; message: string; }[]; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.agentDraft.publish('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', {\n expectedRevision: 1,\n});\n\nconsole.log(response);\n```",
3895
3898
  perLanguage: {
3896
3899
  typescript: {
3897
3900
  method: 'client.agentDraft.publish',
@@ -4301,11 +4304,11 @@ const EMBEDDED_METHODS = [
4301
4304
  stainlessPath: '(resource) config > (method) diff',
4302
4305
  qualified: 'client.config.diff',
4303
4306
  params: [
4304
- "resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[];",
4307
+ "resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[];",
4305
4308
  'prune?: boolean;',
4306
4309
  ],
4307
4310
  response: "{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; detail?: string; project?: string; }[]; summary: { create: number; delete: number; noop: number; update: number; }; }; }",
4308
- markdown: "## diff\n\n`client.config.diff(resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[], prune?: boolean): { data: object; }`\n\n**post** `/v1/config/diff`\n\nDry run for an apply: returns the projected changes (create / update / delete) for the submitted bundle without writing anything. Works for both project and organization keys.\n\n### Parameters\n\n- `resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[]`\n\n- `prune?: boolean`\n\n### Returns\n\n- `{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; detail?: string; project?: string; }[]; summary: { create: number; delete: number; noop: number; update: number; }; }; }`\n\n - `data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; detail?: string; project?: string; }[]; summary: { create: number; delete: number; noop: number; update: number; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.config.diff({ resources: [{ kind: 'agent', name: 'x' }] });\n\nconsole.log(response);\n```",
4311
+ markdown: "## diff\n\n`client.config.diff(resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[], prune?: boolean): { data: object; }`\n\n**post** `/v1/config/diff`\n\nDry run for an apply: returns the projected changes (create / update / delete) for the submitted bundle without writing anything. Works for both project and organization keys.\n\n### Parameters\n\n- `resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[]`\n\n- `prune?: boolean`\n\n### Returns\n\n- `{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; detail?: string; project?: string; }[]; summary: { create: number; delete: number; noop: number; update: number; }; }; }`\n\n - `data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; detail?: string; project?: string; }[]; summary: { create: number; delete: number; noop: number; update: number; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.config.diff({ resources: [{ kind: 'agent', name: 'x' }] });\n\nconsole.log(response);\n```",
4309
4312
  perLanguage: {
4310
4313
  typescript: {
4311
4314
  method: 'client.config.diff',
@@ -4329,11 +4332,11 @@ const EMBEDDED_METHODS = [
4329
4332
  stainlessPath: '(resource) config > (method) apply',
4330
4333
  qualified: 'client.config.apply',
4331
4334
  params: [
4332
- "resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[];",
4335
+ "resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[];",
4333
4336
  'prune?: boolean;',
4334
4337
  ],
4335
4338
  response: "{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; status: 'applied' | 'skipped' | 'failed'; id?: string; detail?: string; error?: string; project?: string; signingSecret?: string; }[]; summary: { create: number; delete: number; failed: number; noop: number; update: number; }; }; }",
4336
- markdown: "## apply\n\n`client.config.apply(resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[], prune?: boolean): { data: object; }`\n\n**post** `/v1/config/apply`\n\nReconcile a config-as-code bundle. With a PROJECT API key, submit project-scoped resources (agents, personas, flows, collectors, metrics, ...). With an ORGANIZATION API key, submit `kind: project` resources, each optionally carrying its members and its own nested `resources`. Submit the full desired set; managed resources are updated, new ones created, and (unless prune is false) managed resources absent from the bundle are deleted. Identity is by name.\n\n### Parameters\n\n- `resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[]`\n\n- `prune?: boolean`\n\n### Returns\n\n- `{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; status: 'applied' | 'skipped' | 'failed'; id?: string; detail?: string; error?: string; project?: string; signingSecret?: string; }[]; summary: { create: number; delete: number; failed: number; noop: number; update: number; }; }; }`\n\n - `data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; status: 'applied' | 'skipped' | 'failed'; id?: string; detail?: string; error?: string; project?: string; signingSecret?: string; }[]; summary: { create: number; delete: number; failed: number; noop: number; update: number; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.config.apply({ resources: [{ kind: 'agent', name: 'x' }] });\n\nconsole.log(response);\n```",
4339
+ markdown: "## apply\n\n`client.config.apply(resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[], prune?: boolean): { data: object; }`\n\n**post** `/v1/config/apply`\n\nReconcile a config-as-code bundle. With a PROJECT API key, submit project-scoped resources (agents, personas, flows, collectors, metrics, ...). With an ORGANIZATION API key, submit `kind: project` resources, each optionally carrying its members and its own nested `resources`. Submit the full desired set; managed resources are updated, new ones created, and (unless prune is false) managed resources absent from the bundle are deleted. Identity is by name.\n\n### Parameters\n\n- `resources: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: { value: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; environment?: string; outboundDialHttpRequestDefinition?: string; outboundDialType?: 'NONE' | 'HTTP_REQUEST'; type?: 'PHONE' | 'WEBSOCKET'; }[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: { environment: string; persona: string; expectations?: string[]; prompt?: string; title?: string; }; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: { name: string; environment?: string; expectations?: string[]; includeFlowExpectations?: boolean; persona?: string; prompt?: string; title?: string; }[]; expectations?: string[]; title?: string; } | { graph: { type: string; content?: string; dtmfDigits?: string; flow?: string; handoffPersona?: string; mergeInto?: string[]; offScript?: object; ref?: string; requiredForValidRun?: boolean; silenceDurationSeconds?: number; stage?: string | object; steps?: object[]; }[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: { maxAttempts?: number; reaction?: 'STAY_SILENT' | 'REPEAT' | 'RESPOND' | 'SAY'; sayLine?: string; then?: 'HANG_UP' | 'MOVE_ON' | 'ADAPT' | 'HANG_UP_INVALIDATE'; waitSeconds?: number; }; title?: string; } | { kind: 'collector'; metrics: string | { metric: string; excludedPhrases?: string[]; screeningBrief?: string; verifiedProperties?: string[]; voicemailScript?: string; }[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: { conditions: object[]; }[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: { displayOrder: number; label: string; description?: string; }[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; flows: { edgeCases?: string[]; flow?: string; happyPath?: boolean; personaOverride?: string; system?: string; }[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: { agent: string; direction?: 'INCOMING' | 'OUTGOING' | 'INCOMING_AND_OUTGOING'; value?: string; }[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: { ask: string; expect?: string; name?: string; }[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: { email?: boolean | string[]; slack?: object[]; }; schedule?: { type: 'hourly'; enabled?: boolean; endDate?: string; maxRuns?: number; minute?: number; timezone?: string; } | { everyMinutes: number; type: 'interval'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { time: string; type: 'daily'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { days: 'sunday' | 'monday' | 'tuesday' | 'wednesday' | 'thursday' | 'friday' | 'saturday'[]; time: string; type: 'weekly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { dayOfMonth: number; time: string; type: 'monthly'; enabled?: boolean; endDate?: string; maxRuns?: number; timezone?: string; } | { at: string; type: 'once'; enabled?: boolean; timezone?: string; }; } | { kind: 'alert'; name: string; trigger: { aggregation: 'COUNT' | 'RATE_PER_MINUTE' | 'MEAN'; metric: string; operator: 'GT' | 'GTE' | 'LT' | 'LTE'; thresholdValue: number; type: 'threshold'; windowMinutes: number; consecutiveOpen?: number; consecutiveResolve?: number; grouping?: 'NONE' | 'BY_AGENT'; metricVariant?: string; minSampleSize?: number; } | { events: string[]; type: 'event'; } | { conditions: 'SUCCESS' | 'FAILURE' | 'THRESHOLD_FAILED'[]; type: 'simulation'; deliveryFormat?: 'MESSAGE' | 'PDF'; plan?: string; }; actions?: { slack?: object[]; webhooks?: string[]; }; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: { type: 'http'; url: string; method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE'; }; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: { type: 'METRIC_PROPERTY' | 'CALL_PROPERTY' | 'AGENT_PROPERTY' | 'CALL_ID' | 'MODALITY' | 'DATASET' | 'METRIC_VALUE'; operator?: string; property?: string; value?: string | number | boolean; }[]; isDefault?: boolean; timeRange?: { type: 'LAST'; unit: 'DAYS' | 'WEEKS' | 'MONTHS'; value: number; } | { period: string; type: 'CALENDAR_ALIGNED'; } | { from: string; to: string; type: 'FIXED'; } | { from: string; type: 'SINCE'; }; widgets?: { measures: object[]; name: string; comparisonGroups?: object[]; comparisonMode?: 'NONE' | 'PREVIOUS_PERIOD'; description?: string; display?: 'LINE' | 'NUMBER' | 'RADAR' | 'STACKED_BAR' | 'TABLE'; filters?: object[]; interval?: 'HOUR' | 'DAY' | 'WEEK' | 'MONTH'; size?: 'SMALL' | 'MEDIUM' | 'LARGE' | 'EXTRA_LARGE'; }[]; } | { kind: 'project'; name: string; category?: string; dataStorageRegion?: 'US_EAST_1' | 'EU_WEST_1'; description?: string; displayName?: string; members?: { email: string; role: 'OWNER' | 'ADMIN' | 'MEMBER' | 'VIEWER'; }[]; resources?: { kind: 'agent'; name: string; customId?: string; description?: string; displayName?: string; endpoints?: object[]; prompt?: string; } | { kind: 'httpRequestDefinition'; name: string; url: string; body?: string; description?: string; headers?: object; method?: 'POST' | 'PUT' | 'PATCH' | 'GET'; } | { accent: string; gender: 'MALE' | 'FEMALE'; kind: 'persona'; language: string; name: string; age?: 'CHILD' | 'TEENAGER' | 'ADULT' | 'ELDERLY'; backgroundNoise?: string; backstoryPrompt?: string; baseEmotion?: string; confirmationStyle?: 'EXPLICIT' | 'VAGUE'; description?: string; displayName?: string; hasDisfluencies?: boolean; idleMessageMaxSpokenCount?: number; idleMessageResetCountOnUserSpeechEnabled?: boolean; idleMessages?: string[]; idleTimeoutSeconds?: number; intentClarity?: 'CLEAR' | 'INDIRECT' | 'VAGUE'; interruption?: 'OFF' | 'BACKCHANNEL' | 'OCCASIONAL' | 'HEAVY'; memoryReliability?: 'HIGH' | 'LOW'; properties?: object; responseTiming?: 'RELAXED' | 'NORMAL' | 'QUICK' | 'BARGE_IN'; secondaryLanguage?: 'EN'; speechClarity?: 'CLEAR' | 'VAGUE' | 'RAMBLING'; speechPace?: 'SUPER_SLOW' | 'SLOW' | 'NORMAL' | 'FAST' | 'SUPER_FAST'; understoodLanguages?: string[]; } | { agents: string[]; happyPath: object; kind: 'flow'; name: string; type: 'improv'; description?: string; edgeCases?: object[]; expectations?: string[]; title?: string; } | { graph: object[]; kind: 'flow'; name: string; type: 'scripted'; adherence?: 'LOOSE' | 'STRICT'; agents?: string[]; branchingMode?: 'DETERMINISTIC' | 'ADAPTIVE'; description?: string; expectations?: string[]; offScript?: object; title?: string; } | { kind: 'collector'; metrics: string | object[]; modality: 'call' | 'chat'; name: string; displayName?: string; filters?: object[]; status?: 'ACTIVE' | 'INACTIVE'; } | { kind: 'metric'; name: string; prompt: string; type: 'BOOLEAN' | 'SCALE' | 'NUMERIC' | 'TEXT' | 'CLASSIFICATION'; calculationType?: 'LLM_JUDGE'; contexts?: 'CALL' | 'SEGMENT' | 'TURN'[]; displayName?: string; falseLabel?: string; maxSelections?: number; options?: object[]; participantRole?: 'AGENT' | 'CUSTOMER'; scaleLabels?: object[]; scaleMax?: number; scaleMin?: number; scope?: 'GLOBAL' | 'PER_PARTICIPANT'; trueLabel?: string; } | { calculationType: 'HTTP_REQUEST'; httpRequest: object; kind: 'metric'; name: string; displayName?: string; falseLabel?: string; trueLabel?: string; } | { calculationType: 'THRESHOLD'; kind: 'metric'; name: string; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetric: string; value: string | number | boolean; aggregationMode?: string; countThreshold?: number; falseLabel?: string; sourceParticipantRole?: 'AGENT' | 'CUSTOMER'; sourceVariant?: string; trueLabel?: string; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; flows: object[]; kind: 'simulationPlan'; maxDurationSeconds: number; metrics: string[]; name: string; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; template?: 'manual'; } | { agentEndpoints: object[]; direction: 'INBOUND' | 'OUTBOUND'; environment: string; kind: 'simulationPlan'; maxDurationSeconds: number; name: string; persona: string; questions: object[]; template: 'question-answer-check'; description?: string; endCallPhrases?: string[]; endCallReasons?: string[]; enrichWithLiveConversation?: boolean; executionMode?: 'PARALLEL' | 'SEQUENTIAL_SAME_RUN_PLAN' | 'SEQUENTIAL_PROJECT'; gradeWithKnowledgeBase?: boolean; includeAutomaticMetrics?: boolean; includeFlowMetrics?: boolean; iterations?: number; maxConcurrentJobs?: number; maxNoResponseRetries?: number; metrics?: string[]; noResponseRetryBackoffSeconds?: number; notify?: object; schedule?: object; silenceTimeoutSeconds?: number; } | { kind: 'simulationGroup'; name: string; plans: string[]; description?: string; notify?: object; schedule?: object; } | { kind: 'alert'; name: string; trigger: object; actions?: object; displayName?: string; enabled?: boolean; } | { kind: 'tool'; name: string; agent?: string; description?: string; expectedResult?: string; handler?: object; invocationCriteria?: string; parameters?: object; } | { kind: 'dashboard'; name: string; description?: string; displayName?: string; filters?: object[]; isDefault?: boolean; timeRange?: object; widgets?: object[]; }[]; }[]`\n\n- `prune?: boolean`\n\n### Returns\n\n- `{ data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; status: 'applied' | 'skipped' | 'failed'; id?: string; detail?: string; error?: string; project?: string; signingSecret?: string; }[]; summary: { create: number; delete: number; failed: number; noop: number; update: number; }; }; }`\n\n - `data: { changes: { configKey: string; kind: string; name: string; op: 'create' | 'update' | 'delete' | 'noop'; status: 'applied' | 'skipped' | 'failed'; id?: string; detail?: string; error?: string; project?: string; signingSecret?: string; }[]; summary: { create: number; delete: number; failed: number; noop: number; update: number; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.config.apply({ resources: [{ kind: 'agent', name: 'x' }] });\n\nconsole.log(response);\n```",
4337
4340
  perLanguage: {
4338
4341
  typescript: {
4339
4342
  method: 'client.config.apply',