Files
notifications-api/app/v2/notifications/notification_schemas.py
T

276 lines
8.8 KiB
Python
Raw Normal View History

from app.models import (
NOTIFICATION_STATUS_LETTER_ACCEPTED,
NOTIFICATION_STATUS_LETTER_RECEIVED,
2021-03-10 13:55:06 +00:00
NOTIFICATION_STATUS_TYPES,
NOTIFICATION_TYPES,
)
2021-03-10 13:55:06 +00:00
from app.schema_validation.definitions import personalisation, uuid
2016-11-21 15:42:17 +00:00
template = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2016-11-21 15:42:17 +00:00
"description": "template schema",
"type": "object",
"title": "notification content",
"properties": {
"id": uuid,
"version": {"type": "integer"},
2016-12-15 16:37:40 +00:00
"uri": {"type": "string", "format": "uri"}
2016-11-21 15:42:17 +00:00
},
"required": ["id", "version", "uri"]
}
notification_by_id = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "GET notification response schema",
"type": "object",
"title": "response v2/notification",
"properties": {
"notification_id": uuid
},
"required": ["notification_id"]
}
2016-11-21 15:42:17 +00:00
get_notification_response = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2016-11-21 15:42:17 +00:00
"description": "GET notification response schema",
"type": "object",
"title": "response v2/notification",
"properties": {
"id": uuid,
"reference": {"type": ["string", "null"]},
"email_address": {"type": ["string", "null"]},
"phone_number": {"type": ["string", "null"]},
"line_1": {"type": ["string", "null"]},
"line_2": {"type": ["string", "null"]},
"line_3": {"type": ["string", "null"]},
"line_4": {"type": ["string", "null"]},
"line_5": {"type": ["string", "null"]},
"line_6": {"type": ["string", "null"]},
"postcode": {"type": ["string", "null"]},
"type": {"enum": ["sms", "letter", "email"]},
"status": {"type": "string"},
"template": template,
"body": {"type": "string"},
"subject": {"type": ["string", "null"]},
2016-11-21 15:42:17 +00:00
"created_at": {"type": "string"},
"sent_at": {"type": ["string", "null"]},
"completed_at": {"type": ["string", "null"]},
"scheduled_for": {"type": ["string", "null"]}
2016-11-21 15:42:17 +00:00
},
"required": [
# technically, all keys are required since we always have all of them
"id", "reference", "email_address", "phone_number",
"line_1", "line_2", "line_3", "line_4", "line_5", "line_6", "postcode",
"type", "status", "template", "body", "created_at", "sent_at", "completed_at"
2016-11-21 15:42:17 +00:00
]
}
2016-11-28 14:22:51 +00:00
get_notifications_request = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2016-11-28 14:22:51 +00:00
"description": "schema for query parameters allowed when getting list of notifications",
"type": "object",
"properties": {
2016-12-12 18:04:20 +00:00
"reference": {"type": "string"},
2016-11-28 14:22:51 +00:00
"status": {
"type": "array",
"items": {
"enum": NOTIFICATION_STATUS_TYPES +
[NOTIFICATION_STATUS_LETTER_ACCEPTED + ', ' + NOTIFICATION_STATUS_LETTER_RECEIVED]
2016-11-28 14:22:51 +00:00
}
},
"template_type": {
"type": "array",
"items": {
"enum": NOTIFICATION_TYPES
2016-11-28 14:22:51 +00:00
}
},
"include_jobs": {"enum": ["true", "True"]},
2016-11-28 14:22:51 +00:00
"older_than": uuid
},
"additionalProperties": False,
}
2016-11-25 16:46:19 +00:00
get_notifications_response = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2016-11-25 16:46:19 +00:00
"description": "GET list of notifications response schema",
"type": "object",
"properties": {
"notifications": {
"type": "array",
"items": {
"type": "object",
"$ref": "#/definitions/notification"
2016-11-25 16:46:19 +00:00
}
},
"links": {
"type": "object",
"properties": {
"current": {
"type": "string"
},
"next": {
"type": "string"
}
},
"additionalProperties": False,
"required": ["current"]
}
},
"additionalProperties": False,
"required": ["notifications", "links"],
"definitions": {
"notification": get_notification_response
},
2016-11-25 16:46:19 +00:00
}
post_sms_request = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "POST sms notification schema",
"type": "object",
"title": "POST v2/notifications/sms",
"properties": {
"reference": {"type": "string"},
"phone_number": {"type": "string", "format": "phone_number"},
"template_id": uuid,
"personalisation": personalisation,
"scheduled_for": {"type": ["string", "null"], "format": "datetime_within_next_day"},
"sms_sender_id": uuid
},
"required": ["phone_number", "template_id"],
"additionalProperties": False
}
sms_content = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "content schema for SMS notification response schema",
"type": "object",
"title": "notification content",
"properties": {
"body": {"type": "string"},
"from_number": {"type": "string"}
},
"required": ["body", "from_number"]
}
post_sms_response = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "POST sms notification response schema",
"type": "object",
"title": "response v2/notifications/sms",
"properties": {
"id": uuid,
"reference": {"type": ["string", "null"]},
"content": sms_content,
2016-12-15 16:37:40 +00:00
"uri": {"type": "string", "format": "uri"},
"template": template,
"scheduled_for": {"type": ["string", "null"]}
},
"required": ["id", "content", "uri", "template"]
}
post_email_request = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "POST email notification schema",
"type": "object",
"title": "POST v2/notifications/email",
"properties": {
"reference": {"type": "string"},
"email_address": {"type": "string", "format": "email_address"},
"template_id": uuid,
"personalisation": personalisation,
"scheduled_for": {"type": ["string", "null"], "format": "datetime_within_next_day"},
"email_reply_to_id": uuid
},
"required": ["email_address", "template_id"],
"additionalProperties": False
}
email_content = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "Email content for POST email notification",
"type": "object",
"title": "notification email content",
"properties": {
"from_email": {"type": "string", "format": "email_address"},
"body": {"type": "string"},
"subject": {"type": "string"}
},
"required": ["body", "from_email", "subject"]
}
post_email_response = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "POST email notification response schema",
"type": "object",
"title": "response v2/notifications/email",
"properties": {
"id": uuid,
"reference": {"type": ["string", "null"]},
"content": email_content,
2016-12-15 16:37:40 +00:00
"uri": {"type": "string", "format": "uri"},
"template": template,
"scheduled_for": {"type": ["string", "null"]}
},
"required": ["id", "content", "uri", "template"]
}
2017-07-07 10:46:26 +01:00
post_letter_request = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2017-07-07 10:46:26 +01:00
"description": "POST letter notification schema",
"type": "object",
"title": "POST v2/notifications/letter",
"properties": {
"reference": {"type": "string"},
"template_id": uuid,
2020-04-03 14:28:36 +01:00
"personalisation": personalisation
2017-07-07 10:46:26 +01:00
},
"required": ["template_id", "personalisation"],
"additionalProperties": False
2017-07-07 10:46:26 +01:00
}
post_precompiled_letter_request = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
"description": "POST precompiled letter notification schema",
"type": "object",
"title": "POST v2/notifications/letter",
"properties": {
"reference": {"type": "string"},
"content": {"type": "string"},
"postage": {"type": "string", "format": "postage"}
},
"required": ["reference", "content"],
"additionalProperties": False
}
2017-07-07 10:46:26 +01:00
letter_content = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2017-07-07 10:46:26 +01:00
"description": "Letter content for POST letter notification",
"type": "object",
"title": "notification letter content",
"properties": {
"body": {"type": "string"},
"subject": {"type": "string"}
},
"required": ["body", "subject"]
}
post_letter_response = {
2022-04-08 17:05:59 +01:00
"$schema": "http://json-schema.org/draft-07/schema#",
2017-07-07 10:46:26 +01:00
"description": "POST sms notification response schema",
"type": "object",
"title": "response v2/notifications/letter",
"properties": {
"id": uuid,
"reference": {"type": ["string", "null"]},
"content": letter_content,
"uri": {"type": "string", "format": "uri"},
"template": template,
# letters cannot be scheduled
"scheduled_for": {"type": "null"}
2017-07-07 10:46:26 +01:00
},
"required": ["id", "content", "uri", "template"]
}