mirror of
https://github.com/GSA/notifications-api.git
synced 2026-01-19 17:11:54 -05:00
We were using the Draft4Validator in one place, so this updates it to the Draft7Validator instead. The schemas were mostly using draft 4 of the JSON schema, though there were a couple of schemas that were already of version 7. This updates them all to version 7, which is the latest version fully supported by the jsonschema Python package. There are some breaking changes in the newer version of the schema, but I could not see anywhere would these affect us. Some of these schemas were not valid in version 4, but are now valid in version 7 because `"required": []` was not valid in earlier versions.
85 lines
2.7 KiB
Python
85 lines
2.7 KiB
Python
from app.models import TEMPLATE_TYPES
|
|
from app.schema_validation.definitions import personalisation, uuid
|
|
|
|
get_template_by_id_request = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "schema for parameters allowed when getting template by id",
|
|
"type": "object",
|
|
"properties": {
|
|
"id": uuid,
|
|
"version": {"type": ["integer", "null"], "minimum": 1}
|
|
},
|
|
"required": ["id"],
|
|
"additionalProperties": False,
|
|
}
|
|
|
|
get_template_by_id_response = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "GET template by id schema response",
|
|
"type": "object",
|
|
"title": "reponse v2/template",
|
|
"properties": {
|
|
"id": uuid,
|
|
"type": {"enum": TEMPLATE_TYPES},
|
|
"created_at": {
|
|
"format": "date-time",
|
|
"type": "string",
|
|
"description": "Date+time created"
|
|
},
|
|
"updated_at": {
|
|
"format": "date-time",
|
|
"type": ["string", "null"],
|
|
"description": "Date+time updated"
|
|
},
|
|
"created_by": {"type": "string"},
|
|
"version": {"type": "integer"},
|
|
"body": {"type": "string"},
|
|
"subject": {"type": ["string", "null"]},
|
|
"name": {"type": "string"},
|
|
"postage": {"type": "string", "format": "postage"}
|
|
},
|
|
"required": ["id", "type", "created_at", "updated_at", "version", "created_by", "body", "name"],
|
|
}
|
|
|
|
post_template_preview_request = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "POST template schema",
|
|
"type": "object",
|
|
"title": "POST v2/template/{id}/preview",
|
|
"properties": {
|
|
"id": uuid,
|
|
"personalisation": personalisation
|
|
},
|
|
"required": ["id"]
|
|
}
|
|
|
|
post_template_preview_response = {
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"description": "POST template preview schema response",
|
|
"type": "object",
|
|
"title": "reponse v2/template/{id}/preview",
|
|
"properties": {
|
|
"id": uuid,
|
|
"type": {"enum": TEMPLATE_TYPES},
|
|
"version": {"type": "integer"},
|
|
"body": {"type": "string"},
|
|
"subject": {"type": ["string", "null"]},
|
|
"postage": {"type": "string", "format": "postage"},
|
|
"html": {"type": ["string", "null"]},
|
|
},
|
|
"required": ["id", "type", "version", "body"],
|
|
"additionalProperties": False,
|
|
}
|
|
|
|
|
|
def create_post_template_preview_response(template, template_object):
|
|
return {
|
|
"id": template.id,
|
|
"type": template.template_type,
|
|
"version": template.version,
|
|
"body": template_object.content_with_placeholders_filled_in,
|
|
"html": getattr(template_object, 'html_body', None),
|
|
"subject": getattr(template_object, 'subject', None),
|
|
"postage": template.postage
|
|
}
|