diff --git a/fern/apis/api/openapi.json b/fern/apis/api/openapi.json index 430e2da91..aee625184 100644 --- a/fern/apis/api/openapi.json +++ b/fern/apis/api/openapi.json @@ -6090,6 +6090,598 @@ ] } }, + "/monitoring/issue": { + "get": { + "operationId": "IssueController_findAll", + "summary": "List Issues", + "parameters": [ + { + "name": "id", + "required": false, + "in": "query", + "description": "This will return issues with the specified id.", + "schema": { + "type": "string" + } + }, + { + "name": "monitorId", + "required": false, + "in": "query", + "description": "This will return issues with the specified monitor ID.", + "schema": { + "type": "string" + } + }, + { + "name": "policyId", + "required": false, + "in": "query", + "description": "This will return issues with the specified policy ID.", + "schema": { + "type": "string" + } + }, + { + "name": "status", + "required": false, + "in": "query", + "description": "This will return issues with the specified status.", + "schema": { + "enum": [ + "created", + "acknowledged", + "resolved" + ], + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/monitoring/issue/{id}": { + "get": { + "operationId": "IssueController_findOne", + "summary": "Get Issue", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "IssueController_update", + "summary": "Update Issue", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateIssueDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Issue" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/monitoring/policy": { + "get": { + "operationId": "PolicyController_findAll", + "summary": "List Policies", + "parameters": [ + { + "name": "id", + "required": false, + "in": "query", + "description": "This will return policies with the specified id.", + "schema": { + "type": "string" + } + }, + { + "name": "severity", + "required": false, + "in": "query", + "description": "This will return policies with the specified severity.", + "schema": { + "enum": [ + "error", + "warning", + "info" + ], + "type": "string" + } + }, + { + "name": "monitorId", + "required": false, + "in": "query", + "description": "This will return policies associated with the specified monitor ID.", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "required": false, + "in": "query", + "description": "This is the page number to return. Defaults to 1.", + "schema": { + "minimum": 1, + "type": "number" + } + }, + { + "name": "sortOrder", + "required": false, + "in": "query", + "description": "This is the sort order for pagination. Defaults to 'DESC'.", + "schema": { + "enum": [ + "ASC", + "DESC" + ], + "type": "string" + } + }, + { + "name": "limit", + "required": false, + "in": "query", + "description": "This is the maximum number of items to return. Defaults to 100.", + "schema": { + "minimum": 0, + "maximum": 1000, + "type": "number" + } + }, + { + "name": "createdAtGt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLt", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtGe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "createdAtLe", + "required": false, + "in": "query", + "description": "This will return items where the createdAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLt", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtGe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is greater than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + }, + { + "name": "updatedAtLe", + "required": false, + "in": "query", + "description": "This will return items where the updatedAt is less than or equal to the specified value.", + "schema": { + "format": "date-time", + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Policy" + } + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "post": { + "operationId": "PolicyController_create", + "summary": "Create Policy", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePolicyDTO" + } + } + } + }, + "responses": { + "201": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Policy" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, + "/monitoring/policy/{id}": { + "get": { + "operationId": "PolicyController_findOne", + "summary": "Get Policy", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Policy" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "patch": { + "operationId": "PolicyController_update", + "summary": "Update Policy", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePolicyDTO" + } + } + } + }, + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Policy" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + }, + "delete": { + "operationId": "PolicyController_delete", + "summary": "Delete Policy", + "parameters": [ + { + "name": "id", + "required": true, + "in": "path", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Policy" + } + } + } + } + }, + "tags": [ + "Monitoring" + ], + "security": [ + { + "bearer": [] + } + ] + } + }, "/provider/{provider}/{resourceName}": { "post": { "operationId": "ProviderResourceController_createProviderResource", @@ -6110,6 +6702,7 @@ "description": "The provider (e.g., 11labs)", "schema": { "enum": [ + "cartesia", "11labs" ], "type": "string" @@ -6160,6 +6753,7 @@ "description": "The provider (e.g., 11labs)", "schema": { "enum": [ + "cartesia", "11labs" ], "type": "string" @@ -6342,6 +6936,7 @@ "description": "The provider (e.g., 11labs)", "schema": { "enum": [ + "cartesia", "11labs" ], "type": "string" @@ -6404,6 +6999,7 @@ "description": "The provider (e.g., 11labs)", "schema": { "enum": [ + "cartesia", "11labs" ], "type": "string" @@ -6466,6 +7062,7 @@ "description": "The provider (e.g., 11labs)", "schema": { "enum": [ + "cartesia", "11labs" ], "type": "string" @@ -7518,14 +8115,19 @@ ] }, "model": { - "type": "string", "description": "This is the model that will be used for the transcription.", - "enum": [ - "scribe_v1" + "oneOf": [ + { + "enum": [ + "scribe_v1", + "scribe_v2_realtime" + ] + } ] }, "language": { "type": "string", + "description": "This is the language that will be used for the transcription.", "enum": [ "aa", "ab", @@ -7714,6 +8316,34 @@ "zu" ] }, + "silenceThresholdSeconds": { + "type": "number", + "description": "This is the number of seconds of silence before VAD commits (0.3-3.0).", + "minimum": 0.3, + "maximum": 3, + "example": 1.5 + }, + "confidenceThreshold": { + "type": "number", + "description": "This is the VAD sensitivity (0.1-0.9, lower indicates more sensitive).", + "minimum": 0.1, + "maximum": 0.9, + "example": 0.4 + }, + "minSpeechDurationMs": { + "type": "number", + "description": "This is the minimum speech duration for VAD (50-2000ms).", + "minimum": 50, + "maximum": 2000, + "example": 100 + }, + "minSilenceDurationMs": { + "type": "number", + "description": "This is the minimum silence duration for VAD (50-2000ms).", + "minimum": 50, + "maximum": 2000, + "example": 100 + }, "fallbackPlan": { "description": "This is the plan for voice provider fallbacks in the event that the primary voice provider fails.", "allOf": [ @@ -9343,14 +9973,19 @@ ] }, "model": { - "type": "string", "description": "This is the model that will be used for the transcription.", - "enum": [ - "scribe_v1" + "oneOf": [ + { + "enum": [ + "scribe_v1", + "scribe_v2_realtime" + ] + } ] }, "language": { "type": "string", + "description": "This is the language that will be used for the transcription.", "enum": [ "aa", "ab", @@ -9538,6 +10173,34 @@ "zh", "zu" ] + }, + "silenceThresholdSeconds": { + "type": "number", + "description": "This is the number of seconds of silence before VAD commits (0.3-3.0).", + "minimum": 0.3, + "maximum": 3, + "example": 1.5 + }, + "confidenceThreshold": { + "type": "number", + "description": "This is the VAD sensitivity (0.1-0.9, lower indicates more sensitive).", + "minimum": 0.1, + "maximum": 0.9, + "example": 0.4 + }, + "minSpeechDurationMs": { + "type": "number", + "description": "This is the minimum speech duration for VAD (50-2000ms).", + "minimum": 50, + "maximum": 2000, + "example": 100 + }, + "minSilenceDurationMs": { + "type": "number", + "description": "This is the minimum silence duration for VAD (50-2000ms).", + "minimum": 50, + "maximum": 2000, + "example": 100 } }, "required": [ @@ -18103,6 +18766,16 @@ "type": "boolean", "description": "This enables authentication on the `call.monitor.controlUrl`.\n\nIf `controlAuthenticationEnabled` is `true`, the `call.monitor.controlUrl` will require an `Authorization: Bearer ` header.\n\n@default false", "example": false + }, + "monitorIds": { + "description": "This the set of monitor ids that are attached to the assistant.\nThe source of truth for the monitor ids is the assistant_monitor join table.\nThis field can be used for transient assistants and to update assistants with new monitor ids.\n\n@default []", + "example": [ + "123e4567-e89b-12d3-a456-426614174000" + ], + "type": "array", + "items": { + "type": "string" + } } } }, @@ -21484,6 +22157,24 @@ "voiceId" ] }, + "VapiPronunciationDictionaryLocator": { + "type": "object", + "properties": { + "pronunciationDictId": { + "type": "string", + "description": "The pronunciation dictionary ID", + "example": "pdict_abc123" + }, + "versionId": { + "type": "string", + "description": "Version ID (only required for ElevenLabs, ignored for Cartesia)", + "example": "ver_abc123" + } + }, + "required": [ + "pronunciationDictId" + ] + }, "VapiVoice": { "type": "object", "properties": { @@ -21532,6 +22223,13 @@ "maximum": 2, "default": 1 }, + "pronunciationDictionary": { + "description": "List of pronunciation dictionary locators for custom word pronunciations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/VapiPronunciationDictionaryLocator" + } + }, "chunkPlan": { "description": "This is the plan for chunking the model output before it is sent to the voice provider.", "allOf": [ @@ -23727,6 +24425,13 @@ "maximum": 2, "default": 1 }, + "pronunciationDictionary": { + "description": "List of pronunciation dictionary locators for custom word pronunciations.", + "type": "array", + "items": { + "$ref": "#/components/schemas/VapiPronunciationDictionaryLocator" + } + }, "chunkPlan": { "description": "This is the plan for chunking the model output before it is sent to the voice provider.", "allOf": [ @@ -26567,7 +27272,7 @@ ] }, "monitorPlan": { - "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.", + "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.\n- To attach monitors to the assistant, set `monitorPlan.monitorIds` to the set of monitor ids.", "allOf": [ { "$ref": "#/components/schemas/MonitorPlan" @@ -27393,7 +28098,7 @@ ] }, "monitorPlan": { - "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.", + "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.\n- To attach monitors to the assistant, set `monitorPlan.monitorIds` to the set of monitor ids.", "allOf": [ { "$ref": "#/components/schemas/MonitorPlan" @@ -28219,7 +28924,7 @@ ] }, "monitorPlan": { - "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.", + "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.\n- To attach monitors to the assistant, set `monitorPlan.monitorIds` to the set of monitor ids.", "allOf": [ { "$ref": "#/components/schemas/MonitorPlan" @@ -29135,7 +29840,7 @@ ] }, "monitorPlan": { - "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.", + "description": "This is the plan for real-time monitoring of the assistant's calls.\n\nUsage:\n- To enable live listening of the assistant's calls, set `monitorPlan.listenEnabled` to `true`.\n- To enable live control of the assistant's calls, set `monitorPlan.controlEnabled` to `true`.\n- To attach monitors to the assistant, set `monitorPlan.monitorIds` to the set of monitor ids.", "allOf": [ { "$ref": "#/components/schemas/MonitorPlan" @@ -31774,6 +32479,46 @@ "exact" ] }, + "PhoneNumberCallRingingHookFilter": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of filter - matches when the specified field starts with any of the given prefixes", + "enum": [ + "startsWith" + ], + "maxLength": 1000 + }, + "key": { + "type": "string", + "description": "The field to check. Currently only \"number\" (the caller's phone number) is supported.", + "enum": [ + "number" + ], + "maxLength": 1000 + }, + "startsWith": { + "type": "array", + "description": "Array of prefixes to match. Do not include the + prefix. Inbound calls from numbers starting with any of these prefixes will trigger the hook actions.", + "maxLength": 20, + "items": { + "type": "string", + "maxLength": 20 + }, + "example": [ + "91", + "86", + "7" + ] + } + }, + "required": [ + "type", + "key", + "startsWith" + ] + }, "PhoneNumberHookCallRinging": { "type": "object", "properties": { @@ -31785,6 +32530,13 @@ ], "maxLength": 1000 }, + "filters": { + "type": "array", + "description": "Optional filters to decide when to trigger the hook. Currently supports filtering by caller country code.", + "items": { + "$ref": "#/components/schemas/PhoneNumberCallRingingHookFilter" + } + }, "do": { "type": "array", "description": "Only the first action will be executed. Additional actions will be ignored.", @@ -42552,13 +43304,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -42659,13 +43414,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -42781,13 +43539,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -42852,13 +43613,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -42948,13 +43712,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43010,13 +43777,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43080,13 +43850,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43125,13 +43898,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43195,13 +43971,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43261,13 +44040,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43335,13 +44117,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43384,13 +44169,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -43934,13 +44722,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -44000,13 +44791,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -44074,13 +44868,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -44123,13 +44920,16 @@ "items": { "oneOf": [ { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStringTypeColumn", + "title": "JSONQueryOnCallTableWithStringTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithNumberTypeColumn", + "title": "JSONQueryOnCallTableWithNumberTypeColumn" }, { - "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn" + "$ref": "#/components/schemas/JSONQueryOnCallTableWithStructuredOutputColumn", + "title": "JSONQueryOnCallTableWithStructuredOutputColumn" } ] } @@ -45829,50 +46629,582 @@ "id", "orgId", "createdAt", - "updatedAt", - "metrics" + "updatedAt", + "metrics" + ] + }, + "ScorecardPaginatedResponse": { + "type": "object", + "properties": { + "results": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Scorecard" + } + }, + "metadata": { + "$ref": "#/components/schemas/PaginationMeta" + } + }, + "required": [ + "results", + "metadata" + ] + }, + "UpdateScorecardDTO": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the scorecard. It is only for user reference and will not be used for any evaluation.", + "maxLength": 80 + }, + "description": { + "type": "string", + "description": "This is the description of the scorecard. It is only for user reference and will not be used for any evaluation.", + "maxLength": 500 + }, + "metrics": { + "description": "These are the metrics that will be used to evaluate the scorecard.\nEach metric will have a set of conditions and points that will be used to generate the score.", + "type": "array", + "items": { + "$ref": "#/components/schemas/ScorecardMetric" + } + }, + "assistantIds": { + "description": "These are the assistant IDs that this scorecard is linked to.\nWhen linked to assistants, this scorecard will be available for evaluation during those assistants' calls.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "IssueCall": { + "type": "object", + "properties": { + "callId": { + "type": "string", + "description": "This is the ID of the call associated with this issue." + }, + "failedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the call failed/triggered the issue." + } + }, + "required": [ + "callId" + ] + }, + "Issue": { + "type": "object", + "properties": { + "monitorId": { + "type": "string", + "description": "This is the ID of the monitor that triggered this issue." + }, + "policyId": { + "type": "string", + "description": "This is the ID of the policy that triggered this issue." + }, + "totalCalls": { + "type": "number", + "description": "This is the total number of calls made since created_at to determine percentage of calls affected." + }, + "calls": { + "description": "These are the calls associated with this issue.\nThis is only present when retrieving a single issue by ID.", + "type": "array", + "items": { + "$ref": "#/components/schemas/IssueCall" + } + }, + "status": { + "type": "string", + "description": "This is the status of the issue.", + "enum": [ + "created", + "acknowledged", + "resolved" + ] + }, + "acknowledgedBy": { + "type": "string", + "description": "This is the email/name of the user who acknowledged the issue.", + "maxLength": 255 + }, + "resolvedBy": { + "type": "string", + "description": "This is the email/name of the user who resolved the issue.", + "maxLength": 255 + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the issue." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this issue belongs to." + }, + "acknowledgedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the issue was acknowledged." + }, + "resolvedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the issue was resolved." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the issue was first detected." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the issue was last updated." + } + }, + "required": [ + "monitorId", + "policyId", + "totalCalls", + "status", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "ScorecardPaginatedResponse": { + "UpdateIssueDTO": { "type": "object", "properties": { - "results": { + "status": { + "type": "string", + "description": "This is the status of the issue.", + "enum": [ + "created", + "acknowledged", + "resolved" + ] + }, + "acknowledgedBy": { + "type": "string", + "description": "This is the email/name of the user who acknowledged the issue.", + "maxLength": 255 + }, + "resolvedBy": { + "type": "string", + "description": "This is the email/name of the user who resolved the issue.", + "maxLength": 255 + } + } + }, + "PolicyThreshold": { + "type": "object", + "properties": { + "type": { + "type": "string", + "description": "This is the type of threshold evaluation.", + "enum": [ + "count", + "percentage" + ], + "example": "percentage" + }, + "comparator": { + "type": "string", + "description": "This is the comparator operator for the threshold.", + "enum": [ + "lt", + "gt", + "eq", + "lte", + "gte", + "neq" + ], + "example": "gt" + }, + "value": { + "type": "number", + "description": "This is the value to compare against.", + "minimum": 0, + "example": 50 + } + }, + "required": [ + "type", + "comparator", + "value" + ] + }, + "PolicySchedule": { + "type": "object", + "properties": { + "second": { + "description": "Second(s) of the minute. Valid values: 0-59.\nCan be a single number or an array.\n@default 0", + "oneOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ], + "example": 0, + "default": 0 + }, + "minute": { + "description": "Minute(s) of the hour. Valid values: 0-59.\nCan be a single number or an array.\n@default 0", + "oneOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ], + "example": 30, + "default": 0 + }, + "hour": { + "description": "Hour(s) of the day. Valid values: 0-23.\nCan be a single number or an array for multiple times per day.\n@default 0", + "oneOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ], + "example": [ + 9, + 14, + 18 + ], + "default": 0 + }, + "dayOfMonth": { + "description": "Day(s) of the month. Valid values: 1-31.\nCan be a single number or an array. If not specified, matches any day.", + "oneOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ], + "example": [ + 1, + 15 + ] + }, + "month": { + "description": "Month(s) of the year. Use uppercase full names: JANUARY, FEBRUARY, etc.\nCan be a single month or an array. If not specified, matches any month.", + "oneOf": [ + { + "type": "string", + "enum": [ + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "JANUARY", + "FEBRUARY", + "MARCH", + "APRIL", + "MAY", + "JUNE", + "JULY", + "AUGUST", + "SEPTEMBER", + "OCTOBER", + "NOVEMBER", + "DECEMBER" + ] + } + } + ], + "example": [ + "JANUARY", + "APRIL", + "JULY" + ] + }, + "dayOfWeek": { + "description": "Day(s) of the week. Use uppercase full names: SUNDAY, MONDAY, etc.\nCan be a single day or an array. If not specified, matches any day.", + "oneOf": [ + { + "type": "string", + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ] + }, + { + "type": "array", + "items": { + "type": "string", + "enum": [ + "SUNDAY", + "MONDAY", + "TUESDAY", + "WEDNESDAY", + "THURSDAY", + "FRIDAY", + "SATURDAY" + ] + } + } + ], + "example": [ + "MONDAY", + "WEDNESDAY", + "FRIDAY" + ] + }, + "year": { + "description": "Year(s). Use full years like 2025.\nCan be a single number or an array. If not specified, matches any year.", + "oneOf": [ + { + "type": "number" + }, + { + "type": "array", + "items": { + "type": "number" + } + } + ], + "example": 2025 + } + } + }, + "Policy": { + "type": "object", + "properties": { + "monitorIds": { + "description": "These are the monitor IDs associated with this policy.\nThis is only present when retrieving a single policy by ID.", "type": "array", "items": { - "$ref": "#/components/schemas/Scorecard" + "type": "string" } }, - "metadata": { - "$ref": "#/components/schemas/PaginationMeta" + "name": { + "type": "string", + "description": "This is the name of the policy.", + "maxLength": 100, + "example": "High Error Rate Policy" + }, + "threshold": { + "description": "This is the threshold configuration for the policy.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyThreshold" + } + ] + }, + "lookbackWindowMinutes": { + "type": "number", + "description": "This is the lookback window in minutes. The policy will query events from the last N minutes.", + "minimum": 1, + "maximum": 1440, + "example": 60 + }, + "severity": { + "type": "string", + "description": "This is the severity level of issues created by this policy.", + "enum": [ + "error", + "warning", + "info" + ], + "example": "error" + }, + "schedule": { + "description": "This is the schedule configuration for when the policy should run.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicySchedule" + } + ] + }, + "id": { + "type": "string", + "description": "This is the unique identifier for the policy." + }, + "orgId": { + "type": "string", + "description": "This is the unique identifier for the org that this policy belongs to." + }, + "lastRunAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the policy was last run." + }, + "createdAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the policy was created." + }, + "updatedAt": { + "format": "date-time", + "type": "string", + "description": "This is the ISO 8601 date-time string of when the policy was last updated." } }, "required": [ - "results", - "metadata" + "name", + "threshold", + "lookbackWindowMinutes", + "severity", + "id", + "orgId", + "createdAt", + "updatedAt" ] }, - "UpdateScorecardDTO": { + "CreatePolicyDTO": { "type": "object", "properties": { "name": { "type": "string", - "description": "This is the name of the scorecard. It is only for user reference and will not be used for any evaluation.", - "maxLength": 80 + "description": "This is the name of the policy.", + "maxLength": 100, + "example": "High Error Rate Policy" }, - "description": { + "threshold": { + "description": "This is the threshold configuration for the policy.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyThreshold" + } + ] + }, + "lookbackWindowMinutes": { + "type": "number", + "description": "This is the lookback window in minutes. The policy will query events from the last N minutes.", + "minimum": 1, + "maximum": 1440, + "example": 60 + }, + "severity": { "type": "string", - "description": "This is the description of the scorecard. It is only for user reference and will not be used for any evaluation.", - "maxLength": 500 + "description": "This is the severity level of issues created by this policy.", + "enum": [ + "error", + "warning", + "info" + ], + "example": "error" }, - "metrics": { - "description": "These are the metrics that will be used to evaluate the scorecard.\nEach metric will have a set of conditions and points that will be used to generate the score.", + "schedule": { + "description": "This is the schedule configuration for when the policy should run.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicySchedule" + } + ] + }, + "monitorIds": { + "description": "These are the monitor IDs to associate with this policy.\nThis creates entries in the monitor-policy join table.", + "example": [ + "550e8400-e29b-41d4-a716-446655440000" + ], "type": "array", "items": { - "$ref": "#/components/schemas/ScorecardMetric" + "type": "string" } + } + }, + "required": [ + "name", + "threshold", + "lookbackWindowMinutes", + "severity" + ] + }, + "UpdatePolicyDTO": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "This is the name of the policy.", + "maxLength": 100, + "example": "High Error Rate Policy" }, - "assistantIds": { - "description": "These are the assistant IDs that this scorecard is linked to.\nWhen linked to assistants, this scorecard will be available for evaluation during those assistants' calls.", + "threshold": { + "description": "This is the threshold configuration for the policy.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicyThreshold" + } + ] + }, + "lookbackWindowMinutes": { + "type": "number", + "description": "This is the lookback window in minutes. The policy will query events from the last N minutes.", + "minimum": 1, + "maximum": 1440, + "example": 60 + }, + "severity": { + "type": "string", + "description": "This is the severity level of issues created by this policy.", + "enum": [ + "error", + "warning", + "info" + ], + "example": "error" + }, + "schedule": { + "description": "This is the schedule configuration for when the policy should run.", + "allOf": [ + { + "$ref": "#/components/schemas/PolicySchedule" + } + ] + }, + "monitorIds": { + "description": "These are the monitor IDs to associate with this policy.\nThis creates entries in the monitor-policy join table.", + "example": [ + "550e8400-e29b-41d4-a716-446655440000" + ], "type": "array", "items": { "type": "string" @@ -52092,6 +53424,70 @@ } } }, + "CartesiaPronunciationDictItem": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The text to be replaced in pronunciation", + "example": "Vapi" + }, + "alias": { + "type": "string", + "description": "The pronunciation alias or IPA representation\nCan be a \"sounds-like\" guidance (e.g., \"VAH-pee\") or IPA notation (e.g., \"<<ˈ|v|ɑ|ˈ|p|i>>\")", + "example": "VAH-pee" + } + }, + "required": [ + "text", + "alias" + ] + }, + "CartesiaPronunciationDictionary": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "Unique identifier for the pronunciation dictionary", + "example": "dict_abc123" + }, + "name": { + "type": "string", + "description": "Name of the pronunciation dictionary", + "example": "My Dictionary" + }, + "ownerId": { + "type": "string", + "description": "ID of the user who owns this dictionary", + "example": "user_xyz789" + }, + "pinned": { + "type": "boolean", + "description": "Whether this dictionary is pinned for the user", + "example": false + }, + "items": { + "description": "List of text-to-pronunciation mappings", + "type": "array", + "items": { + "$ref": "#/components/schemas/CartesiaPronunciationDictItem" + } + }, + "createdAt": { + "type": "string", + "description": "ISO 8601 timestamp of when the dictionary was created", + "example": "2024-01-15T10:30:00Z" + } + }, + "required": [ + "id", + "name", + "ownerId", + "pinned", + "items", + "createdAt" + ] + }, "ElevenLabsPronunciationDictionary": { "type": "object", "properties": { @@ -52174,6 +53570,7 @@ "type": "string", "description": "This is the provider that manages this resource.", "enum": [ + "cartesia", "11labs" ] }, @@ -52189,12 +53586,8 @@ "description": "This is the provider-specific identifier for the resource." }, "resource": { - "description": "This is the full resource data from the provider's API.", - "allOf": [ - { - "$ref": "#/components/schemas/ElevenLabsPronunciationDictionary" - } - ] + "type": "object", + "description": "This is the full resource data from the provider's API." } }, "required": [