Files
notifications-api/docs/openapi.yml

625 lines
16 KiB
YAML
Raw Normal View History

2022-11-16 13:11:17 -05:00
openapi: '3.0.2'
info:
title: Notify API
version: '1.0'
description: |
The following OpenAPI document lists a subset of the available APIs for US Notify.
We are currently API compatible with GOV.UK Notify. Please visit [their documentation](https://docs.notifications.service.gov.uk/rest-api.html)
for more information.
Authorization uses [a JSON Web Token (JWT) bearer token](https://docs.notifications.service.gov.uk/rest-api.html#authorisation-header). The internal-api
methods use the same scheme, but must use a specific key for the Admin UI.
2022-11-16 13:11:17 -05:00
servers:
- url: https://notify-api.app.cloud.gov
description: Production API endpoint
- url: https://notify-api-staging.app.cloud.gov
description: Staging API endpoint
- url: http://localhost:6011
description: Local development API endpoint
2022-11-17 10:57:34 -05:00
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
2022-11-17 17:04:51 -05:00
parameters:
uuidPath:
name: uuid
in: path
required: true
schema:
type: string
2022-11-17 10:57:34 -05:00
schemas:
serviceObject:
type: object
properties:
active:
type: boolean
billing_contact_email_addresses:
type: string
billing_contact_names:
type: string
billing_reference:
type: string
consent_to_research:
type: string
contact_link:
type: string
count_as_live:
type: boolean
created_by:
type: string
email_branding:
type: string
email_from:
type: string
go_live_at:
type: string
go_live_user:
type: string
id:
type: string
inbound_api:
type: array
letter_branding:
type: string
message_limit:
type: number
name:
type: string
notes:
type: string
2023-07-10 15:38:31 -07:00
organization:
type: string
2023-07-10 15:38:31 -07:00
organization_type:
type: string
enum: ["federal", "state", "other"]
default: "federal"
permissions:
type: array
items:
type: string
prefix_sms:
type: boolean
purchase_order_number:
type: string
rate_limit:
type: number
research_model:
type: boolean
restricted:
type: boolean
service_callback_api:
type: array
volume_email:
type: string
volume_letter:
type: string
volume_sms:
type: string
2022-11-17 10:57:34 -05:00
userObject:
type: object
properties:
auth_type:
type: string
can_use_webauthn:
type: string
current_session_id:
type: string
email_access_validated_at:
type: string
email_address:
type: string
failed_login_count:
type: number
id:
type: string
logged_in_at:
type: string
mobile_number:
type: string
name:
type: string
2023-07-10 15:38:31 -07:00
organizations:
2022-11-17 10:57:34 -05:00
type: array
items:
type: string
password_changed_at:
type: string
permissions:
type: object
properties:
SERVICE_ID:
type: array
items:
type: string
platform_admin:
type: boolean
services:
type: array
items:
type: string
state:
type: string
enum: ["pending", "active", "inactive"]
2022-11-17 17:04:51 -05:00
apiKeyResponse:
type: object
properties:
apiKeys:
type: array
items:
type: object
properties:
created_by:
type: string
created_at:
type: string
expiry_date:
type: string
id:
type: string
key_type:
type: string
name:
type: string
updated_at:
type: string
version:
type: number
templateObject:
type: object
properties:
body:
type: string
created_at:
type: string
created_by:
type: string
id:
type: string
letter_contact_block:
type: object
name:
type: string
personalisation:
type: object
postage:
type: string
subject:
type: string
type:
type: string
updated_at:
type: string
version:
type: integer
required:
- body
- created_at
- created_by
- id
- letter_contact_block
- name
- personalisation
- postage
- subject
- type
- updated_at
- version
additionalProperties: false
2022-11-16 13:11:17 -05:00
paths:
/_status?simple=1:
get:
description: 'Retrieve only an acknowledgement that the server is listening'
tags:
- public
2022-11-16 13:11:17 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
status:
type: string
enum: ["ok"]
/_status:
get:
description: 'Retrieve information on the status of the Notify API server'
tags:
- public
2022-11-16 13:11:17 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
build_time:
type: string
db_version:
type: string
git_commit:
type: string
status:
type: string
enum: ["ok"]
2023-07-10 15:38:31 -07:00
/_status/live-service-and-organization-counts:
2022-11-16 13:11:17 -05:00
get:
description: 'Retrieve a count of live services and organizations in the Notify system'
tags:
- public
2022-11-16 13:11:17 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
services:
type: number
2023-07-10 15:38:31 -07:00
organizations:
2022-11-16 13:11:17 -05:00
type: number
2022-11-17 10:57:34 -05:00
/user:
get:
security:
- bearerAuth: []
description: 'Retrieve list of all users'
tags:
- internal-api
2022-11-17 10:57:34 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/userObject"
/user/{uuid}:
get:
security:
- bearerAuth: []
description: 'Retrieve single user details'
tags:
- internal-api
2022-11-17 10:57:34 -05:00
parameters:
2022-11-17 17:04:51 -05:00
- $ref: "#/components/parameters/uuidPath"
2022-11-17 10:57:34 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: "#/components/schemas/userObject"
2023-07-10 15:38:31 -07:00
/organizations:
get:
security:
- bearerAuth: []
description: 'Retrieve organization details'
tags:
- internal-api
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
type: object
properties:
active:
type: boolean
count_of_live_services:
type: number
domains:
type: array
id:
type: string
name:
type: string
2023-07-10 15:38:31 -07:00
organization_type:
type: string
enum: ["federal", "state", "other"]
/service:
get:
security:
- bearerAuth: []
description: 'Retrieve all services'
tags:
- internal-api
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/serviceObject"
2022-11-17 17:04:51 -05:00
/service/find-services-by-name:
get:
security:
- bearerAuth: []
2022-11-17 17:04:51 -05:00
description: 'Find a service by name'
tags:
- internal-api
parameters:
2022-11-17 17:04:51 -05:00
- name: service_name
in: query
required: true
schema:
type: string
2022-11-17 17:04:51 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: object
properties:
active:
type: boolean
id:
type: string
name:
type: string
research_mode:
type: boolean
restricted:
type: boolean
/service/live-services-data:
get:
security:
- bearerAuth: []
description: 'Unsure'
tags:
- internal-api
responses:
'200':
description: OK
/service/{uuid}:
get:
security:
- bearerAuth: []
description: 'Retrieve details of a single service'
tags:
- internal-api
parameters:
- $ref: "#/components/parameters/uuidPath"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
data:
$ref: "#/components/schemas/serviceObject"
/service/{uuid}/statistics:
get:
security:
- bearerAuth: []
description: 'Retrieve statistics about messages sent by a service'
tags:
- internal-api
parameters:
2022-11-17 17:04:51 -05:00
- $ref: "#/components/parameters/uuidPath"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
/service/{uuid}/api-keys:
get:
security:
- bearerAuth: []
description: 'Retrieve api-keys for a service'
tags:
- internal-api
parameters:
- $ref: "#/components/parameters/uuidPath"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/apiKeyResponse"
/service/{uuid}/api-keys/{key-id}:
get:
security:
- bearerAuth: []
description: 'Retrieve details of a single API key'
tags:
- internal-api
parameters:
- $ref: "#/components/parameters/uuidPath"
- name: key-id
in: path
required: true
schema:
type: string
2022-11-17 17:04:51 -05:00
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/apiKeyResponse"
/service/{uuid}/users:
get:
security:
- bearerAuth: []
description: 'Retrieve users associated with this service'
tags:
- internal-api
parameters:
- $ref: "#/components/parameters/uuidPath"
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
2022-11-17 17:04:51 -05:00
properties:
data:
type: array
items:
$ref: "#/components/schemas/userObject"
/v2/templates:
get:
security:
- bearerAuth: []
description: 'Get list of templates'
tags:
- external-api
parameters:
- name: type
in: query
schema:
type: string
enum: ["sms", "email"]
examples:
"SMS Templates":
value: "sms"
"Email Templates":
value: "email"
"All Templates":
value: ""
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
templates:
type: array
items:
$ref: "#/components/schemas/templateObject"
/v2/template/{uuid}:
get:
security:
- bearerAuth: []
description: 'Get details for a single template'
tags:
- external-api
parameters:
- $ref: "#/components/parameters/uuidPath"
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/templateObject"
/v2/notifications/sms:
post:
security:
- bearerAuth: []
description: 'Send an SMS message to a single phone number'
tags:
- external-api
requestBody:
required: true
description: |
The request body is a JSON object giving at least the phone nubmer to
deliver the message to and the template ID to send to that number.
If the template has variables, provide them in the `personalisation`
object with the variable names as the object keys.
content:
application/json:
schema:
type: object
required:
- phone_number
- template_id
properties:
phone_number:
type: string
template_id:
type: string
personalisation:
type: object
reference:
type: string
example:
phone_number: "2028675309"
template_id: "85b58733-7ebf-494e-bee2-a21a4ce17d58"
personalisation:
variable: "value"
responses:
'201':
description: Sent
content:
application/json:
schema:
type: object
properties:
content:
type: object
properties:
body:
type: string
from_number:
type: string
required:
- body
- from_number
additionalProperties: false
id:
type: string
reference:
type: string
scheduled_for:
type: string
template:
type: object
properties:
id:
type: string
uri:
type: string
version:
type: integer
required:
- id
- uri
- version
additionalProperties: false
uri:
type: string
additionalProperties: false
required:
- content
- id
- reference
- template
- uri