@verisure-italy/overbooking-types
v1.7.13
Published
Types for Overbooking service
Readme
@verisure-italy/overbooking-types
Domain contracts for overbooking rules and percentage-based allocation strategies.
Installation
pnpm add @verisure-italy/overbooking-typesMain Exports
overbookingAllocationTypes,overbookingAllocationTypeSchema,type OverbookingAllocationTypeactivationSchemaallocationSchemasettingSchema
What This Package Gives You
- a discriminated union for activation windows
- a validated allocation map constrained to 100 total percent
- a full settings object that can scope allocation by channel and ZIP code
Schema Inventory
| Schema | Type alias | Kind | Purpose |
| --- | --- | --- | --- |
| overbookingAllocationTypeSchema | OverbookingAllocationType | enum | Allocation buckets |
| activationSchema | n/a | discriminated union | Activation strategy |
| allocationSchema | n/a | record schema | Percentage map |
| settingSchema | Setting | object schema | Full overbooking rule |
Enum Reference
overbookingAllocationTypeSchema
Values:
frontkotelesalesecommerce
Schema Reference
activationSchema
| Variant | Fields |
| --- | --- |
| boolean | value.alwaysActive: boolean |
| time_range | value.from: Date, value.to: Date, value.days: DayOfWeek[] with at least one entry |
allocationSchema
| Rule | Value |
| --- | --- |
| Shape | Record<OverbookingAllocationType, number> |
| Required | Yes |
| Validation | Every value must be between 0 and 100, and the total must equal 100 |
settingSchema
| Field | Type | Required | Notes |
| --- | --- | --- | --- |
| id | string | Yes | UUID |
| name | string | Yes | Non-empty |
| outOfArea | boolean | No (default) | Defaults to false |
| channels | '*' \| string[] | Yes | Wildcard or a non-empty UUID array |
| zipCodes | ZipCode[] | Yes | At least one ZIP code |
| activation | Activation | Yes | Activation union |
| allocation | allocation map | Yes | Must sum to 100 |
| createdAt | number | Yes | Shared timestamp |
| updatedAt | number | Yes | Shared timestamp |
Example
import { settingSchema } from '@verisure-italy/overbooking-types'
const setting = settingSchema.parse({
id: '550e8400-e29b-41d4-a716-446655440000',
name: 'Default front allocation',
outOfArea: false,
channels: '*',
zipCodes: ['20100'],
activation: {
type: 'boolean',
value: {
alwaysActive: true,
},
},
allocation: {
front: 25,
ko: 25,
telesales: 25,
ecommerce: 25,
},
createdAt: 1,
updatedAt: 1,
})