138 lines
3.0 KiB
JSON
138 lines
3.0 KiB
JSON
{
|
|
"name": "Announcement",
|
|
"type": "object",
|
|
"properties": {
|
|
"team_id": {
|
|
"type": "string",
|
|
"description": "ID of the team that created this announcement"
|
|
},
|
|
"vendor_id": {
|
|
"type": "string",
|
|
"description": "Vendor/owner ID"
|
|
},
|
|
"title": {
|
|
"type": "string",
|
|
"description": "Announcement headline"
|
|
},
|
|
"body": {
|
|
"type": "string",
|
|
"description": "Full announcement content/message"
|
|
},
|
|
"flyer_url": {
|
|
"type": "string",
|
|
"description": "URL to uploaded flyer image"
|
|
},
|
|
"audience": {
|
|
"type": "array",
|
|
"description": "Who can see this announcement",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"all",
|
|
"vendor",
|
|
"client",
|
|
"workforce",
|
|
"procurement",
|
|
"operator",
|
|
"sector",
|
|
"admin"
|
|
]
|
|
}
|
|
},
|
|
"specific_recipients": {
|
|
"type": "array",
|
|
"description": "Specific individual staff members to send this announcement to",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"staff_id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"email": {
|
|
"type": "string"
|
|
},
|
|
"phone": {
|
|
"type": "string"
|
|
},
|
|
"position": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"draft",
|
|
"scheduled",
|
|
"active",
|
|
"paused",
|
|
"expired"
|
|
],
|
|
"default": "draft",
|
|
"description": "Current status of the announcement"
|
|
},
|
|
"priority": {
|
|
"type": "string",
|
|
"enum": [
|
|
"low",
|
|
"normal",
|
|
"high",
|
|
"urgent"
|
|
],
|
|
"default": "normal",
|
|
"description": "Announcement priority/urgency level"
|
|
},
|
|
"publish_date": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Scheduled publish date and time"
|
|
},
|
|
"expire_date": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "When the announcement stops being visible"
|
|
},
|
|
"send_email": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Whether to also send this as an email to audience"
|
|
},
|
|
"send_push": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Whether to send push notification"
|
|
},
|
|
"pin_to_top": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Pin this announcement to top of feed"
|
|
},
|
|
"view_count": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"description": "Number of views"
|
|
},
|
|
"tags": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"description": "Tags for categorization"
|
|
},
|
|
"created_by_name": {
|
|
"type": "string",
|
|
"description": "Name of user who created the announcement"
|
|
}
|
|
},
|
|
"required": [
|
|
"team_id",
|
|
"title",
|
|
"body",
|
|
"audience",
|
|
"status"
|
|
]
|
|
} |