322 lines
7.3 KiB
JSON
322 lines
7.3 KiB
JSON
{
|
|
"name": "Event",
|
|
"type": "object",
|
|
"properties": {
|
|
"event_name": {
|
|
"type": "string",
|
|
"description": "Name of the event"
|
|
},
|
|
"is_rapid": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Is this a RAPID/urgent order"
|
|
},
|
|
"is_recurring": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Is this a recurring event"
|
|
},
|
|
"is_multi_day": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Is this a multi-day event"
|
|
},
|
|
"recurrence_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"single",
|
|
"date_range",
|
|
"scatter"
|
|
],
|
|
"description": "Type of recurrence: single, date_range, or scatter"
|
|
},
|
|
"recurrence_start_date": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "Start date for recurring events"
|
|
},
|
|
"recurrence_end_date": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "End date for recurring events"
|
|
},
|
|
"scatter_dates": {
|
|
"type": "array",
|
|
"description": "Array of specific dates for scatter recurring",
|
|
"items": {
|
|
"type": "string",
|
|
"format": "date"
|
|
}
|
|
},
|
|
"multi_day_start_date": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "Start date for multi-day events"
|
|
},
|
|
"multi_day_end_date": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "End date for multi-day events"
|
|
},
|
|
"buffer_time_before": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"description": "Buffer time in minutes before event"
|
|
},
|
|
"buffer_time_after": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"description": "Buffer time in minutes after event"
|
|
},
|
|
"conflict_detection_enabled": {
|
|
"type": "boolean",
|
|
"default": true,
|
|
"description": "Whether to check for conflicts"
|
|
},
|
|
"detected_conflicts": {
|
|
"type": "array",
|
|
"description": "Array of detected conflicts",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"conflict_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"staff_overlap",
|
|
"venue_overlap",
|
|
"time_buffer"
|
|
]
|
|
},
|
|
"severity": {
|
|
"type": "string",
|
|
"enum": [
|
|
"low",
|
|
"medium",
|
|
"high",
|
|
"critical"
|
|
]
|
|
},
|
|
"description": {
|
|
"type": "string"
|
|
},
|
|
"conflicting_event_id": {
|
|
"type": "string"
|
|
},
|
|
"staff_id": {
|
|
"type": "string"
|
|
},
|
|
"detected_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"business_id": {
|
|
"type": "string",
|
|
"description": "Associated business ID"
|
|
},
|
|
"business_name": {
|
|
"type": "string",
|
|
"description": "Business name"
|
|
},
|
|
"vendor_id": {
|
|
"type": "string",
|
|
"description": "Vendor ID if created by vendor"
|
|
},
|
|
"vendor_name": {
|
|
"type": "string",
|
|
"description": "Vendor name if created by vendor"
|
|
},
|
|
"hub": {
|
|
"type": "string",
|
|
"description": "Hub location for the event"
|
|
},
|
|
"event_location": {
|
|
"type": "string",
|
|
"description": "Event location address"
|
|
},
|
|
"contract_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"W2",
|
|
"1099",
|
|
"Temp",
|
|
"Contract"
|
|
],
|
|
"description": "Type of contract"
|
|
},
|
|
"po_reference": {
|
|
"type": "string",
|
|
"description": "Purchase order reference number"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Draft",
|
|
"Active",
|
|
"Pending",
|
|
"Assigned",
|
|
"Confirmed",
|
|
"Completed",
|
|
"Canceled"
|
|
],
|
|
"default": "Draft"
|
|
},
|
|
"date": {
|
|
"type": "string",
|
|
"format": "date",
|
|
"description": "Event date (for single events)"
|
|
},
|
|
"requested": {
|
|
"type": "number",
|
|
"description": "Total number of staff requested for this event",
|
|
"default": 0
|
|
},
|
|
"assigned_staff": {
|
|
"type": "array",
|
|
"description": "Array of assigned staff members",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"staff_id": {
|
|
"type": "string"
|
|
},
|
|
"staff_name": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"shifts": {
|
|
"type": "array",
|
|
"description": "Array of shifts for this event",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"shift_name": {
|
|
"type": "string"
|
|
},
|
|
"shift_contact": {
|
|
"type": "string"
|
|
},
|
|
"location": {
|
|
"type": "string"
|
|
},
|
|
"location_address": {
|
|
"type": "string"
|
|
},
|
|
"roles": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"department": {
|
|
"type": "string"
|
|
},
|
|
"count": {
|
|
"type": "number"
|
|
},
|
|
"start_time": {
|
|
"type": "string"
|
|
},
|
|
"end_time": {
|
|
"type": "string"
|
|
},
|
|
"hours": {
|
|
"type": "number"
|
|
},
|
|
"uniform": {
|
|
"type": "string"
|
|
},
|
|
"break_minutes": {
|
|
"type": "number"
|
|
},
|
|
"cost_per_hour": {
|
|
"type": "number"
|
|
},
|
|
"total_value": {
|
|
"type": "number"
|
|
},
|
|
"vendor_name": {
|
|
"type": "string"
|
|
},
|
|
"vendor_id": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"addons": {
|
|
"type": "object",
|
|
"properties": {
|
|
"goal": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"text": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"portal_access": {
|
|
"type": "boolean"
|
|
},
|
|
"meal_provided": {
|
|
"type": "boolean"
|
|
},
|
|
"travel_time": {
|
|
"type": "boolean"
|
|
},
|
|
"tips": {
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"amount": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"total": {
|
|
"type": "number",
|
|
"description": "Total cost"
|
|
},
|
|
"client_name": {
|
|
"type": "string"
|
|
},
|
|
"client_email": {
|
|
"type": "string"
|
|
},
|
|
"client_phone": {
|
|
"type": "string"
|
|
},
|
|
"invoice_id": {
|
|
"type": "string",
|
|
"description": "Associated invoice ID"
|
|
},
|
|
"notes": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"event_name"
|
|
]
|
|
} |