Feat/campaign enhancements (#163)

* feat: add circuit breaker to safeguard

* feat: Add Circuit breaker in campaigns to safeguard against telephony failures

* feat: add schedules in campaigns
This commit is contained in:
Abhishek 2026-02-17 21:04:15 +05:30 committed by GitHub
parent 7552b6c819
commit fe4ea648e4
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 2037 additions and 149 deletions

File diff suppressed because one or more lines are too long

View file

@ -124,6 +124,7 @@ export type CampaignResponse = {
completed_at: string | null;
retry_config: RetryConfigResponse;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigResponse | null;
};
/**
@ -244,6 +245,7 @@ export type CreateCampaignRequest = {
source_id: string;
retry_config?: RetryConfigRequest | null;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigRequest | null;
};
/**
@ -777,6 +779,18 @@ export type S3SignedUrlResponse = {
expires_in: number;
};
export type ScheduleConfigRequest = {
enabled?: boolean;
timezone?: string;
slots: Array<TimeSlotRequest>;
};
export type ScheduleConfigResponse = {
enabled: boolean;
timezone: string;
slots: Array<TimeSlotResponse>;
};
export type ServiceKeyResponse = {
name: string;
id: number;
@ -862,6 +876,18 @@ export type TestSessionResponse = {
completed_at: string | null;
};
export type TimeSlotRequest = {
day_of_week: number;
start_time: string;
end_time: string;
};
export type TimeSlotResponse = {
day_of_week: number;
start_time: string;
end_time: string;
};
/**
* A parameter that the tool accepts.
*/
@ -1013,6 +1039,13 @@ export type TwilioConfigurationResponse = {
from_numbers: Array<string>;
};
export type UpdateCampaignRequest = {
name?: string | null;
retry_config?: RetryConfigRequest | null;
max_concurrency?: number | null;
schedule_config?: ScheduleConfigRequest | null;
};
/**
* Request schema for updating a webhook credential.
*/
@ -2727,6 +2760,41 @@ export type GetCampaignApiV1CampaignCampaignIdGetResponses = {
export type GetCampaignApiV1CampaignCampaignIdGetResponse = GetCampaignApiV1CampaignCampaignIdGetResponses[keyof GetCampaignApiV1CampaignCampaignIdGetResponses];
export type UpdateCampaignApiV1CampaignCampaignIdPatchData = {
body: UpdateCampaignRequest;
headers?: {
authorization?: string | null;
'X-API-Key'?: string | null;
};
path: {
campaign_id: number;
};
query?: never;
url: '/api/v1/campaign/{campaign_id}';
};
export type UpdateCampaignApiV1CampaignCampaignIdPatchErrors = {
/**
* Not found
*/
404: unknown;
/**
* Validation Error
*/
422: HttpValidationError;
};
export type UpdateCampaignApiV1CampaignCampaignIdPatchError = UpdateCampaignApiV1CampaignCampaignIdPatchErrors[keyof UpdateCampaignApiV1CampaignCampaignIdPatchErrors];
export type UpdateCampaignApiV1CampaignCampaignIdPatchResponses = {
/**
* Successful Response
*/
200: CampaignResponse;
};
export type UpdateCampaignApiV1CampaignCampaignIdPatchResponse = UpdateCampaignApiV1CampaignCampaignIdPatchResponses[keyof UpdateCampaignApiV1CampaignCampaignIdPatchResponses];
export type StartCampaignApiV1CampaignCampaignIdStartPostData = {
body?: never;
headers?: {