126 lines
1.9 KiB
TypeScript
126 lines
1.9 KiB
TypeScript
import {ICredentials} from './ICredentials'
|
|
import {INewUser} from './INewUser'
|
|
import {ITeam} from './ITeam'
|
|
import {IUser} from './IUser'
|
|
import {IUserInTeam} from './IUserInTeam'
|
|
|
|
export interface IAPIDef {
|
|
'/auth/register': {
|
|
'post': {
|
|
body: INewUser
|
|
response: IUser
|
|
}
|
|
}
|
|
'/auth/login': {
|
|
'post': {
|
|
body: ICredentials
|
|
response: IUser
|
|
}
|
|
}
|
|
'/auth/logout': {
|
|
'get': {}
|
|
}
|
|
'/auth/password': {
|
|
'post': {
|
|
body: {
|
|
oldPassword: string
|
|
newPassword: string
|
|
}
|
|
}
|
|
}
|
|
'/users/profile': {
|
|
'get': {
|
|
response: {
|
|
id: number
|
|
}
|
|
}
|
|
}
|
|
'/users/emails/:email': {
|
|
// TODO exposing search by email might be a security concern
|
|
'get': {
|
|
params: {
|
|
email: string
|
|
}
|
|
response: IUser | undefined
|
|
}
|
|
}
|
|
|
|
// TEAM
|
|
|
|
'/teams': {
|
|
post: {
|
|
body: {
|
|
name: string
|
|
}
|
|
response: ITeam
|
|
}
|
|
}
|
|
|
|
'/teams/:id': {
|
|
get: {
|
|
params: {
|
|
id: number
|
|
}
|
|
response: ITeam | undefined
|
|
}
|
|
put: {
|
|
params: {
|
|
id: number
|
|
}
|
|
body: {
|
|
name: string
|
|
}
|
|
response: ITeam
|
|
}
|
|
delete: {
|
|
params: {
|
|
id: number
|
|
}
|
|
response: {id: number}
|
|
}
|
|
}
|
|
|
|
'/teams/:teamId/users': {
|
|
get: {
|
|
params: {
|
|
teamId: number
|
|
}
|
|
response: IUserInTeam[] // TODO
|
|
}
|
|
}
|
|
|
|
'/teams/:teamId/users/:userId': {
|
|
post: {
|
|
params: {
|
|
teamId: number
|
|
userId: number
|
|
}
|
|
// body: {
|
|
// roleId: number
|
|
// }
|
|
response: IUserInTeam
|
|
}
|
|
delete: {
|
|
params: {
|
|
teamId: number
|
|
userId: number
|
|
}
|
|
// body: {
|
|
// roleId: number
|
|
// }
|
|
response: {
|
|
teamId: number
|
|
userId: number
|
|
// roleId: number
|
|
}
|
|
}
|
|
}
|
|
|
|
'/my/teams': {
|
|
get: {
|
|
response: ITeam[]
|
|
}
|
|
}
|
|
|
|
}
|