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[]
}
}
}