97 lines
2.1 KiB
JSON
97 lines
2.1 KiB
JSON
{
|
|
"name": "Conversation",
|
|
"type": "object",
|
|
"properties": {
|
|
"participants": {
|
|
"type": "array",
|
|
"description": "Array of participant IDs/emails",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string",
|
|
"enum": [
|
|
"client",
|
|
"vendor",
|
|
"staff",
|
|
"admin"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"conversation_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"client-vendor",
|
|
"staff-client",
|
|
"staff-admin",
|
|
"vendor-admin",
|
|
"client-admin",
|
|
"group-staff",
|
|
"group-event-staff"
|
|
],
|
|
"description": "Type of conversation"
|
|
},
|
|
"is_group": {
|
|
"type": "boolean",
|
|
"default": false,
|
|
"description": "Whether this is a group conversation"
|
|
},
|
|
"group_name": {
|
|
"type": "string",
|
|
"description": "Name of the group (e.g., 'All Active Staff', 'Event #123 Team')"
|
|
},
|
|
"related_to": {
|
|
"type": "string",
|
|
"description": "ID of related entity (event_id, order_id, etc.)"
|
|
},
|
|
"related_type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"event",
|
|
"staff",
|
|
"business",
|
|
"general"
|
|
],
|
|
"description": "Type of related entity"
|
|
},
|
|
"subject": {
|
|
"type": "string",
|
|
"description": "Conversation subject/title"
|
|
},
|
|
"last_message": {
|
|
"type": "string",
|
|
"description": "Preview of last message"
|
|
},
|
|
"last_message_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"description": "Timestamp of last message"
|
|
},
|
|
"unread_count": {
|
|
"type": "number",
|
|
"default": 0,
|
|
"description": "Number of unread messages"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"active",
|
|
"archived",
|
|
"closed"
|
|
],
|
|
"default": "active"
|
|
}
|
|
},
|
|
"required": [
|
|
"participants",
|
|
"conversation_type"
|
|
]
|
|
} |