# paulprk/whatsapi-rest-php architecture

> Architecture diagram of the GitHub repository paulprk/whatsapi-rest-php, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-09). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/paulprk/whatsapi-rest-php
- Repository: https://github.com/paulprk/whatsapi-rest-php

## Overview

WhatsApi is a Slim 4 REST API for user accounts, authentication, two-person chats, and messages. Clients send JSON requests; the registered endpoint handlers validate inputs, enforce access rules, and use PDO-backed MySQL operations to return JSON results. The main workflow is authenticated users sending messages, which may create a chat, then listing chats or retrieving chat history; users can also manage profiles and admins can delete users or messages. The README documents additional endpoint behavior not fully visible in the sampled excerpts, so those capabilities are included without inferring finer internal call sequences.

Main entry points: [`slim/db.php`](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/db.php) (PDO connection), [`slim/index.php`](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/index.php) (HTTP application), [`slim/middleware.php`](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/middleware.php) (Token middleware), [`slim/auth.php`](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/auth.php) (Login and logout)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_api["API runtime"]
  node_entry["HTTP application<br/>[index.php]"]
  node_validation["Input validation<br/>[validaciones.php]"]
end

subgraph group_identity["Identity and users"]
  node_auth["Login and logout<br/>[auth.php]"]
  node_tokens["Token middleware<br/>[middleware.php]"]
  node_users["User accounts<br/>[users.php]"]
end

subgraph group_messaging["Chats and messages"]
  node_chat_ops["Chat operations<br/>[chats.php]"]
  node_message_delete["Message deletion<br/>[mensajes.php]"]
end

subgraph group_persistence["Persistence"]
  node_db_access["PDO connection<br/>[db.php]"]
  node_mysql[("MySQL data")]
end

node_client(("API client"))

node_client -->|"sends requests"| node_entry
node_entry -->|"registers routes"| node_auth
node_entry -->|"registers routes"| node_users
node_entry -->|"registers routes"| node_chat_ops
node_entry -->|"registers routes"| node_message_delete
node_auth -->|"protects logout"| node_tokens
node_users -->|"protects routes"| node_tokens
node_chat_ops -->|"protects routes"| node_tokens
node_message_delete -->|"protects deletion"| node_tokens
node_auth -->|"reads and updates"| node_db_access
node_tokens -->|"checks and renews"| node_db_access
node_users -->|"queries accounts"| node_db_access
node_chat_ops -->|"queries chat data"| node_db_access
node_message_delete -->|"deletes messages"| node_db_access
node_auth -->|"validates login"| node_validation
node_users -->|"validates fields"| node_validation
node_chat_ops -->|"validates chat inputs"| node_validation
node_message_delete -->|"parses message ID"| node_validation
node_db_access -->|"connects to"| node_mysql

click node_entry "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/index.php"
click node_auth "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/auth.php"
click node_tokens "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/middleware.php"
click node_users "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/users.php"
click node_validation "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/validaciones.php"
click node_chat_ops "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/chats.php"
click node_message_delete "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/mensajes.php"
click node_db_access "https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/db.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_entry,node_validation,node_client toneBlue
class node_auth,node_tokens,node_users toneAmber
class node_chat_ops,node_message_delete toneMint
class node_db_access,node_mysql toneRose
```

## Components

### API runtime

- [HTTP application](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/index.php): `slim/index.php`
- [Input validation](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/validaciones.php): `slim/validaciones.php`

### Identity and users

- [Login and logout](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/auth.php): `slim/auth.php`
- [Token middleware](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/middleware.php): `slim/middleware.php`
- [User accounts](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/users.php): `slim/users.php`

### Chats and messages

- [Chat operations](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/chats.php): `slim/chats.php`
- [Message deletion](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/mensajes.php): `slim/mensajes.php`

### Persistence

- [PDO connection](https://github.com/paulprk/whatsapi-rest-php/blob/main/slim/db.php): `slim/db.php`
- **MySQL data**

### Other components

- **API client**

## Connections

- API client → HTTP application: sends requests (evidence: `README.md`)
- HTTP application → Login and logout: registers routes (evidence: `slim/index.php`)
- HTTP application → User accounts: registers routes (evidence: `slim/index.php`)
- HTTP application → Chat operations: registers routes (evidence: `slim/index.php`)
- HTTP application → Message deletion: registers routes (evidence: `slim/index.php`)
- Login and logout → Token middleware: protects logout (evidence: `slim/auth.php`)
- User accounts → Token middleware: protects routes (evidence: `slim/users.php`)
- Chat operations → Token middleware: protects routes (evidence: `slim/chats.php`)
- Message deletion → Token middleware: protects deletion (evidence: `slim/mensajes.php`)
- Login and logout → PDO connection: reads and updates (evidence: `slim/auth.php`)
- Token middleware → PDO connection: checks and renews (evidence: `slim/middleware.php`)
- User accounts → PDO connection: queries accounts (evidence: `slim/users.php`)
- Chat operations → PDO connection: queries chat data (evidence: `slim/chats.php`)
- Message deletion → PDO connection: deletes messages (evidence: `slim/mensajes.php`)
- Login and logout → Input validation: validates login (evidence: `slim/auth.php`)
- User accounts → Input validation: validates fields (evidence: `slim/users.php`)
- Chat operations → Input validation: validates chat inputs (evidence: `slim/chats.php`)
- Message deletion → Input validation: parses message ID (evidence: `slim/mensajes.php`)
- PDO connection → MySQL data: connects to (evidence: `slim/db.php`)
