mirror of
https://github.com/GSA/notifications-api.git
synced 2025-12-15 17:52:26 -05:00
Merge pull request #1213 from alphagov/remove-spec
Remove Swagger specification
This commit is contained in:
@@ -89,7 +89,6 @@ def register_blueprint(application):
|
||||
from app.template_statistics.rest import template_statistics as template_statistics_blueprint
|
||||
from app.events.rest import events as events_blueprint
|
||||
from app.provider_details.rest import provider_details as provider_details_blueprint
|
||||
from app.spec.rest import spec as spec_blueprint
|
||||
from app.organisation.rest import organisation_blueprint
|
||||
from app.dvla_organisation.rest import dvla_organisation_blueprint
|
||||
from app.delivery.rest import delivery_blueprint
|
||||
@@ -154,9 +153,6 @@ def register_blueprint(application):
|
||||
provider_details_blueprint.before_request(requires_admin_auth)
|
||||
application.register_blueprint(provider_details_blueprint, url_prefix='/provider-details')
|
||||
|
||||
spec_blueprint.before_request(requires_no_auth)
|
||||
application.register_blueprint(spec_blueprint, url_prefix='/spec')
|
||||
|
||||
organisation_blueprint.before_request(requires_admin_auth)
|
||||
application.register_blueprint(organisation_blueprint, url_prefix='/organisation')
|
||||
|
||||
|
||||
328
app/spec/rest.py
328
app/spec/rest.py
@@ -1,328 +0,0 @@
|
||||
from flask import jsonify, Blueprint
|
||||
from apispec import APISpec
|
||||
|
||||
|
||||
spec = Blueprint('spec', __name__)
|
||||
|
||||
|
||||
api_spec = APISpec(
|
||||
title='GOV.UK Notify',
|
||||
version='0.0.0'
|
||||
)
|
||||
|
||||
api_spec.definition('NotificationWithTemplateSchema', properties={
|
||||
"billable_units": {
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"created_at": {
|
||||
"format": "date-time",
|
||||
"type": "string"
|
||||
},
|
||||
"id": {
|
||||
"format": "uuid",
|
||||
"type": "string"
|
||||
},
|
||||
"job": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"format": "uuid",
|
||||
"type": "string"
|
||||
},
|
||||
"original_file_name": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"original_file_name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"job_row_number": {
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"reference": {
|
||||
"type": "string"
|
||||
},
|
||||
"sent_at": {
|
||||
"format": "date-time",
|
||||
"type": "string"
|
||||
},
|
||||
"sent_by": {
|
||||
"type": "string"
|
||||
},
|
||||
"service": {
|
||||
"type": "string"
|
||||
},
|
||||
"status": {
|
||||
"enum": [
|
||||
"delivered",
|
||||
"sending",
|
||||
"technical-failure",
|
||||
"temporary-failure",
|
||||
"permanent-failure",
|
||||
"pending",
|
||||
"failed"
|
||||
],
|
||||
"type": "string"
|
||||
},
|
||||
"template": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"format": "uuid",
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"template_type": {
|
||||
"enum": [
|
||||
"sms",
|
||||
"email",
|
||||
"letter"
|
||||
],
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"template_type",
|
||||
"name"
|
||||
],
|
||||
"type": "object"
|
||||
},
|
||||
"template_version": {
|
||||
"format": "int32",
|
||||
"type": "integer"
|
||||
},
|
||||
"to": {
|
||||
"type": "string"
|
||||
},
|
||||
"updated_at": {
|
||||
"format": "date-time",
|
||||
"type": "string"
|
||||
}
|
||||
})
|
||||
api_spec.definition('NotificationSchema', properties={
|
||||
"notification": {
|
||||
"$ref": "#/definitions/NotificationWithTemplateSchema"
|
||||
}
|
||||
})
|
||||
api_spec.definition('NotificationsSchema', properties={
|
||||
"notifications": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/definitions/NotificationWithTemplateSchema"
|
||||
}
|
||||
}
|
||||
})
|
||||
api_spec.definition('NotificationSentSchema', properties={
|
||||
"body": {
|
||||
"description": "The content of the message",
|
||||
"type": "string"
|
||||
},
|
||||
"notification": {
|
||||
"properties": {
|
||||
"id": {
|
||||
"type": "string"
|
||||
}
|
||||
},
|
||||
"type": "object"
|
||||
},
|
||||
"subject": {
|
||||
"description": "The subject of the email (present for email notifications only)",
|
||||
"type": "string"
|
||||
},
|
||||
"template_version": {
|
||||
"description": "The version number of the template that was used",
|
||||
"type": "integer"
|
||||
}
|
||||
})
|
||||
api_spec.definition('Error', properties={
|
||||
'result': {
|
||||
'type': 'string',
|
||||
'description': 'will say ‘error’'
|
||||
},
|
||||
'message': {
|
||||
'type': 'string',
|
||||
'description': 'description of the error'
|
||||
}
|
||||
})
|
||||
api_spec.add_path(path="/notifications", operations={
|
||||
"get": {
|
||||
"parameters": [
|
||||
{
|
||||
"description": "page number",
|
||||
"in": "query",
|
||||
"name": "page",
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"default": 50,
|
||||
"description": "number of notifications per page",
|
||||
"in": "query",
|
||||
"name": "page_size",
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"default": 7,
|
||||
"description": "number of days",
|
||||
"in": "query",
|
||||
"name": "limit_days",
|
||||
"type": "integer"
|
||||
},
|
||||
{
|
||||
"description": "sms or email",
|
||||
"enum": [
|
||||
"sms",
|
||||
"email"
|
||||
],
|
||||
"in": "query",
|
||||
"name": "template_type",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "sms or email",
|
||||
"in": "query",
|
||||
"name": "status",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Notifications found",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/NotificationsSchema"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"description": "Authorisation header is missing",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Invalid or expired token",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "No notifications found"
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
api_spec.add_path(path="/notification/{notification_id_or_type}", operations={
|
||||
"get": {
|
||||
"parameters": [
|
||||
{
|
||||
"description": "16 character UUID",
|
||||
"in": "path",
|
||||
"name": "notification_id_or_type",
|
||||
"required": True,
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Found",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/NotificationSchema"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"description": "Authorisation header is missing",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Invalid or expired token",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"404": {
|
||||
"description": "Not found"
|
||||
}
|
||||
}
|
||||
},
|
||||
"post": {
|
||||
"description": "Send a single email or text message",
|
||||
"parameters": [
|
||||
{
|
||||
"description": "email or sms",
|
||||
"in": "path",
|
||||
"name": "notification_id_or_type",
|
||||
"pattern": "[email|sms]",
|
||||
"required": True,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "the recipient's phone number or email address",
|
||||
"in": "formData",
|
||||
"name": "to",
|
||||
"required": True,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "the ID of the template to use",
|
||||
"in": "formData",
|
||||
"name": "template",
|
||||
"required": True,
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"description": "specifies the placeholders and values in your templates",
|
||||
"in": "formData",
|
||||
"name": "personalisation",
|
||||
"type": "string"
|
||||
}
|
||||
],
|
||||
"responses": {
|
||||
"200": {
|
||||
"description": "Notification sent",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/NotificationSentSchema"
|
||||
}
|
||||
},
|
||||
"400": {
|
||||
"description": "Bad request",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"401": {
|
||||
"description": "Authorisation header is missing",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"403": {
|
||||
"description": "Invalid or expired token",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
},
|
||||
"429": {
|
||||
"description": "You have reached the maximum number of messages you can send per day",
|
||||
"schema": {
|
||||
"$ref": "#/definitions/Error"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
@spec.route('')
|
||||
def get_spec():
|
||||
return jsonify(api_spec.to_dict())
|
||||
@@ -1,4 +1,3 @@
|
||||
apispec==0.25.0
|
||||
boto3==1.4.6
|
||||
celery==3.1.25 # pyup: <4
|
||||
docopt==0.6.2
|
||||
|
||||
@@ -5,7 +5,6 @@ pytest-mock==1.6.2
|
||||
pytest-cov==2.5.1
|
||||
coveralls==1.2.0
|
||||
moto==1.1.1
|
||||
flex==6.11.0
|
||||
freezegun==0.3.9
|
||||
requests-mock==1.3.0
|
||||
strict-rfc3339==0.7
|
||||
|
||||
@@ -1,18 +0,0 @@
|
||||
import flex
|
||||
import pytest
|
||||
|
||||
from flask import json
|
||||
from tests import create_authorization_header
|
||||
|
||||
|
||||
def test_spec_returns_valid_json(notify_api, sample_notification):
|
||||
with notify_api.test_request_context():
|
||||
with notify_api.test_client() as client:
|
||||
auth_header = create_authorization_header(service_id=sample_notification.service_id)
|
||||
|
||||
response = client.get('/spec', headers=[auth_header])
|
||||
|
||||
# Check that it’s a valid Swagger schema
|
||||
flex.load(
|
||||
json.loads(response.get_data(as_text=True))
|
||||
)
|
||||
Reference in New Issue
Block a user