---
tags : client, protocols
---
# Client-Server protocol
This page gives an overview of the API of the chat server.
## New user
```typescript
export const newUserRequestSchema = requestSchema.extend({
action: z.literal(ActionEnum.NEWUSER),
UserNick: userNickSchema,
email: emailSchema,
password: passwordSchema,
});
export type newUserRequest = z.infer<typeof newUserRequestSchema>;
export const newUserResponseSchema = responseSchema.extend({
action: z.literal(ActionEnum.NEWUSER),
userId: userIdSchema,
});
export type newUserResponse = z.infer<typeof newUserResponseSchema>;
```
- Login (LoginRequest)
- als email + ww kloppen -> user wordt ingelogd : LoginResponce
- als email niet bestaat : error -> error : serverErrorResponse
- als wachtwoord niet kopt : error : serverErrorResponse
- Get channels (getChannelsRequest)
- user is nog niet ingelogd -> error : serverErrorResponse
- channels worden doorgegeven : getChannelsResponce
- Create channel (createChannelRequest)
- user is nog niet ingelogd -> error : serverErrorResponse
- channel name bestaat al -> error : serverErrorResponse
- channel wordt gemaakt : createChannelResponse
- Change channel (changeChannelRequest)
- user is niet ingelogd -> error : serverErrorResponse
- channelId bestaat niet -> error : serverErrorResponse
- user wordt toegevoegd aan de channel -> changeChannelResponse
- Delete channel (deleteChannelRequest)
- user is niet ingelogd -> error : serverErrorResponse
- channelId bestaat niet -> error : serverErrorResponse
- user is niet de owner van de channel -> error : serverErrorResponse
- channel wordt verwijderd : deleteChannelResponse
- interface om aantal messages op te vragen (van, tot)
- Protocols types
- Command : set/choose nickname
- Command : join channel
- Command : create and join channel
- (Command : see older messages from channel)
- Message : from other people
- Message : older messages from chatroom
- Message : Own message with timings