diff --git a/src/resources/simulations/operations/create-simulation-request-body.ts b/src/resources/simulations/operations/create-simulation-request-body.ts index 6457816..8425110 100644 --- a/src/resources/simulations/operations/create-simulation-request-body.ts +++ b/src/resources/simulations/operations/create-simulation-request-body.ts @@ -1,15 +1,11 @@ -/** - * ! Autogenerated code ! - * Do not make changes to this file. - * Changes may be overwritten as part of auto-generation. - */ - import type { SimulationScenarioType } from '../../../enums'; import type { IEventName } from '../../../notifications'; +import type { DiscriminatedSimulationEventResponse } from '../../../types'; -export interface CreateSimulationRequestBody { +interface BaseCreateSimulationRequestBody { notificationSettingId: string; - type: IEventName | SimulationScenarioType; name: string; - payload?: any; + type: IEventName | SimulationScenarioType; } + +export type CreateSimulationRequestBody = DiscriminatedSimulationEventResponse; diff --git a/src/resources/simulations/operations/update-simulation-request-body.ts b/src/resources/simulations/operations/update-simulation-request-body.ts index ec4413c..5e36375 100644 --- a/src/resources/simulations/operations/update-simulation-request-body.ts +++ b/src/resources/simulations/operations/update-simulation-request-body.ts @@ -1,16 +1,15 @@ -/** - * ! Autogenerated code ! - * Do not make changes to this file. - * Changes may be overwritten as part of auto-generation. - */ +import type { Status } from '../../../enums'; +import type { DiscriminatedSimulationEventResponse } from '../../../types'; -import type { SimulationScenarioType, Status } from '../../../enums'; -import type { IEventName } from '../../../notifications'; - -export interface UpdateSimulationRequestBody { +interface BaseUpdateSimulationRequestBody { notificationSettingId?: string; name?: string; status?: Status; - type?: IEventName | SimulationScenarioType; - payload?: any; } + +type RawUpdateSimulationRequestBody = DiscriminatedSimulationEventResponse; + +// Map all properties to be optional +export type UpdateSimulationRequestBody = { + [Key in keyof RawUpdateSimulationRequestBody]?: RawUpdateSimulationRequestBody[Key]; +}; diff --git a/src/types/shared/index.ts b/src/types/shared/index.ts index 230fc7f..730fb86 100644 --- a/src/types/shared/index.ts +++ b/src/types/shared/index.ts @@ -35,3 +35,4 @@ export * from './custom-data'; export * from './import-meta-response'; export * from './simulation-event-request'; export * from './simulation-event-response'; +export * from './simulation-payload'; diff --git a/src/types/shared/simulation-payload.ts b/src/types/shared/simulation-payload.ts new file mode 100644 index 0000000..7359796 --- /dev/null +++ b/src/types/shared/simulation-payload.ts @@ -0,0 +1,102 @@ +import type { IEventName } from '../../notifications'; +import { + type AddressCreatedEvent, + type AddressImportedEvent, + type AddressUpdatedEvent, + type AdjustmentCreatedEvent, + type AdjustmentUpdatedEvent, + type BusinessCreatedEvent, + type BusinessImportedEvent, + type BusinessUpdatedEvent, + type CustomerCreatedEvent, + type CustomerImportedEvent, + type CustomerUpdatedEvent, + type DiscountCreatedEvent, + type DiscountImportedEvent, + type DiscountUpdatedEvent, + type PayoutCreatedEvent, + type PayoutPaidEvent, + type PriceCreatedEvent, + type PriceImportedEvent, + type PriceUpdatedEvent, + type ProductCreatedEvent, + type ProductImportedEvent, + type ProductUpdatedEvent, + type ReportCreatedEvent, + type ReportUpdatedEvent, + type SubscriptionActivatedEvent, + type SubscriptionCanceledEvent, + type SubscriptionCreatedEvent, + type SubscriptionImportedEvent, + type SubscriptionPastDueEvent, + type SubscriptionPausedEvent, + type SubscriptionResumedEvent, + type SubscriptionTrialingEvent, + type SubscriptionUpdatedEvent, + type TransactionBilledEvent, + type TransactionCanceledEvent, + type TransactionCompletedEvent, + type TransactionCreatedEvent, + type TransactionPaidEvent, + type TransactionPastDueEvent, + type TransactionPaymentFailedEvent, + type TransactionReadyEvent, + type TransactionUpdatedEvent, +} from '../../notifications/events'; + +interface SimulationEventPayloadMap { + 'address.created': AddressCreatedEvent; + 'address.updated': AddressUpdatedEvent; + 'address.imported': AddressImportedEvent; + 'adjustment.created': AdjustmentCreatedEvent; + 'adjustment.updated': AdjustmentUpdatedEvent; + 'business.created': BusinessCreatedEvent; + 'business.updated': BusinessUpdatedEvent; + 'business.imported': BusinessImportedEvent; + 'customer.created': CustomerCreatedEvent; + 'customer.updated': CustomerUpdatedEvent; + 'customer.imported': CustomerImportedEvent; + 'discount.created': DiscountCreatedEvent; + 'discount.updated': DiscountUpdatedEvent; + 'discount.imported': DiscountImportedEvent; + 'payout.created': PayoutCreatedEvent; + 'payout.paid': PayoutPaidEvent; + 'price.created': PriceCreatedEvent; + 'price.updated': PriceUpdatedEvent; + 'price.imported': PriceImportedEvent; + 'product.created': ProductCreatedEvent; + 'product.updated': ProductUpdatedEvent; + 'product.imported': ProductImportedEvent; + 'subscription.created': SubscriptionCreatedEvent; + 'subscription.past_due': SubscriptionPastDueEvent; + 'subscription.activated': SubscriptionActivatedEvent; + 'subscription.canceled': SubscriptionCanceledEvent; + 'subscription.imported': SubscriptionImportedEvent; + 'subscription.paused': SubscriptionPausedEvent; + 'subscription.resumed': SubscriptionResumedEvent; + 'subscription.trialing': SubscriptionTrialingEvent; + 'subscription.updated': SubscriptionUpdatedEvent; + 'transaction.billed': TransactionBilledEvent; + 'transaction.canceled': TransactionCanceledEvent; + 'transaction.completed': TransactionCompletedEvent; + 'transaction.created': TransactionCreatedEvent; + 'transaction.paid': TransactionPaidEvent; + 'transaction.past_due': TransactionPastDueEvent; + 'transaction.payment_failed': TransactionPaymentFailedEvent; + 'transaction.ready': TransactionReadyEvent; + 'transaction.updated': TransactionUpdatedEvent; + 'report.created': ReportCreatedEvent; + 'report.updated': ReportUpdatedEvent; + subscription_creation: never; + subscription_renewal: never; + subscription_pause: never; + subscription_resume: never; + subscription_cancellation: never; +} + +export type DiscriminatedSimulationEventResponse = { + [K in keyof SimulationEventPayloadMap]: Base & { + type: K; + payload?: K extends IEventName ? Partial | null : null; + }; +}[keyof SimulationEventPayloadMap]; diff --git a/src/types/simulation/simulation-response.ts b/src/types/simulation/simulation-response.ts index 2433620..2fd6d84 100644 --- a/src/types/simulation/simulation-response.ts +++ b/src/types/simulation/simulation-response.ts @@ -1,19 +1,13 @@ -/** - * ! Autogenerated code ! - * Do not make changes to this file. - * Changes may be overwritten as part of auto-generation. - */ +import type { Status } from '../../enums'; +import type { DiscriminatedSimulationEventResponse } from '../shared/simulation-payload'; -import type { SimulationScenarioType, Status } from '../../enums'; -import type { IEventName } from '../../notifications'; +export type ISimulationResponse = DiscriminatedSimulationEventResponse; -export interface ISimulationResponse { +interface BaseSimulationResponse { id: string; status: Status; notification_setting_id: string; name: string; - type: IEventName | SimulationScenarioType; - payload?: any; last_run_at?: string | null; created_at: string; updated_at: string;