mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-22 08:21:13 -05:00
add broadcast message crud
new blueprint `/service/<id>/broadcast-message` with the following endpoints: * GET / - get all broadcast messages for a service * GET /<id> - get a single broadcast message * POST / - create a new broadcast message * POST /<id> - update an existing broadcast message's data * POST /<id>/status - move a broadcast message to a new status I've kept the regular data update (eg personalisation, start and end times) separate from the status update, just to keep separation of concerns a bit more rigid, especially around who can update. I've included schemas for the three POSTs, they're pretty straightforward.
This commit is contained in:
48
app/broadcast_message/broadcast_message_schema.py
Normal file
48
app/broadcast_message/broadcast_message_schema.py
Normal file
@@ -0,0 +1,48 @@
|
||||
from app.schema_validation.definitions import uuid
|
||||
from app.models import BroadcastStatusType
|
||||
|
||||
create_broadcast_message_schema = {
|
||||
'$schema': 'http://json-schema.org/draft-04/schema#',
|
||||
'description': 'POST create broadcast_message schema',
|
||||
'type': 'object',
|
||||
'title': 'Create broadcast_message',
|
||||
'properties': {
|
||||
'template_id': uuid,
|
||||
'service_id': uuid,
|
||||
'created_by': uuid,
|
||||
'personalisation': {'type': 'object'},
|
||||
'starts_at': {'type': 'string', 'format': 'date-time'},
|
||||
'finishes_at': {'type': 'string', 'format': 'date-time'},
|
||||
'areas': {"type": "array", "items": {"type": "string"}},
|
||||
},
|
||||
'required': ['template_id', 'service_id', 'created_by'],
|
||||
'additionalProperties': False
|
||||
}
|
||||
|
||||
update_broadcast_message_schema = {
|
||||
'$schema': 'http://json-schema.org/draft-04/schema#',
|
||||
'description': 'POST update broadcast_message schema',
|
||||
'type': 'object',
|
||||
'title': 'Update broadcast_message',
|
||||
'properties': {
|
||||
'personalisation': {'type': 'object'},
|
||||
'starts_at': {'type': 'string', 'format': 'date-time'},
|
||||
'finishes_at': {'type': 'string', 'format': 'date-time'},
|
||||
'areas': {"type": "array", "items": {"type": "string"}},
|
||||
},
|
||||
'required': [],
|
||||
'additionalProperties': False
|
||||
}
|
||||
|
||||
update_broadcast_message_status_schema = {
|
||||
'$schema': 'http://json-schema.org/draft-04/schema#',
|
||||
'description': 'POST update broadcast_message status schema',
|
||||
'type': 'object',
|
||||
'title': 'Update broadcast_message',
|
||||
'properties': {
|
||||
'status': {'type': 'string', 'enum': BroadcastStatusType.STATUSES},
|
||||
'created_by': uuid,
|
||||
},
|
||||
'required': ['status', 'created_by'],
|
||||
'additionalProperties': False
|
||||
}
|
||||
Reference in New Issue
Block a user