Skip to content

v3 Errors

Nikolai Efimov edited this page Dec 6, 2023 · 4 revisions

This document is for developers integrating with version 3 of the VA Notify API, which currently provides limited functionality for sending e-mail and SMS notifications.

HTTP Response Summary

For the route POST /v3/notifications/(email|sms):

Status Meaning
202 You are authorized and submitted syntactically valid request data. This does not guarantee that your notification will be sent.
400 Bad request. Your request is syntactically invalid. The response should contain additional information.
401 or 403 You are unauthorized, or you do not have the appropriate permission. For example, you aren't permitted to send SMS notifications.
501 Not implemented. You will receive this response if your request contains the "scheduled_for" attribute. Scheduled sending is not yet available.

Downstream Processing Errors

A 202 "Accepted" response body looks like {"id": <uuid4>} and indicates that the data you submitted is being processed. You can see the status of that processing via callbacks or by making a GET request using the notification ID from the response body.

A notification has a "status" and "status_reason" attribute. A status of "permanent-failure" or "technical-failure" indicates that your notification will not be sent. These are the associated reasons:

Status Status Reason
permanent-failure The template does not exist.
permanent-failure Multiple templates found.
permanent-failure The service does not own the template.
permanent-failure The template type does not match the notification type.
permanent-failure SMS sender <uuid4> does not exist.
technical-failure Sending with recipient_identifer is not yet implemented. (1)
technical-failure Default logic for sms_sender_id is not yet implemented. (2)
technical-failure Couldn't get the provider client. (3)

"Provider client" is an interface for a third party that actually delivers the notifications. For examples, AWS Pinpoint (SMS) or SES (e-mail).

Notes

  1. This can be moved to the route handler and return a 501 instead. That's an easy change.
  2. See #1504.
  3. See #1505.
Clone this wiki locally