Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions transaction-validation-api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
HELP.md
target/
!.mvn/wrapper/maven-wrapper.jar
!**/src/main/**/target/
!**/src/test/**/target/

### STS ###
.apt_generated
.classpath
.factorypath
.project
.settings
.springBeans
.sts4-cache

### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr

### NetBeans ###
/nbproject/private/
/nbbuild/
/dist/
/nbdist/
/.nb-gradle/
build/
!**/src/main/**/build/
!**/src/test/**/build/

### VS Code ###
.vscode/
Binary file not shown.
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.6/apache-maven-3.9.6-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.2.0/maven-wrapper-3.2.0.jar
109 changes: 109 additions & 0 deletions transaction-validation-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
# Transaction Validation API

Este proyecto es una API para la validación de transacciones financieras, desarrollada en Spring Boot. La API permite crear, obtener y buscar transacciones a través de varios endpoints.

## Endpoints

### Crear una transacción

**URL:** `/api/transactions/create`

**Método HTTP:** `POST`

**Descripción:** Crea una nueva transacción en el sistema.

**Request Body:**

- `TransactionRequest` (JSON): Objeto que representa la transacción a ser creada.

**Response:**

- `200 OK`: Transacción creada exitosamente.
- `Transaction` (JSON): Objeto de la transacción creada.

**Ejemplo:**

```json
{
"id": 1,
"accountExternalIdDebit": "3fa85f64-5717-4562-b3fc-5a463f22afa6",
"accountExternalIdCredit": "3fa29f64-5717-4562-b3fc-2b963f11afa6",
"tranType": "Agente",
"value": 1299.0,
"status": "Pendiente",
"createdAt": "16-05-2024 22:58:14"
}
```

### Obtener todas las transacciones

**URL:** `/api/transactions`

**Método HTTP:** `GET`

**Descripción:** Obtiene una lista de todas las transacciones registradas en el sistema.

**Response:**

- `200 OK`: Lista de todas las transacciones.
- `List<Transaction>` (JSON): Lista de objetos de transacciones.

**Ejemplo de Respuesta:**

```json
[
{
"id": 1,
"accountExternalIdDebit": "3fa85f64-3267-1234-b3fc-5a463f22afa6",
"accountExternalIdCredit": "3fa29f64-4698-3623-b3fc-2b963f11afa6",
"tranType": "Agente",
"value": 399.0,
"status": "Aprobado",
"createdAt": "16-05-2024 23:06:32"
},
{
"id": 2,
"accountExternalIdDebit": "3fa85f64-3267-4562-b3fc-5a463f22afa6",
"accountExternalIdCredit": "3fa29f64-4698-4562-b3fc-2b963f11afa6",
"tranType": "Agente",
"value": 1299.0,
"status": "Rechazado",
"createdAt": "16-05-2024 23:06:44"
}
]
```

### Buscar transacciones por ID externo de cuenta

**URL:** `/api/transactions/search`

**Método HTTP:** `GET`

**Descripción:** Busca transacciones utilizando el ID externo de la cuenta.

**Parámetro de URL:**

- `accountExternalId` (UUID): ID externo de la cuenta para buscar transacciones.

**Response:**

- `200 OK`: Lista de transacciones asociadas con el ID externo de la cuenta.
- `List<TransactionResponse>` (JSON): Lista de respuestas de transacciones.

**Ejemplo de Respuesta:**

```json
[
{
"transactionExternalId": "3fa29f64-5717-4562-b3fc-2b963f11afa6",
"transactionType": {
"name": "Agente"
},
"transactionStatus": {
"name": "Pendiente"
},
"value": 1299.0,
"createdAt": "16-05-2024 22:58:14"
}
]
```
47 changes: 47 additions & 0 deletions transaction-validation-api/docker-compose.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
version: "3.7"
services:
postgres:
image: postgres:14
ports:
- "5432:5432"
environment:
POSTGRES_USER: postgres
POSTGRES_PASSWORD: postgres
POSTGRES_DB: transaction
zookeeper:
image: confluentinc/cp-zookeeper:5.5.3
environment:
ZOOKEEPER_CLIENT_PORT: 2181

kafka:
image: confluentinc/cp-enterprise-kafka:5.5.3
depends_on:
- zookeeper
environment:
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
KAFKA_ADVERTISED_LISTENERS: "PLAINTEXT://kafka:29092,PLAINTEXT_HOST://localhost:9092"
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: "PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT"
KAFKA_BROKER_ID: 1
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
KAFKA_JMX_PORT: 9991
ports:
- "9092:9092"

app:
build:
context: .
dockerfile: Dockerfile
depends_on:
- postgres
- kafka
ports:
- "8080:8080"
environment:
SPRING_DATASOURCE_URL: jdbc:postgresql://postgres:5432/transaction
SPRING_DATASOURCE_USERNAME: postgres
SPRING_DATASOURCE_PASSWORD: postgres
SPRING_KAFKA_BOOTSTRAP_SERVERS: kafka:9092

volumes:
oracle-data: {}
oracle-backup: {}
7 changes: 7 additions & 0 deletions transaction-validation-api/dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
FROM openjdk:17-jdk-alpine

COPY target/transaction-validation-api-0.0.1-SNAPSHOT.jar java-app.jar

EXPOSE 8080

ENTRYPOINT ["java", "-jar", "java-app.jar"]
Loading