@defra/wls-eps-api
Version:
The API to support the wildlife licencing of European Protected Species
606 lines (581 loc) • 17.6 kB
YAML
openapi: 3.0.0
info:
description: Wildlife Licencing API definition
version: 1.0.0
title: Wildlife Licencing
contact:
email: graham.willis@defra.gov.uk
license:
name: The Open Government Licence (OGL) Version 3
url: www.nationalarchives.gov.uk/doc/open-government-licence/version/3
paths:
################################################################################################
# Users
################################################################################################
'/user':
post:
description: Create and store user
summary: Create a new user with a generated ID
operationId: postUser
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/user'
responses:
201:
description: The user has been created
content:
application/json:
schema:
$ref: '#/components/schemas/user'
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
'/user/{userId}':
get:
description: Reterive a user
summary: Reterive a user
operationId: getUserByUserId
parameters:
- name: userId
in: path
description: ID of the appliciant
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb75
schema:
$ref: '#/components/schemas/uuid'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/user'
400:
description: Bad request. User ID must be a uuid.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
404:
description: An user with the specified ID was not found.
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
put:
description: Store a user
summary: Create or update a user using the provided ID.
operationId: putUser
parameters:
- name: userId
in: path
description: ID of the user
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb75
schema:
$ref: '#/components/schemas/uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/user'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/user'
201:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/user'
400:
description: Bad request. user ID must be a uuid
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
delete:
description: Delete user
summary: Delete the user on the provided ID
operationId: deleteUser
parameters:
- name: userId
in: path
description: ID of the user
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb75
schema:
$ref: '#/components/schemas/uuid'
responses:
204:
description: The appliciant object has been deleted
400:
description: Bad request. user ID must be a uuid
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
################################################################################################
# Applications
################################################################################################
'/user/{userId}/applications':
get:
description: Get the (unsubmitted) applications for a user
summary: Get the (unsubmitted) applications for a user
operationId: getApplicationsByUserId
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/applications'
400:
description: Bad request.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
'/user/{userId}/application':
post:
description: Create a new application
summary: Create a new application for an existing userId
operationId: postApplication
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/application'
responses:
201:
description: The application object has been created
content:
application/json:
schema:
$ref: '#/components/schemas/application'
400:
description: Bad request. user ID must be a uuid
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
'/user/{userId}/application/{applicationId}':
get:
description: Get an application
summary: Get an application
operationId: getApplicationByApplicationId
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/application'
400:
description: Bad request.
content:
application/json:
schema:
$ref: '#/components/schemas/error'
404:
description: Application not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
put:
description: Create a new application or update an application
summary: Create or update an application for a given appilcationId and an existing userId
operationId: putApplication
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/application'
responses:
200:
description: The application object has been updated
content:
application/json:
schema:
$ref: '#/components/schemas/application'
201:
description: The application object has been created
content:
application/json:
schema:
$ref: '#/components/schemas/application'
400:
description: Bad request. user ID must be a uuid
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
delete:
description: Delete an application
summary: Delete an application
operationId: deleteApplication
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
responses:
204:
description: The application has been deleted
400:
description: Bad request
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
################################################################################################
# Applicants
################################################################################################
'/user/{userId}/application/{applicationId}/applicant':
put:
description: Update the application applicant details
summary: Create or update the application applicant details
operationId: putApplicationApplicant
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
400:
description: Bad request
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
get:
description: Get the application applicant details
summary: Get the applicant details for an application
operationId: getApplicationApplicant
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
responses:
200:
description: Success
content:
application/json:
schema:
$ref: '#/components/schemas/contact'
400:
description: Bad request
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
delete:
description: Delete the application applicant details
summary: Delete the applicant details for an application
operationId: deleteApplicationApplicant
parameters:
- name: userId
in: path
description: ID of the user
required: true
schema:
$ref: '#/components/schemas/uuid'
- name: applicationId
in: path
description: ID of the application
required: true
example: 1e470963-e8bf-41f5-9b0b-52d19c21cb76
schema:
$ref: '#/components/schemas/uuid'
responses:
204:
description: Success
400:
description: Bad request
404:
description: Not found
500:
description: Unexpected error on server
content:
application/json:
schema:
$ref: '#/components/schemas/error'
components:
################################################################################################
# Schemas
################################################################################################
schemas:
user:
type: object
additionalProperties: false
properties:
id:
$ref: '#/components/schemas/uuid'
sddsId:
oneOf:
- $ref: '#/components/schemas/uuid'
- type: 'null'
createdAt:
$ref: '#/components/schemas/timestamp'
updatedAt:
$ref: '#/components/schemas/timestamp'
applications:
type: array
items:
$ref: '#/components/schemas/application'
application:
type: object
additionalProperties: false
properties:
id:
$ref: '#/components/schemas/uuid'
sddsId:
oneOf:
- $ref: '#/components/schemas/uuid'
- type: 'null'
proposalDescription:
type: string
minLength: 1
maxLength: 300
detailsOfConvictions:
type: string
minLength: 1
maxLength: 300
applicant:
$ref: '#/components/schemas/contact'
createdAt:
$ref: '#/components/schemas/timestamp'
updatedAt:
$ref: '#/components/schemas/timestamp'
contact:
type: object
required: [firstname, lastname]
properties:
firstname:
type: string
minLength: 1
maxLength: 36
lastname:
type: string
minLength: 1
maxLength: 36
address:
$ref: '#/components/schemas/address'
email:
$ref: '#/components/schemas/email'
phone:
$ref: '#/components/schemas/phone'
address:
type: object
required: [addrLine1, addrline3, postcode]
properties:
houseNumber:
type: string
minLength: 1
maxLength: 36
addrline1:
type: string
minLength: 1
maxLength: 36
addrline2:
type: string
minLength: 1
maxLength: 36
addrline3:
type: string
minLength: 1
maxLength: 36
county:
type: string
minLength: 1
maxLength: 36
town:
type: string
minLength: 1
maxLength: 36
postcode:
type: string
minLength: 1
maxLength: 10
sites:
type: array
items:
$ref: '#/components/schemas/site'
site:
type: object
required:
- name
- address
properties:
name:
type: string
minLength: 1
maxLength: 36
address:
$ref: '#/components/schemas/address'
gridReference:
$ref: '#/components/schemas/gridReference'
gridReference:
type: string
timestamp:
type: string
readOnly: true
example: 2021-12-06T15:56:46.825Z
pattern: ^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3}Z$
uuid:
type: string
pattern: ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
minLength: 36
maxLength: 36
email:
type: string
pattern: (?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
phone:
type: string
error:
type: object
required:
- code
properties:
code:
type: number
error:
type: object
errors:
type: array
items:
type: object