@roarkanalytics/sdk-mcp 4.35.0 → 4.36.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -854,8 +854,8 @@ const EMBEDDED_METHODS = [
854
854
  stainlessPath: '(resource) metric > (method) listDefinitions',
855
855
  qualified: 'client.metric.listDefinitions',
856
856
  params: ['after?: string;', 'limit?: number;'],
857
- response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]; pagination: { hasMore: boolean; limit: number; nextCursor: string; }; }",
858
- markdown: "## listDefinitions\n\n`client.metric.listDefinitions(after?: string, limit?: number): { data: object[]; pagination: object; }`\n\n**get** `/v1/metric/definitions`\n\nFetch metric definitions available in the project, including both system-generated and custom metrics. Results are ordered by immutable definition ID; pass `nextCursor` to retrieve the following page.\n\n### Parameters\n\n- `after?: string`\n\n- `limit?: number`\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]; pagination: { hasMore: boolean; limit: number; nextCursor: string; }; }`\n Cursor-paginated metric definitions available in the project\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]`\n - `pagination: { hasMore: boolean; limit: number; nextCursor: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.listDefinitions();\n\nconsole.log(response);\n```",
857
+ response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]; pagination: { hasMore: boolean; limit: number; nextCursor: string; }; }",
858
+ markdown: "## listDefinitions\n\n`client.metric.listDefinitions(after?: string, limit?: number): { data: object[]; pagination: object; }`\n\n**get** `/v1/metric/definitions`\n\nFetch metric definitions available in the project, including both system-generated and custom metrics. Results are ordered by immutable definition ID; pass `nextCursor` to retrieve the following page.\n\n### Parameters\n\n- `after?: string`\n\n- `limit?: number`\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]; pagination: { hasMore: boolean; limit: number; nextCursor: string; }; }`\n Cursor-paginated metric definitions available in the project\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PROVIDER'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }[]`\n - `pagination: { hasMore: boolean; limit: number; nextCursor: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.listDefinitions();\n\nconsole.log(response);\n```",
859
859
  perLanguage: {
860
860
  typescript: {
861
861
  method: 'client.metric.listDefinitions',
@@ -878,8 +878,8 @@ const EMBEDDED_METHODS = [
878
878
  description: 'Create a new metric definition. The `calculationType` field selects the variant: LLM_JUDGE (LLM-evaluated), FORMULA (computed from a math expression over other metrics), or PATTERN (detects a trigger→outcome pattern within a window). To create a threshold on top of an existing metric, use `POST /metric/definitions/{idOrSlug}/thresholds` instead.',
879
879
  stainlessPath: '(resource) metric > (method) createDefinition',
880
880
  qualified: 'client.metric.createDefinition',
881
- response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }",
882
- markdown: "## createDefinition\n\n`client.metric.createDefinition(): { data: object; }`\n\n**post** `/v1/metric/definitions`\n\nCreate a new metric definition. The `calculationType` field selects the variant: LLM_JUDGE (LLM-evaluated), FORMULA (computed from a math expression over other metrics), or PATTERN (detects a trigger→outcome pattern within a window). To create a threshold on top of an existing metric, use `POST /metric/definitions/{idOrSlug}/thresholds` instead.\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }`\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.createDefinition({\n calculationType: 'LLM_JUDGE',\n name: 'Customer Satisfaction',\n outputType: 'BOOLEAN',\n});\n\nconsole.log(response);\n```",
881
+ response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }",
882
+ markdown: "## createDefinition\n\n`client.metric.createDefinition(): { data: object; }`\n\n**post** `/v1/metric/definitions`\n\nCreate a new metric definition. The `calculationType` field selects the variant: LLM_JUDGE (LLM-evaluated), FORMULA (computed from a math expression over other metrics), or PATTERN (detects a trigger→outcome pattern within a window). To create a threshold on top of an existing metric, use `POST /metric/definitions/{idOrSlug}/thresholds` instead.\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }`\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.createDefinition({\n calculationType: 'LLM_JUDGE',\n name: 'Customer Satisfaction',\n outputType: 'BOOLEAN',\n});\n\nconsole.log(response);\n```",
883
883
  perLanguage: {
884
884
  typescript: {
885
885
  method: 'client.metric.createDefinition',
@@ -911,6 +911,7 @@ const EMBEDDED_METHODS = [
911
911
  'changeReason?: string;',
912
912
  'classificationOptions?: { description: string; displayOrder: number; label: string; }[];',
913
913
  'formula?: string;',
914
+ "httpRequest?: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; };",
914
915
  'llmPrompt?: string;',
915
916
  'maxClassifications?: number;',
916
917
  'metricId?: object;',
@@ -930,8 +931,8 @@ const EMBEDDED_METHODS = [
930
931
  'supportsMultipleVariants?: object;',
931
932
  'toolDefinitionIds?: string[];',
932
933
  ],
933
- response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; }; }",
934
- markdown: "## updateDefinition\n\n`client.metric.updateDefinition(idOrSlug: string, analysisPackageId?: object, booleanFalseLabel?: string, booleanTrueLabel?: string, calcType?: object, changeReason?: string, classificationOptions?: { description: string; displayOrder: number; label: string; }[], formula?: string, llmPrompt?: string, maxClassifications?: number, metricId?: object, name?: string, organizationId?: object, outputType?: object, participantRole?: object, projectId?: object, scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[], scaleMax?: number, scaleMin?: number, scope?: object, slug?: object, source?: object, sources?: { sourceMetricDefinitionId: string; sourceVariantId?: string; }[], supportedContexts?: 'CALL' | 'SEGMENT' | 'TURN'[], supportsMultipleVariants?: object, toolDefinitionIds?: string[]): { data: object; }`\n\n**put** `/v1/metric/definitions/{idOrSlug}`\n\nUpdate the editable subset of a custom metric definition, addressed by its UUID or its stable `slug`. Only the supplied fields are changed; omitted fields are left unchanged. Every update creates a new immutable version; the response carries the advanced `versionId`. Immutable fields (scope, outputType, calcType, …) are rejected, and which fields are editable depends on the metric (e.g. derived metrics only allow `name`). Roark's own metrics are rejected here: this endpoint edits the shared definition, which every workspace sees. To change one for your workspace alone, edit its variant with PUT /v1/metric/definitions/{idOrSlug}/variants/{variantId}, which forks it for you and leaves every other workspace on the original.\n\n### Parameters\n\n- `idOrSlug: string`\n\n- `analysisPackageId?: object`\n\n- `booleanFalseLabel?: string`\n New label for the false case (BOOLEAN output only)\n\n- `booleanTrueLabel?: string`\n New label for the true case (BOOLEAN output only)\n\n- `calcType?: object`\n\n- `changeReason?: string`\n Optional free-text audit note recorded on the new version.\n\n- `classificationOptions?: { description: string; displayOrder: number; label: string; }[]`\n Replacement set of classification options (CLASSIFICATION output only)\n\n- `formula?: string`\n New formula expression (FORMULA only). Pass `sources` alongside if the referenced metrics change.\n\n- `llmPrompt?: string`\n New LLM prompt (only for LLM_JUDGE metrics whose prompt is editable)\n\n- `maxClassifications?: number`\n New maximum number of classifications (CLASSIFICATION output only)\n\n- `metricId?: object`\n\n- `name?: string`\n New name (only for metrics whose name is editable)\n\n- `organizationId?: object`\n\n- `outputType?: object`\n\n- `participantRole?: object`\n\n- `projectId?: object`\n\n- `scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]`\n Replacement set of scale-range labels (SCALE output only)\n\n- `scaleMax?: number`\n New scale maximum (SCALE output only)\n\n- `scaleMin?: number`\n New scale minimum (SCALE output only)\n\n- `scope?: object`\n\n- `slug?: object`\n\n- `source?: object`\n\n- `sources?: { sourceMetricDefinitionId: string; sourceVariantId?: string; }[]`\n Replacement formula sources, required when `formula` changes the referenced metrics (FORMULA only).\n\n- `supportedContexts?: 'CALL' | 'SEGMENT' | 'TURN'[]`\n Replacement set of supported contexts. Omit to leave unchanged. Scope and participantRole cannot change after create, so moving to SEGMENT or TURN grading only works on a PER_PARTICIPANT metric (see create).\n\n- `supportsMultipleVariants?: object`\n\n- `toolDefinitionIds?: string[]`\n Replacement set of scoped tool-definition ids (only for metrics whose tool scoping is editable)\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; }; }`\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.updateDefinition('idOrSlug');\n\nconsole.log(response);\n```",
934
+ response: "{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }",
935
+ markdown: "## updateDefinition\n\n`client.metric.updateDefinition(idOrSlug: string, analysisPackageId?: object, booleanFalseLabel?: string, booleanTrueLabel?: string, calcType?: object, changeReason?: string, classificationOptions?: { description: string; displayOrder: number; label: string; }[], formula?: string, httpRequest?: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }, llmPrompt?: string, maxClassifications?: number, metricId?: object, name?: string, organizationId?: object, outputType?: object, participantRole?: object, projectId?: object, scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[], scaleMax?: number, scaleMin?: number, scope?: object, slug?: object, source?: object, sources?: { sourceMetricDefinitionId: string; sourceVariantId?: string; }[], supportedContexts?: 'CALL' | 'SEGMENT' | 'TURN'[], supportsMultipleVariants?: object, toolDefinitionIds?: string[]): { data: object; }`\n\n**put** `/v1/metric/definitions/{idOrSlug}`\n\nUpdate the editable subset of a custom metric definition, addressed by its UUID or its stable `slug`. Only the supplied fields are changed; omitted fields are left unchanged. Every update creates a new immutable version; the response carries the advanced `versionId`. Immutable fields (scope, outputType, calcType, …) are rejected, and which fields are editable depends on the metric (e.g. derived metrics only allow `name`). Roark's own metrics are rejected here: this endpoint edits the shared definition, which every workspace sees. To change one for your workspace alone, edit its variant with PUT /v1/metric/definitions/{idOrSlug}/variants/{variantId}, which forks it for you and leaves every other workspace on the original.\n\n### Parameters\n\n- `idOrSlug: string`\n\n- `analysisPackageId?: object`\n\n- `booleanFalseLabel?: string`\n New label for the false case (BOOLEAN output only)\n\n- `booleanTrueLabel?: string`\n New label for the true case (BOOLEAN output only)\n\n- `calcType?: object`\n\n- `changeReason?: string`\n Optional free-text audit note recorded on the new version.\n\n- `classificationOptions?: { description: string; displayOrder: number; label: string; }[]`\n Replacement set of classification options (CLASSIFICATION output only)\n\n- `formula?: string`\n New formula expression (FORMULA only). Pass `sources` alongside if the referenced metrics change.\n\n- `httpRequest?: { url: string; body?: string; headers?: object; method?: 'GET' | 'POST'; }`\n Replacement request (HTTP_REQUEST only). Send the whole request; omitted headers are removed.\n\n- `llmPrompt?: string`\n New LLM prompt (only for LLM_JUDGE metrics whose prompt is editable)\n\n- `maxClassifications?: number`\n New maximum number of classifications (CLASSIFICATION output only)\n\n- `metricId?: object`\n\n- `name?: string`\n New name (only for metrics whose name is editable)\n\n- `organizationId?: object`\n\n- `outputType?: object`\n\n- `participantRole?: object`\n\n- `projectId?: object`\n\n- `scaleLabels?: { displayOrder: number; label: string; rangeMax: number; rangeMin: number; colorHex?: string; description?: string; }[]`\n Replacement set of scale-range labels (SCALE output only)\n\n- `scaleMax?: number`\n New scale maximum (SCALE output only)\n\n- `scaleMin?: number`\n New scale minimum (SCALE output only)\n\n- `scope?: object`\n\n- `slug?: object`\n\n- `source?: object`\n\n- `sources?: { sourceMetricDefinitionId: string; sourceVariantId?: string; }[]`\n Replacement formula sources, required when `formula` changes the referenced metrics (FORMULA only).\n\n- `supportedContexts?: 'CALL' | 'SEGMENT' | 'TURN'[]`\n Replacement set of supported contexts. Omit to leave unchanged. Scope and participantRole cannot change after create, so moving to SEGMENT or TURN grading only works on a PER_PARTICIPANT metric (see create).\n\n- `supportsMultipleVariants?: object`\n\n- `toolDefinitionIds?: string[]`\n Replacement set of scoped tool-definition ids (only for metrics whose tool scoping is editable)\n\n### Returns\n\n- `{ data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: object[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: object; triggerCombinator: 'AND' | 'OR'; triggers: object[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }; }`\n\n - `data: { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'LLM_JUDGE'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; llmPrompt: string; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'FORMULA'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; formula: { expression: string; sources: { sourceMetricDefinitionId: string; sourceVariantId: string; }[]; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'PATTERN'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; pattern: { operation: 'PATTERN_EXISTS' | 'PATTERN_COUNT' | 'OUTCOME_AGGREGATE'; outcome: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; windowAfter: number; windowBefore: number; }; triggerCombinator: 'AND' | 'OR'; triggers: { operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }[]; windowMode: string; }; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; } | { id: string; calculationType: 'THRESHOLD'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; threshold?: { aggregationMode: string; countThreshold: number; operator: 'GREATER_THAN' | 'GREATER_THAN_OR_EQUALS' | 'LESS_THAN' | 'LESS_THAN_OR_EQUALS' | 'EQUALS' | 'NOT_EQUALS'; sourceMetricDefinitionId: string; sourceParticipantRole: 'AGENT' | 'CUSTOMER' | 'SIMULATED_CUSTOMER' | 'BACKGROUND_SPEAKER'; sourceVariantId: string; thresholdValue: string; }; unit?: { name: string; symbol: string; }; } | { id: string; booleanFalseLabel: string; booleanTrueLabel: string; calculationType: 'HTTP_REQUEST'; description: string; evidenceSource: { countsWhen: boolean; metricId: string; }; httpRequest: { body: string; headers: object; method: 'GET' | 'POST'; url: string; }; metricId: string; name: string; requiresLiveConversation: boolean; scope: 'GLOBAL' | 'PER_PARTICIPANT'; slug: string; supportedContexts: 'CALL' | 'SEGMENT' | 'TURN'[]; supportedConversationSources: 'SIMULATED' | 'LIVE'[]; supportsVariants: boolean; type: 'COUNT' | 'NUMERIC' | 'BOOLEAN' | 'SCALE' | 'TEXT' | 'CLASSIFICATION' | 'OFFSET'; variantId: string; versionId: string; unit?: { name: string; symbol: string; }; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.metric.updateDefinition('idOrSlug');\n\nconsole.log(response);\n```",
935
936
  perLanguage: {
936
937
  typescript: {
937
938
  method: 'client.metric.updateDefinition',
@@ -3453,6 +3454,161 @@ const EMBEDDED_METHODS = [
3453
3454
  },
3454
3455
  },
3455
3456
  },
3457
+ {
3458
+ name: 'list',
3459
+ endpoint: '/v1/phone-number',
3460
+ httpMethod: 'get',
3461
+ summary: 'List phone numbers',
3462
+ description: 'Returns the phone numbers the project owns, oldest first, with the agent each is assigned to.',
3463
+ stainlessPath: '(resource) phoneNumber > (method) list',
3464
+ qualified: 'client.phoneNumber.list',
3465
+ params: ['agentId?: string;'],
3466
+ response: '{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }[]; }',
3467
+ markdown: "## list\n\n`client.phoneNumber.list(agentId?: string): { data: object[]; }`\n\n**get** `/v1/phone-number`\n\nReturns the phone numbers the project owns, oldest first, with the agent each is assigned to.\n\n### Parameters\n\n- `agentId?: string`\n Only the numbers assigned to this agent\n\n### Returns\n\n- `{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }[]; }`\n\n - `data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }[]`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst phoneNumbers = await client.phoneNumber.list();\n\nconsole.log(phoneNumbers);\n```",
3468
+ perLanguage: {
3469
+ typescript: {
3470
+ method: 'client.phoneNumber.list',
3471
+ 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 phoneNumbers = await client.phoneNumber.list();\n\nconsole.log(phoneNumbers.data);",
3472
+ },
3473
+ python: {
3474
+ method: 'phone_number.list',
3475
+ 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)\nphone_numbers = client.phone_number.list()\nprint(phone_numbers.data)',
3476
+ },
3477
+ http: {
3478
+ example: 'curl https://api.roark.ai/v1/phone-number \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3479
+ },
3480
+ },
3481
+ },
3482
+ {
3483
+ name: 'listAvailable',
3484
+ endpoint: '/v1/phone-number/available',
3485
+ httpMethod: 'get',
3486
+ summary: 'Search available phone numbers',
3487
+ description: 'Returns US numbers the carrier has for sale, narrowed by area code or by digits the number must contain. Buy one with POST /v1/phone-number.',
3488
+ stainlessPath: '(resource) phoneNumber > (method) listAvailable',
3489
+ qualified: 'client.phoneNumber.listAvailable',
3490
+ params: ['areaCode?: string;', 'contains?: string;', 'limit?: number;'],
3491
+ response: '{ data: { e164: string; locality: string; region: string; }[]; }',
3492
+ markdown: "## listAvailable\n\n`client.phoneNumber.listAvailable(areaCode?: string, contains?: string, limit?: number): { data: object[]; }`\n\n**get** `/v1/phone-number/available`\n\nReturns US numbers the carrier has for sale, narrowed by area code or by digits the number must contain. Buy one with POST /v1/phone-number.\n\n### Parameters\n\n- `areaCode?: string`\n Three-digit US area code\n\n- `contains?: string`\n Digits or letters the number must contain (1 to 7, * matches any digit)\n\n- `limit?: number`\n Maximum number of results (default: 20, max: 50)\n\n### Returns\n\n- `{ data: { e164: string; locality: string; region: string; }[]; }`\n\n - `data: { e164: string; locality: string; region: string; }[]`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.phoneNumber.listAvailable();\n\nconsole.log(response);\n```",
3493
+ perLanguage: {
3494
+ typescript: {
3495
+ method: 'client.phoneNumber.listAvailable',
3496
+ 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.phoneNumber.listAvailable();\n\nconsole.log(response.data);",
3497
+ },
3498
+ python: {
3499
+ method: 'phone_number.list_available',
3500
+ 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.phone_number.list_available()\nprint(response.data)',
3501
+ },
3502
+ http: {
3503
+ example: 'curl https://api.roark.ai/v1/phone-number/available \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3504
+ },
3505
+ },
3506
+ },
3507
+ {
3508
+ name: 'getAllowance',
3509
+ endpoint: '/v1/phone-number/allowance',
3510
+ httpMethod: 'get',
3511
+ summary: 'Get the phone number allowance',
3512
+ description: 'Returns how many numbers the organization gets for free, how many it holds, what a paid number costs a month, and whether a purchase would be admitted right now.',
3513
+ stainlessPath: '(resource) phoneNumber > (method) getAllowance',
3514
+ qualified: 'client.phoneNumber.getAllowance',
3515
+ response: "{ data: { blockedReason: 'PAYMENT_METHOD_REQUIRED' | 'INSUFFICIENT_CREDITS' | 'SPEND_CAP_REACHED' | 'PLAN_LIMIT_REACHED'; canPurchase: boolean; freeLimit: number; isOverridden: boolean; monthlyRentMicros: number; nextIsFree: boolean; paidCount: number; plan: 'PAYG' | 'TEAM' | 'ENTERPRISE'; used: number; }; }",
3516
+ markdown: "## getAllowance\n\n`client.phoneNumber.getAllowance(): { data: object; }`\n\n**get** `/v1/phone-number/allowance`\n\nReturns how many numbers the organization gets for free, how many it holds, what a paid number costs a month, and whether a purchase would be admitted right now.\n\n### Returns\n\n- `{ data: { blockedReason: 'PAYMENT_METHOD_REQUIRED' | 'INSUFFICIENT_CREDITS' | 'SPEND_CAP_REACHED' | 'PLAN_LIMIT_REACHED'; canPurchase: boolean; freeLimit: number; isOverridden: boolean; monthlyRentMicros: number; nextIsFree: boolean; paidCount: number; plan: 'PAYG' | 'TEAM' | 'ENTERPRISE'; used: number; }; }`\n\n - `data: { blockedReason: 'PAYMENT_METHOD_REQUIRED' | 'INSUFFICIENT_CREDITS' | 'SPEND_CAP_REACHED' | 'PLAN_LIMIT_REACHED'; canPurchase: boolean; freeLimit: number; isOverridden: boolean; monthlyRentMicros: number; nextIsFree: boolean; paidCount: number; plan: 'PAYG' | 'TEAM' | 'ENTERPRISE'; used: number; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst response = await client.phoneNumber.getAllowance();\n\nconsole.log(response);\n```",
3517
+ perLanguage: {
3518
+ typescript: {
3519
+ method: 'client.phoneNumber.getAllowance',
3520
+ 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.phoneNumber.getAllowance();\n\nconsole.log(response.data);",
3521
+ },
3522
+ python: {
3523
+ method: 'phone_number.get_allowance',
3524
+ 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.phone_number.get_allowance()\nprint(response.data)',
3525
+ },
3526
+ http: {
3527
+ example: 'curl https://api.roark.ai/v1/phone-number/allowance \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3528
+ },
3529
+ },
3530
+ },
3531
+ {
3532
+ name: 'create',
3533
+ endpoint: '/v1/phone-number',
3534
+ httpMethod: 'post',
3535
+ summary: 'Buy a phone number',
3536
+ description: 'Buys a number from the carrier for this project. Free inside the plan allowance; past it, the first month of rent is charged now and monthly after that.',
3537
+ stainlessPath: '(resource) phoneNumber > (method) create',
3538
+ qualified: 'client.phoneNumber.create',
3539
+ params: [
3540
+ 'e164: string;',
3541
+ 'agentId?: string;',
3542
+ 'expectFree?: boolean;',
3543
+ 'expectMonthlyRentMicros?: number;',
3544
+ 'name?: string;',
3545
+ ],
3546
+ response: '{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }; }',
3547
+ markdown: "## create\n\n`client.phoneNumber.create(e164: string, agentId?: string, expectFree?: boolean, expectMonthlyRentMicros?: number, name?: string): { data: object; }`\n\n**post** `/v1/phone-number`\n\nBuys a number from the carrier for this project. Free inside the plan allowance; past it, the first month of rent is charged now and monthly after that.\n\n### Parameters\n\n- `e164: string`\n The number to buy, in E.164 format, from a search result\n\n- `agentId?: string`\n The agent to assign the number to\n\n- `expectFree?: boolean`\n Whether you expect this number to be free (from the allowance). The purchase is refused with 409 if that has changed since you checked.\n\n- `expectMonthlyRentMicros?: number`\n The monthly rent you expect for a paid number, in micros (from the allowance). The purchase is refused with 409 if that has changed since you checked.\n\n- `name?: string`\n A label for the number\n\n### Returns\n\n- `{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }; }`\n\n - `data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst phoneNumber = await client.phoneNumber.create({ e164: '+14155550123' });\n\nconsole.log(phoneNumber);\n```",
3548
+ perLanguage: {
3549
+ typescript: {
3550
+ method: 'client.phoneNumber.create',
3551
+ 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 phoneNumber = await client.phoneNumber.create({ e164: '+14155550123' });\n\nconsole.log(phoneNumber.data);",
3552
+ },
3553
+ python: {
3554
+ method: 'phone_number.create',
3555
+ 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)\nphone_number = client.phone_number.create(\n e164="+14155550123",\n)\nprint(phone_number.data)',
3556
+ },
3557
+ http: {
3558
+ example: 'curl https://api.roark.ai/v1/phone-number \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN" \\\n -d \'{\n "e164": "+14155550123",\n "expectMonthlyRentMicros": 2000000\n }\'',
3559
+ },
3560
+ },
3561
+ },
3562
+ {
3563
+ name: 'update',
3564
+ endpoint: '/v1/phone-number/{phoneNumberId}',
3565
+ httpMethod: 'put',
3566
+ summary: 'Update a phone number',
3567
+ description: 'Relabels a number or changes which agent it is assigned to. A field left out is untouched; null clears it.',
3568
+ stainlessPath: '(resource) phoneNumber > (method) update',
3569
+ qualified: 'client.phoneNumber.update',
3570
+ params: ['phoneNumberId: string;', 'agentId?: string;', 'name?: string;'],
3571
+ response: '{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }; }',
3572
+ markdown: "## update\n\n`client.phoneNumber.update(phoneNumberId: string, agentId?: string, name?: string): { data: object; }`\n\n**put** `/v1/phone-number/{phoneNumberId}`\n\nRelabels a number or changes which agent it is assigned to. A field left out is untouched; null clears it.\n\n### Parameters\n\n- `phoneNumberId: string`\n\n- `agentId?: string`\n Agent to assign the number to; null unassigns, omit to leave it alone\n\n- `name?: string`\n New label; null clears it, omit to leave it alone\n\n### Returns\n\n- `{ data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }; }`\n\n - `data: { id: string; agentId: string; e164: string; isFree: boolean; localityCode: string; monthlyRentMicros: number; name: string; purchasedAt: string; rentNextChargeAt: string; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst phoneNumber = await client.phoneNumber.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(phoneNumber);\n```",
3573
+ perLanguage: {
3574
+ typescript: {
3575
+ method: 'client.phoneNumber.update',
3576
+ 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 phoneNumber = await client.phoneNumber.update('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(phoneNumber.data);",
3577
+ },
3578
+ python: {
3579
+ method: 'phone_number.update',
3580
+ 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)\nphone_number = client.phone_number.update(\n phone_number_id="182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n)\nprint(phone_number.data)',
3581
+ },
3582
+ http: {
3583
+ example: 'curl https://api.roark.ai/v1/phone-number/$PHONE_NUMBER_ID \\\n -X PUT \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3584
+ },
3585
+ },
3586
+ },
3587
+ {
3588
+ name: 'delete',
3589
+ endpoint: '/v1/phone-number/{phoneNumberId}',
3590
+ httpMethod: 'delete',
3591
+ summary: 'Release a phone number',
3592
+ description: 'Gives the number back to the carrier. This cannot be undone: rent stops today and nothing is refunded.',
3593
+ stainlessPath: '(resource) phoneNumber > (method) delete',
3594
+ qualified: 'client.phoneNumber.delete',
3595
+ params: ['phoneNumberId: string;'],
3596
+ response: '{ data: { id: string; released: true; }; }',
3597
+ markdown: "## delete\n\n`client.phoneNumber.delete(phoneNumberId: string): { data: object; }`\n\n**delete** `/v1/phone-number/{phoneNumberId}`\n\nGives the number back to the carrier. This cannot be undone: rent stops today and nothing is refunded.\n\n### Parameters\n\n- `phoneNumberId: string`\n\n### Returns\n\n- `{ data: { id: string; released: true; }; }`\n\n - `data: { id: string; released: true; }`\n\n### Example\n\n```typescript\nimport Roark from '@roarkanalytics/sdk';\n\nconst client = new Roark();\n\nconst phoneNumber = await client.phoneNumber.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(phoneNumber);\n```",
3598
+ perLanguage: {
3599
+ typescript: {
3600
+ method: 'client.phoneNumber.delete',
3601
+ 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 phoneNumber = await client.phoneNumber.delete('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e');\n\nconsole.log(phoneNumber.data);",
3602
+ },
3603
+ python: {
3604
+ method: 'phone_number.delete',
3605
+ 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)\nphone_number = client.phone_number.delete(\n "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",\n)\nprint(phone_number.data)',
3606
+ },
3607
+ http: {
3608
+ example: 'curl https://api.roark.ai/v1/phone-number/$PHONE_NUMBER_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $ROARK_API_BEARER_TOKEN"',
3609
+ },
3610
+ },
3611
+ },
3456
3612
  {
3457
3613
  name: 'list',
3458
3614
  endpoint: '/v1/agent/{agentId}/prompts',