You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
752 lines
21 KiB
752 lines
21 KiB
swagger: '2.0'
|
|
info:
|
|
description: 'This is a sample JWT authentication service. You can find out more about JWT at [https://jwt.io/](https://jwt.io/). For this sample, you can use the `admin` or `client` users (password: admin and client respectively) to test the authorization filters. Once you have successfully logged in and obtained the token, you should click on the right top button `Authorize` and introduce it with the prefix "Bearer ".'
|
|
version: 1.0.4
|
|
title: The authenticator for the Waterproofing Data (WPD) Work Packages
|
|
contact:
|
|
email: igsd@warwick.ac.uk
|
|
license:
|
|
name: Apache-2.0 License
|
|
url: https://opensource.org/licenses/Apache-2.0
|
|
host: localhost:8080
|
|
basePath: /
|
|
tags:
|
|
- name: forgotpasswords
|
|
description: Forgot Passwords Controller
|
|
- name: users
|
|
description: Operations about users
|
|
paths:
|
|
/forgotpasswords/findallforgotpasswordquestions:
|
|
get:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.findallforgotpasswordquestions}
|
|
operationId: findallforgotpasswordquestionsUsingGET
|
|
produces:
|
|
- '*/*'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/ForgotPasswordsQuestionsResponseDTO'
|
|
'400':
|
|
description: Something went wrong
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/forgotpasswords/loginbyusernameandanswers:
|
|
post:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.loginbyusernameandanswers}
|
|
operationId: loginbyusernameandanswersUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- in: body
|
|
name: answers
|
|
description: Answers
|
|
required: false
|
|
schema:
|
|
type: array
|
|
items:
|
|
$ref: '#/definitions/ForgotPasswordsQuestionsUsersAnswersRequestDTO'
|
|
- name: username
|
|
in: query
|
|
description: Username
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: Something went wrong
|
|
'404':
|
|
description: The user or answer don't exist
|
|
'422':
|
|
description: Invalid answers supplied to login. Must have at least 2 correct ones.
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/forgotpasswords/loginbyusernameandkey:
|
|
post:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.loginbyusernameandkey}
|
|
operationId: loginbyusernameandkeyUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: key
|
|
in: query
|
|
description: Key
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
- name: username
|
|
in: query
|
|
description: Username
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: Something went wrong
|
|
'422':
|
|
description: Invalid username/password supplied
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/forgotpasswords/passwordupdatebyusername:
|
|
post:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.passwordupdatebyusername}
|
|
operationId: passwordupdatebyusernameUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: newPassword
|
|
in: query
|
|
description: NewPassword
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
- name: username
|
|
in: query
|
|
description: Username
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
'400':
|
|
description: Something went wrong
|
|
'403':
|
|
description: Access denied
|
|
'404':
|
|
description: The user doesn't exist
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
/forgotpasswords/saveforgotpasswordquestionsusersanswers:
|
|
post:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.saveforgotpasswordquestionsusersanswers}
|
|
operationId: saveforgotpasswordquestionsusersanswersUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- in: body
|
|
name: answer
|
|
description: Forgot Password Questions Users Answers
|
|
required: false
|
|
schema:
|
|
$ref: '#/definitions/ForgotPasswordsQuestionsUsersAnswersRequestDTO'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
'400':
|
|
description: Something went wrong
|
|
'403':
|
|
description: Access denied
|
|
'404':
|
|
description: The user or forgot password questions don't exist
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
/forgotpasswords/sendkeybyemail:
|
|
post:
|
|
tags:
|
|
- forgotpasswords
|
|
summary: ${ForgotPasswordsController.sendkeybyemail}
|
|
operationId: sendkeybyemailUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: email
|
|
in: query
|
|
description: Email
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
- name: username
|
|
in: query
|
|
description: Username
|
|
required: false
|
|
type: string
|
|
allowEmptyValue: false
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
'400':
|
|
description: Something went wrong
|
|
'422':
|
|
description: Invalid email supplied
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/activate:
|
|
post:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.activate}
|
|
description: This is the user activation method.
|
|
operationId: activateUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: activationkey
|
|
in: query
|
|
description: Activation Key to activate the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: If user belongs to 'ROLE_INSTITUTION' the key should be collected from the EduCemadenOrganization registration. If the user belongs to 'ROLE_CLIENT' the key should be provided by a 'ROLE_INSTITUTION' valid user.
|
|
- name: username
|
|
in: query
|
|
description: username of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: Something went wrong
|
|
'403':
|
|
description: Access denied
|
|
'422':
|
|
description: User or ActivationKey registration issues
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
/users/existsByNickname:
|
|
post:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.existsByNickname}
|
|
description: From a nickname, this method returns if there is a nickname in db or not.
|
|
operationId: existsByNicknameUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: nickname
|
|
in: query
|
|
description: nickname of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: This is an unique field, and consumers should be aware of it.
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: boolean
|
|
'400':
|
|
description: Something went wrong
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/existsByUsername:
|
|
post:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.existsByUsername}
|
|
description: From a username, this method returns if there is a username in db or not.
|
|
operationId: existsByUsernameUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: username
|
|
in: query
|
|
description: username of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: boolean
|
|
'400':
|
|
description: Something went wrong
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/login:
|
|
post:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.login}
|
|
description: From a valid username and password, this method returns the JWT Token to be used in secure methods.
|
|
operationId: loginUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: password
|
|
in: query
|
|
description: password of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: i.e. P@s5w0rD
|
|
- name: username
|
|
in: query
|
|
description: username of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: Something went wrong
|
|
'404':
|
|
description: Invalid username/password supplied
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/me:
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.me}
|
|
description: This is the user search method by token.
|
|
operationId: whoamiUsingGET
|
|
produces:
|
|
- '*/*'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/UsersResponseDTO'
|
|
'400':
|
|
description: Something went wrong
|
|
'403':
|
|
description: Access denied
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
/users/refresh:
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: refresh
|
|
operationId: refreshUsingGET
|
|
produces:
|
|
- '*/*'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/signup:
|
|
post:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.signup}
|
|
description: This the signup method to create new users. By defaul all users are created as inactive. To activate, the method ${UserController.activate} should be invoked.
|
|
operationId: signupUsingPOST
|
|
consumes:
|
|
- application/json
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- in: body
|
|
name: user
|
|
description: Signup User
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/UsersRequestDTO'
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
type: string
|
|
'400':
|
|
description: Something went wrong
|
|
'422':
|
|
description: Required parameters should be provided
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
deprecated: false
|
|
/users/{id}:
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.findById}
|
|
description: This is the user findById search method.
|
|
operationId: findByIdUsingGET
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: id
|
|
in: query
|
|
description: user id
|
|
required: true
|
|
type: integer
|
|
format: int32
|
|
allowEmptyValue: false
|
|
x-example: A positive numeric id.
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/UsersResponseDTO'
|
|
'403':
|
|
description: Access denied
|
|
'404':
|
|
description: The user doesn't exist
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
/users/{username}:
|
|
get:
|
|
tags:
|
|
- users
|
|
summary: ${UserController.search}
|
|
description: This is the user search method by username.
|
|
operationId: searchUsingGET
|
|
produces:
|
|
- '*/*'
|
|
parameters:
|
|
- name: username
|
|
in: query
|
|
description: username of the user
|
|
required: true
|
|
type: string
|
|
allowEmptyValue: false
|
|
x-example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
responses:
|
|
'200':
|
|
description: OK
|
|
schema:
|
|
$ref: '#/definitions/UsersResponseDTO'
|
|
'403':
|
|
description: Access denied
|
|
'404':
|
|
description: The user doesn't exist
|
|
'500':
|
|
description: Expired or invalid JWT token
|
|
security:
|
|
- Authorization:
|
|
- global
|
|
- apiKey: []
|
|
deprecated: false
|
|
securityDefinitions:
|
|
Authorization:
|
|
type: apiKey
|
|
name: Authorization
|
|
in: header
|
|
definitions:
|
|
EduCemadenOrganizations:
|
|
type: object
|
|
properties:
|
|
activationkey:
|
|
type: string
|
|
format: uuid
|
|
active:
|
|
type: string
|
|
address:
|
|
type: string
|
|
creation_date:
|
|
type: string
|
|
id:
|
|
type: integer
|
|
format: int32
|
|
inep_code:
|
|
type: string
|
|
login:
|
|
type: string
|
|
name:
|
|
type: string
|
|
phone:
|
|
type: string
|
|
responsible:
|
|
type: string
|
|
type:
|
|
type: string
|
|
website:
|
|
type: string
|
|
title: EduCemadenOrganizations
|
|
ForgotPasswordsQuestionsResponseDTO:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int32
|
|
question:
|
|
type: string
|
|
active:
|
|
type: integer
|
|
format: int32
|
|
title: ForgotPasswordsQuestionsResponseDTO
|
|
ForgotPasswordsQuestionsUsersAnswersRequestDTO:
|
|
type: object
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int32
|
|
forgotpasswordquestionsid:
|
|
type: integer
|
|
format: int32
|
|
usersid:
|
|
type: integer
|
|
format: int32
|
|
answer:
|
|
type: string
|
|
title: ForgotPasswordsQuestionsUsersAnswersRequestDTO
|
|
UsersProviderActivationKey:
|
|
type: object
|
|
properties:
|
|
activationkey:
|
|
type: string
|
|
format: uuid
|
|
id:
|
|
type: integer
|
|
format: int32
|
|
usersid:
|
|
type: integer
|
|
format: int32
|
|
title: UsersProviderActivationKey
|
|
UsersRequestDTO:
|
|
type: object
|
|
required:
|
|
- city
|
|
- nickname
|
|
- password
|
|
- roles
|
|
- state
|
|
- termsofusage
|
|
- username
|
|
properties:
|
|
username:
|
|
type: string
|
|
example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
description: username of the user.
|
|
nickname:
|
|
type: string
|
|
example: i.e. beth2021. This is an unique field, and consumers should be aware of it.
|
|
description: nickname of the user.
|
|
password:
|
|
type: string
|
|
example: i.e. P@s5w0rD.
|
|
description: password of the user.
|
|
dateofborn:
|
|
type: string
|
|
format: date
|
|
example: i.e. 01/12/1978. Format should be dd/MM/yyyy.
|
|
description: Date of Born of the user.
|
|
gender:
|
|
type: string
|
|
example: i.e. M. 'M' stands for Male, 'F' Female, 'N' Not Informed
|
|
description: Gender of the user.
|
|
enum:
|
|
- '{@code M'
|
|
- F
|
|
- N}
|
|
state:
|
|
type: string
|
|
example: i.e. SP. State should be 2 characteres (UF)
|
|
description: state of the user.
|
|
city:
|
|
type: string
|
|
example: i.e. 'Governador Valadares'.
|
|
description: city of the user.
|
|
institutiontype:
|
|
type: string
|
|
example: i.e. 'E'. E stands for 'School', D 'Civil Defense', N 'No governamental', O 'others'
|
|
description: institution type of the user.
|
|
enum:
|
|
- '{@code E'
|
|
- D
|
|
- 'N'
|
|
- O}
|
|
institution:
|
|
type: string
|
|
example: i.e. 'Colegio Imaginario'.
|
|
description: institution of the user.
|
|
securityquestion:
|
|
type: string
|
|
example: i.e. 'What is my favorite color?'.
|
|
description: security question of the user.
|
|
securityanswer:
|
|
type: string
|
|
example: i.e. 'Blue'.
|
|
description: security answer of the user.
|
|
termsofusage:
|
|
type: boolean
|
|
example: false
|
|
description: terms of usage of the user.
|
|
roles:
|
|
type: array
|
|
example: i.e. [ROLE_CLIENT].
|
|
description: roles of the user.
|
|
items:
|
|
type: string
|
|
enum:
|
|
- ROLE_ADMIN
|
|
- ROLE_INSTITUTION
|
|
- ROLE_CLIENT
|
|
title: UsersRequestDTO
|
|
UsersResponseDTO:
|
|
type: object
|
|
required:
|
|
- active
|
|
- city
|
|
- id
|
|
- nickname
|
|
- state
|
|
- termsofusage
|
|
- username
|
|
properties:
|
|
id:
|
|
type: integer
|
|
format: int32
|
|
example: This is a SERIAL and Primary Key field.
|
|
description: id of the user.
|
|
username:
|
|
type: string
|
|
example: This is an unique field, and consumers should be aware of it. By convention, WP6 should send the user phone number (i.e. (99)99999-9999).
|
|
description: username of the user.
|
|
nickname:
|
|
type: string
|
|
example: i.e. beth2021. This is an unique field, and consumers should be aware of it.
|
|
description: nickname of the user.
|
|
dateofborn:
|
|
type: string
|
|
format: date
|
|
example: i.e. 01/12/1978. Format should be dd/MM/yyyy.
|
|
description: Date of Born of the user.
|
|
gender:
|
|
type: string
|
|
example: i.e. M. 'M' stands for Male, 'F' Female, 'N' Not Informed
|
|
description: Gender of the user.
|
|
enum:
|
|
- '{@code M'
|
|
- F
|
|
- N}
|
|
state:
|
|
type: string
|
|
example: i.e. SP. State should be 2 characteres (UF)
|
|
description: state of the user.
|
|
city:
|
|
type: string
|
|
example: i.e. 'Governador Valadares'.
|
|
description: city of the user.
|
|
institutiontype:
|
|
type: string
|
|
example: i.e. 'E'. E stands for 'School', D 'Civil Defense', N 'No governamental', O 'others'
|
|
description: institution type of the user.
|
|
enum:
|
|
- '{@code E'
|
|
- D
|
|
- 'N'
|
|
- O}
|
|
institution:
|
|
type: string
|
|
example: i.e. 'Colegio Imaginario'.
|
|
description: institution of the user.
|
|
securityquestion:
|
|
type: string
|
|
example: i.e. 'What is my favorite color?'.
|
|
description: security question of the user.
|
|
securityanswer:
|
|
type: string
|
|
example: i.e. 'Blue'.
|
|
description: security answer of the user.
|
|
termsofusage:
|
|
type: boolean
|
|
example: false
|
|
description: terms of usage of the user.
|
|
active:
|
|
type: integer
|
|
format: int32
|
|
example: i.e. true.
|
|
description: whether user is active or not.
|
|
roles:
|
|
type: array
|
|
example: i.e. ['ROLE_ADMIN'] means system administrator, ['ROLE_INSTITUTION'] means institution administrator, ['ROLE_CLIENT'] means regular users
|
|
description: list of institution type of the user.
|
|
items:
|
|
type: string
|
|
enum:
|
|
- '{@code ROLE_ADMIN'
|
|
- ROLE_INSTITUTION
|
|
- ROLE_CLIENT}
|
|
eduCemadenOrganization:
|
|
description: which Educational Cemaden Organization the user belongs.
|
|
$ref: '#/definitions/EduCemadenOrganizations'
|
|
providerActivationKey:
|
|
description: If this user can provide an activation key for other users ('ROLE_INSTITUTION'), this field will store the values.
|
|
$ref: '#/definitions/UsersProviderActivationKey'
|
|
title: UsersResponseDTO
|