Skip to content

joaoVictor-irrah/z-api-demo-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ‡§πŸ‡· Demo de IntegraΓ§Γ£o com Z-API (WhatsApp) usando Spring Boot + Clean Architecture

VisΓ£o Geral

Este projeto Γ© uma demo de integraΓ§Γ£o com a Z-API, uma API para WhatsApp, construΓ­da com Spring Boot seguindo rigorosamente o padrΓ£o de Clean Architecture.

A aplicaΓ§Γ£o expΓ΅e endpoints simples para:

  • Obter o QR Code de conexΓ£o da instΓ’ncia;
  • Desconectar a instΓ’ncia;
  • Obter dados do dispositivo conectado;
  • Enviar mensagens de texto, imagem e vΓ­deo via WhatsApp;
  • Sincronizar e armazenar chats automaticamente da Z-API.

O projeto usa SQLite como banco de dados local, com uma tabela chats para armazenar informaΓ§Γ΅es de contatos/conversas.


Tecnologias Utilizadas

  • Java 17+
  • Spring Boot 3.2.x
  • Spring Data JPA
  • WebClient (chamadas HTTP reativas)
  • Z-API (integraΓ§Γ£o com WhatsApp)
  • SQLite (banco de dados local)
  • Lombok (reduΓ§Γ£o de boilerplate)
  • Maven (gerenciamento de dependΓͺncias)
  • Arquitetura em camadas (Clean Architecture)

Arquitetura (Clean Architecture)

A estrutura segue uma separaΓ§Γ£o clara de responsabilidades seguindo os princΓ­pios de Clean Architecture:

🎯 Domain Layer (Camada de Domínio)

PrincΓ­pio: Esta camada nΓ£o tem dependΓͺncias de frameworks externos. ContΓ©m apenas lΓ³gica de negΓ³cio pura.

  • entities/ – Entidades de domΓ­nio (ex.: Chat)
  • repositories/ – Interfaces puras de repositΓ³rios (sem dependΓͺncia de JPA/Spring)
  • usecases/ – Casos de uso (interactors) com lΓ³gica de negΓ³cio
    • messages/ – Envio de texto, imagem e vΓ­deo
    • chats/ – Consulta e sincronizaΓ§Γ£o de chats
    • instance/ – OperaΓ§Γ΅es da instΓ’ncia (QR Code, desconectar, dados do dispositivo)

πŸ”§ Data Layer (Camada de Dados)

PrincΓ­pio: Implementa as interfaces do domΓ­nio usando frameworks especΓ­ficos (Spring, JPA, etc).

  • config/ – ConfiguraΓ§Γ£o da Z-API
  • services/ – ServiΓ§o HTTP para comunicaΓ§Γ£o com Z-API (ZApiHttpService)
  • repositories/ – ImplementaΓ§Γ£o dos repositΓ³rios
    • ChatRepositoryJpa – Interface Spring Data JPA
    • ChatRepositoryImpl – Adaptador que implementa a interface do domΓ­nio

PadrΓ£o Adapter: O ChatRepositoryImpl adapta o ChatRepositoryJpa (Spring Data) para a interface ChatRepository (Domain), mantendo o domΓ­nio independente de frameworks.

🎨 Presentation Layer (Camada de Apresentação)

  • controllers/ – Controllers REST (Spring MVC)
    • MessagesController
    • ChatsController
    • InstanceController

Diagrama de DependΓͺncias

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Presentation Layer                     β”‚
β”‚  (Controllers - REST API)                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
                 ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Domain Layer                           β”‚
β”‚  (Entities, Use Cases, Repository Interfaces)    β”‚
β”‚  ⚠️ SEM DEPENDÊNCIAS DE FRAMEWORKS               β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 ↑
                 β”‚ implementa
                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Data Layer                             β”‚
β”‚  (Repository Impl, JPA, HTTP Services, Config)   β”‚
β”‚  βœ… USA Spring, JPA, WebClient                   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Endpoints DisponΓ­veis

Messages (envio de mensagens)

Base path: /messages

  • POST /messages/send-text
    Envia uma mensagem de texto.

    {
      "phone": "5511999999999",
      "message": "OlΓ‘, mundo!"
    }
  • POST /messages/send-image
    Envia uma mensagem de imagem (com URL).

    {
      "phone": "5511999999999",
      "image": "https://example.com/image.jpg",
      "caption": "Legenda da imagem"
    }
  • POST /messages/send-video
    Envia uma mensagem de vΓ­deo (com URL).

    {
      "phone": "5511999999999",
      "video": "https://example.com/video.mp4",
      "caption": "Legenda do vΓ­deo"
    }

Chats

Base path: /chats

  • GET /chats/get-chats
    Sincroniza chats da Z-API e retorna todos os chats armazenados.

    Comportamento:

    1. Busca chats da API Z-API
    2. Para cada chat retornado, verifica se jΓ‘ existe no banco (por lid ou phone)
    3. Se nΓ£o existir, cria e salva um novo registro
    4. Retorna todos os chats do banco de dados

    Nota: Em caso de erro na API, retorna apenas os chats do banco local.

Instance (instΓ’ncia Z-API / dispositivo)

Base path: /instance

  • GET /instance/me
    Retorna dados do dispositivo/instΓ’ncia conectada.

  • GET /instance/disconnect
    Desconecta a instΓ’ncia do WhatsApp.

  • GET /instance/qr-code
    Retorna o QR Code para conectar o dispositivo ao WhatsApp.


Banco de Dados

O projeto utiliza SQLite com uma tabela principal:

Tabela chats

Coluna Tipo DescriΓ§Γ£o
id STRING UUID - chave primΓ‘ria
name STRING Nome do contato/chat
phone STRING Telefone (formato internacional recomendado)
lid STRING Identificador lΓ³gico usado pela integraΓ§Γ£o

O banco Γ© inicializado automaticamente na primeira execuΓ§Γ£o, criando o arquivo database.sqlite na raiz do projeto via JPA/Hibernate.


PrΓ©-requisitos

  • Java 17+ (JDK instalado)
  • Maven (para build e dependΓͺncias)
  • Conta/configuraΓ§Γ£o vΓ‘lida na Z-API (instanceToken, instanceId, clientToken)

InstalaΓ§Γ£o

# Clonar o repositΓ³rio
git clone https://github.com/joaoVictor-irrah/z-api-demo-java.git
cd z-api-demo-java

# Compilar o projeto
mvn clean install

ConfiguraΓ§Γ£o

  1. Copie o arquivo .env.example e renomeie para .env:
cp .env.example .env
  1. Edite o arquivo .env ou configure as variΓ‘veis de ambiente:
Z_API_INSTANCE_ID=seu_instance_id
Z_API_INSTANCE_TOKEN=seu_instance_token
Z_API_CLIENT_TOKEN=seu_client_token
  1. No Linux/macOS, exporte as variΓ‘veis:
export Z_API_INSTANCE_ID=seu_instance_id
export Z_API_INSTANCE_TOKEN=seu_instance_token
export Z_API_CLIENT_TOKEN=seu_client_token
  1. No Windows (CMD):
set Z_API_INSTANCE_ID=seu_instance_id
set Z_API_INSTANCE_TOKEN=seu_instance_token
set Z_API_CLIENT_TOKEN=seu_client_token

Ou edite diretamente o src/main/resources/application.properties (nΓ£o recomendado para produΓ§Γ£o).


ExecuΓ§Γ£o do Projeto

# Desenvolvimento
mvn spring-boot:run

# Ou executar o JAR compilado
mvn clean package
java -jar target/z-api-demo-java-1.0.0.jar

O servidor serΓ‘ iniciado na porta 3000 por padrΓ£o: http://localhost:3000


Fluxo BΓ‘sico de Uso

  1. Obter QR Code

    • Chamar GET http://localhost:3000/instance/qr-code
    • Escanear o QR Code com o WhatsApp do dispositivo.
  2. Verificar dispositivo conectado

    • Chamar GET http://localhost:3000/instance/me.
  3. Sincronizar chats

    • GET http://localhost:3000/chats/get-chats busca chats da Z-API e armazena no banco automaticamente.
  4. Enviar mensagens

    • POST http://localhost:3000/messages/send-text para texto
    • POST http://localhost:3000/messages/send-image para imagem
    • POST http://localhost:3000/messages/send-video para vΓ­deo
  5. Desconectar instΓ’ncia

    • GET http://localhost:3000/instance/disconnect.

Estrutura de Pastas

src/main/java/com/example/zapidemo/
β”œβ”€β”€ domain/                              # CAMADA DE DOMÍNIO (sem dependΓͺncias externas)
β”‚   β”œβ”€β”€ entities/
β”‚   β”‚   └── Chat.java                   # Entidade de domΓ­nio
β”‚   β”œβ”€β”€ repositories/
β”‚   β”‚   └── ChatRepository.java         # Interface pura (sem JPA)
β”‚   └── usecases/
β”‚       β”œβ”€β”€ messages/
β”‚       β”‚   β”œβ”€β”€ SendTextUseCase.java
β”‚       β”‚   β”œβ”€β”€ SendImageUseCase.java
β”‚       β”‚   └── SendVideoUseCase.java
β”‚       β”œβ”€β”€ chats/
β”‚       β”‚   └── GetChatsUseCase.java    # Sincroniza chats da API
β”‚       └── instance/
β”‚           β”œβ”€β”€ GetMeUseCase.java
β”‚           β”œβ”€β”€ DisconnectUseCase.java
β”‚           └── GetQrCodeUseCase.java
β”‚
β”œβ”€β”€ data/                                # CAMADA DE DADOS (implementaΓ§Γ΅es com frameworks)
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   └── ZApiConfig.java             # ConfiguraΓ§Γ£o Z-API
β”‚   β”œβ”€β”€ repositories/
β”‚   β”‚   β”œβ”€β”€ ChatRepositoryJpa.java      # Interface Spring Data JPA
β”‚   β”‚   └── ChatRepositoryImpl.java     # Adaptador Domain β†’ JPA
β”‚   └── services/
β”‚       └── ZApiHttpService.java        # WebClient para Z-API (get, getList, post)
β”‚
β”œβ”€β”€ presentation/                        # CAMADA DE APRESENTAÇÃO
β”‚   └── controllers/
β”‚       β”œβ”€β”€ MessagesController.java
β”‚       β”œβ”€β”€ ChatsController.java
β”‚       └── InstanceController.java
β”‚
└── ZApiDemoApplication.java             # Classe principal Spring Boot

Componentes Importantes

ZApiHttpService

ServiΓ§o para comunicaΓ§Γ£o com a Z-API via WebClient.

MΓ©todos disponΓ­veis:

  • get(endpoint) – Para respostas JSON em formato de objeto {...}
  • getList(endpoint) – Para respostas JSON em formato de array [...]
  • post(endpoint, data) – Para envio de dados via POST

GetChatsUseCase

Caso de uso que implementa a sincronizaΓ§Γ£o automΓ‘tica de chats:

  1. Busca chats da Z-API usando zApiHttpService.getList("/chats")
  2. Para cada chat retornado:
    • Verifica se jΓ‘ existe no banco (por lid ou phone)
    • Se nΓ£o existir, cria novo registro com UUID e salva
  3. Retorna todos os chats armazenados no banco

ObservaΓ§Γ΅es

  • Este projeto segue Clean Architecture de forma rigorosa:

    • Domain Layer Γ© independente de frameworks
    • Data Layer implementa interfaces do domΓ­nio usando Spring/JPA
    • Presentation Layer expΓ΅e REST API
  • A sincronizaΓ§Γ£o de chats Γ© automΓ‘tica ao chamar /chats/get-chats

  • Este projeto Γ© uma port do projeto original em NestJS/TypeScript para Java/Spring Boot, mantendo a mesma arquitetura e funcionalidades.


πŸ‡ΊπŸ‡Έ Z-API (WhatsApp) Integration Demo using Spring Boot + Clean Architecture

Overview

This project is a demo integration with Z-API, a WhatsApp API, built with Spring Boot strictly following the Clean Architecture pattern.

The application exposes simple endpoints to:

  • Get the instance connection QR Code;
  • Disconnect the instance;
  • Get device information of the connected WhatsApp;
  • Send basic text, image and video messages via WhatsApp;
  • Synchronize and store chats automatically from Z-API.

The project uses SQLite as a local database with a chats table to store contact/chat information.


Tech Stack

  • Java 17+
  • Spring Boot 3.2.x
  • Spring Data JPA
  • WebClient (reactive HTTP calls)
  • Z-API (WhatsApp integration)
  • SQLite (local database)
  • Lombok (boilerplate reduction)
  • Maven (dependency management)
  • Layered structure using Clean Architecture

Architecture (Clean Architecture)

The project structure follows clear separation of concerns following Clean Architecture principles:

🎯 Domain Layer

Principle: This layer has no external framework dependencies. Contains only pure business logic.

  • entities/ – Domain entities (e.g., Chat)
  • repositories/ – Pure interfaces (no JPA/Spring dependencies)
  • usecases/ – Use cases (interactors) with business logic
    • messages/ – Send text, image, video
    • chats/ – Fetch and synchronize chats
    • instance/ – Instance operations (QR Code, disconnect, device data)

πŸ”§ Data Layer

Principle: Implements domain interfaces using specific frameworks (Spring, JPA, etc).

  • config/ – Z-API configuration
  • services/ – HTTP service for Z-API communication (ZApiHttpService)
  • repositories/ – Repository implementations
    • ChatRepositoryJpa – Spring Data JPA interface
    • ChatRepositoryImpl – Adapter implementing domain interface

Adapter Pattern: ChatRepositoryImpl adapts ChatRepositoryJpa (Spring Data) to ChatRepository interface (Domain), keeping the domain framework-independent.

🎨 Presentation Layer

  • controllers/ – REST controllers (Spring MVC)
    • MessagesController
    • ChatsController
    • InstanceController

Dependency Diagram

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Presentation Layer                     β”‚
β”‚  (Controllers - REST API)                        β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 β”‚
                 ↓
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Domain Layer                           β”‚
β”‚  (Entities, Use Cases, Repository Interfaces)    β”‚
β”‚  ⚠️ NO FRAMEWORK DEPENDENCIES                    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
                 ↑
                 β”‚ implements
                 β”‚
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚           Data Layer                             β”‚
β”‚  (Repository Impl, JPA, HTTP Services, Config)   β”‚
β”‚  βœ… USES Spring, JPA, WebClient                  β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Available Endpoints

Messages

Base path: /messages

  • POST /messages/send-text
    Sends a text message.

    {
      "phone": "5511999999999",
      "message": "Hello, world!"
    }
  • POST /messages/send-image
    Sends an image message (via URL).

    {
      "phone": "5511999999999",
      "image": "https://example.com/image.jpg",
      "caption": "Image caption"
    }
  • POST /messages/send-video
    Sends a video message (via URL).

    {
      "phone": "5511999999999",
      "video": "https://example.com/video.mp4",
      "caption": "Video caption"
    }

Chats

Base path: /chats

  • GET /chats/get-chats
    Synchronizes chats from Z-API and returns all stored chats.

    Behavior:

    1. Fetches chats from Z-API
    2. For each returned chat, checks if it already exists in database (by lid or phone)
    3. If it doesn't exist, creates and saves a new record
    4. Returns all chats from the database

    Note: In case of API error, returns only chats from local database.

Instance (Z-API / device)

Base path: /instance

  • GET /instance/me
    Returns information about the connected device/instance.

  • GET /instance/disconnect
    Disconnects the WhatsApp instance.

  • GET /instance/qr-code
    Returns the QR Code for pairing the WhatsApp device.


Database

The project uses SQLite with a main table:

Table chats

Column Type Description
id STRING UUID - primary key
name STRING Contact/chat name
phone STRING Phone number (international format recommended)
lid STRING Logical identifier used by the integration

The database is initialized automatically at startup, creating the database.sqlite file at the project root via JPA/Hibernate.


Requirements

  • Java 17+ (JDK installed)
  • Maven (for build and dependencies)
  • A valid Z-API account/configuration (instanceToken, instanceId, clientToken)

Installation

# Clone the repository
git clone https://github.com/joaoVictor-irrah/z-api-demo-java.git
cd z-api-demo-java

# Build the project
mvn clean install

Configuration

  1. Copy .env.example and rename to .env:
cp .env.example .env
  1. Edit the .env file or set environment variables:
Z_API_INSTANCE_ID=your_instance_id
Z_API_INSTANCE_TOKEN=your_instance_token
Z_API_CLIENT_TOKEN=your_client_token
  1. On Linux/macOS, export the variables:
export Z_API_INSTANCE_ID=your_instance_id
export Z_API_INSTANCE_TOKEN=your_instance_token
export Z_API_CLIENT_TOKEN=your_client_token
  1. On Windows (CMD):
set Z_API_INSTANCE_ID=your_instance_id
set Z_API_INSTANCE_TOKEN=your_instance_token
set Z_API_CLIENT_TOKEN=your_client_token

Or edit src/main/resources/application.properties directly (not recommended for production).


Running the Project

# Development
mvn spring-boot:run

# Or run the compiled JAR
mvn clean package
java -jar target/z-api-demo-java-1.0.0.jar

The server will start on port 3000 by default: http://localhost:3000


Basic Usage Flow

  1. Get QR Code

    • Call GET http://localhost:3000/instance/qr-code
    • Scan the QR Code with your WhatsApp app.
  2. Check connected device

    • Call GET http://localhost:3000/instance/me.
  3. Synchronize chats

    • GET http://localhost:3000/chats/get-chats fetches chats from Z-API and stores them automatically.
  4. Send messages

    • POST http://localhost:3000/messages/send-text for text
    • POST http://localhost:3000/messages/send-image for image
    • POST http://localhost:3000/messages/send-video for video
  5. Disconnect instance

    • Call GET http://localhost:3000/instance/disconnect.

Folder Structure

src/main/java/com/example/zapidemo/
β”œβ”€β”€ domain/                              # DOMAIN LAYER (no external dependencies)
β”‚   β”œβ”€β”€ entities/
β”‚   β”‚   └── Chat.java                   # Domain entity
β”‚   β”œβ”€β”€ repositories/
β”‚   β”‚   └── ChatRepository.java         # Pure interface (no JPA)
β”‚   └── usecases/
β”‚       β”œβ”€β”€ messages/
β”‚       β”‚   β”œβ”€β”€ SendTextUseCase.java
β”‚       β”‚   β”œβ”€β”€ SendImageUseCase.java
β”‚       β”‚   └── SendVideoUseCase.java
β”‚       β”œβ”€β”€ chats/
β”‚       β”‚   └── GetChatsUseCase.java    # Synchronizes chats from API
β”‚       └── instance/
β”‚           β”œβ”€β”€ GetMeUseCase.java
β”‚           β”œβ”€β”€ DisconnectUseCase.java
β”‚           └── GetQrCodeUseCase.java
β”‚
β”œβ”€β”€ data/                                # DATA LAYER (framework implementations)
β”‚   β”œβ”€β”€ config/
β”‚   β”‚   └── ZApiConfig.java             # Z-API configuration
β”‚   β”œβ”€β”€ repositories/
β”‚   β”‚   β”œβ”€β”€ ChatRepositoryJpa.java      # Spring Data JPA interface
β”‚   β”‚   └── ChatRepositoryImpl.java     # Domain β†’ JPA adapter
β”‚   └── services/
β”‚       └── ZApiHttpService.java        # WebClient for Z-API (get, getList, post)
β”‚
β”œβ”€β”€ presentation/                        # PRESENTATION LAYER
β”‚   └── controllers/
β”‚       β”œβ”€β”€ MessagesController.java
β”‚       β”œβ”€β”€ ChatsController.java
β”‚       └── InstanceController.java
β”‚
└── ZApiDemoApplication.java             # Spring Boot main class

Important Components

ZApiHttpService

Service for Z-API communication via WebClient.

Available methods:

  • get(endpoint) – For JSON responses in object format {...}
  • getList(endpoint) – For JSON responses in array format [...]
  • post(endpoint, data) – For sending data via POST

GetChatsUseCase

Use case that implements automatic chat synchronization:

  1. Fetches chats from Z-API using zApiHttpService.getList("/chats")
  2. For each returned chat:
    • Checks if it already exists in database (by lid or phone)
    • If it doesn't exist, creates new record with UUID and saves
  3. Returns all chats stored in database

Notes

  • This project follows Clean Architecture rigorously:

    • Domain Layer is framework-independent
    • Data Layer implements domain interfaces using Spring/JPA
    • Presentation Layer exposes REST API
  • Chat synchronization is automatic when calling /chats/get-chats

  • This project is a port of the original NestJS/TypeScript project to Java/Spring Boot, maintaining the same architecture and functionality.


License

MIT


Author

JoaoMadeiraxyz


Contributing

Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages