{% extends "withoutnav_template.html" %} {% from "components/page-footer.html" import page_footer %} {% from "components/api-key.html" import api_key %} {% block page_title %} API documentation – GOV.UK Notify {% endblock %} {% block maincolumn_content %}

Developer documentation

How to integrate GOV.UK Notify into your service

Notify provides an API that allows the creation of text notifications and the ability to get the status of a sent notification.

API authentication

Notify uses JSON Web Tokens (JWT) for authentication. JWT tokens have a series of claims, standard and application specific.

Notify standard claims:

{{''' { "typ": "JWT", "alg": "HS256" } '''|syntax_highlight_json}}

Notify application specific:

{{""" { iss: 'string', // service id iat: 0, // creation time in epoch seconds (UTC) req: 'string', // signed request pay: 'string', // signed payload (POST requests only) } """|syntax_highlight_json}}

Notify API tokens sign both the request being made, and for POST requests, the payload.

The signing algorithm is HMAC signature, using provided key SHA256 hashing algorithm.

Request signing is of the form HTTP METHOD PATH.

{{ "GET /notification/1234"|syntax_highlight_json }}

Payload signing requires the actual payload to be signed, NOT the JSON object. Serialize the object first then sign the serialized object.

API endpoints

To create a text notification

{{ "POST /notifications/sms"|syntax_highlight_json }} {{ """ { 'to': '+447700900404', 'template': 1 } """|syntax_highlight_json }}

Where ‘to’ is the phone number and ‘template’ is the template ID to send.

Response:

{{""" { 'data':{ 'notification': { 'id':1 } } } """|syntax_highlight_json }}

To get the status of a text notification

{{ "GET /notifications/{id}"|syntax_highlight_json }} {{""" { 'data':{ 'notification': { 'status':'sent', 'createdAt':'2016-01-01T09:00:00.999999Z', 'to':'+447827992607', 'method':'sms', 'sentAt':'2016-01-01T09:01:00.999999Z', 'id':1, 'message':'...', 'jobId':1, 'sender':'sms-partner' } } } """|syntax_highlight_json }}

API client libraries

A python client library is support by the Notify team:

GOV.UK Notify Python client

This provides example code for calling the API and for constructing the API tokens.

API code

Notify API code is open sourced at:

GOV.UK Notify API

API endpoint

https://api.notifications.service.gov.uk/

{% endblock %}