---
# System prepended metadata

title: Client-Server protocol
tags: [' protocols', client]

---

---
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