fix: fix circuit breaker failure recording

fix: fix circuit breaker failure recording
chore: provide advanced configuration option in UI for campaigns
This commit is contained in:
Abhishek Kumar 2026-03-05 13:43:13 +05:30
parent 628132f29b
commit 3ea235a666
17 changed files with 448 additions and 58 deletions

File diff suppressed because one or more lines are too long

View file

@ -82,10 +82,11 @@ export type AuthUserResponse = {
export type CallType = 'inbound' | 'outbound';
export type CampaignLimitsResponse = {
export type CampaignDefaultsResponse = {
concurrent_call_limit: number;
from_numbers_count: number;
default_retry_config: RetryConfigResponse;
last_campaign_settings?: LastCampaignSettingsResponse | null;
};
export type CampaignProgressResponse = {
@ -120,6 +121,7 @@ export type CampaignResponse = {
retry_config: RetryConfigResponse;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigResponse | null;
circuit_breaker?: CircuitBreakerConfigResponse | null;
};
/**
@ -192,6 +194,20 @@ export type ChunkSearchResponseSchema = {
total_results: number;
};
export type CircuitBreakerConfigRequest = {
enabled?: boolean;
failure_threshold?: number;
window_seconds?: number;
min_calls_in_window?: number;
};
export type CircuitBreakerConfigResponse = {
enabled: boolean;
failure_threshold: number;
window_seconds: number;
min_calls_in_window: number;
};
/**
* Request schema for Cloudonix configuration.
*/
@ -241,6 +257,7 @@ export type CreateCampaignRequest = {
retry_config?: RetryConfigRequest | null;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigRequest | null;
circuit_breaker?: CircuitBreakerConfigRequest | null;
};
/**
@ -715,6 +732,13 @@ export type IntegrationResponse = {
export type ItemKind = 'node' | 'edge' | 'workflow';
export type LastCampaignSettingsResponse = {
retry_config?: RetryConfigResponse | null;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigResponse | null;
circuit_breaker?: CircuitBreakerConfigResponse | null;
};
export type LoadTestStatsResponse = {
total: number;
pending: number;
@ -949,7 +973,7 @@ export type ToolResponse = {
*/
export type TransferCallConfig = {
/**
* Phone number to transfer the call to (E.164 format, e.g., +1234567890)
* Phone number or SIP endpoint to transfer the call to (E.164 format e.g., +1234567890, or SIP endpoint e.g., PJSIP/1234)
*/
destination: string;
/**
@ -1058,6 +1082,7 @@ export type UpdateCampaignRequest = {
retry_config?: RetryConfigRequest | null;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigRequest | null;
circuit_breaker?: CircuitBreakerConfigRequest | null;
};
/**
@ -1574,6 +1599,35 @@ export type HandleCloudonixStatusCallbackApiV1TelephonyCloudonixStatusCallbackWo
200: unknown;
};
export type HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostData = {
body?: never;
path: {
workflow_run_id: number;
};
query?: never;
url: '/api/v1/telephony/cloudonix/amd-callback/{workflow_run_id}';
};
export type HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostErrors = {
/**
* Not found
*/
404: unknown;
/**
* Validation Error
*/
422: HttpValidationError;
};
export type HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostError = HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostErrors[keyof HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostErrors];
export type HandleCloudonixAmdCallbackApiV1TelephonyCloudonixAmdCallbackWorkflowRunIdPostResponses = {
/**
* Successful Response
*/
200: unknown;
};
export type HandleVobizHangupCallbackByWorkflowApiV1TelephonyVobizHangupCallbackWorkflowWorkflowIdPostData = {
body?: never;
headers?: {
@ -3593,7 +3647,7 @@ export type SaveTelephonyConfigurationApiV1OrganizationsTelephonyConfigPostRespo
200: unknown;
};
export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetData = {
export type GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetData = {
body?: never;
headers?: {
authorization?: string | null;
@ -3601,10 +3655,10 @@ export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetData = {
};
path?: never;
query?: never;
url: '/api/v1/organizations/campaign-limits';
url: '/api/v1/organizations/campaign-defaults';
};
export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetErrors = {
export type GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetErrors = {
/**
* Not found
*/
@ -3615,16 +3669,16 @@ export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetErrors = {
422: HttpValidationError;
};
export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetError = GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetErrors[keyof GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetErrors];
export type GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetError = GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetErrors[keyof GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetErrors];
export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetResponses = {
export type GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetResponses = {
/**
* Successful Response
*/
200: CampaignLimitsResponse;
200: CampaignDefaultsResponse;
};
export type GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetResponse = GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetResponses[keyof GetCampaignLimitsApiV1OrganizationsCampaignLimitsGetResponses];
export type GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetResponse = GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetResponses[keyof GetCampaignDefaultsApiV1OrganizationsCampaignDefaultsGetResponses];
export type GetSignedUrlApiV1S3SignedUrlGetData = {
body?: never;