# heetaru/warranty-claims-api architecture

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

- Interactive diagram: https://gitdiagram.com/heetaru/warranty-claims-api
- Repository: https://github.com/heetaru/warranty-claims-api

## Overview

Warranty Claims API is a Spring Boot service for applicants to create claims, upload proof, and submit them for a SOAP warranty check; reviewers then approve or reject submitted claims. Claim and document metadata use PostgreSQL, while file contents use S3-compatible storage. The graph separates claim handling, document handling, warranty integration, and cross-cutting access/error handling. Edges follow sampled calls or README statements; some provider wiring and unsampled implementation details are not shown.

Main entry points: [`src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java) (Claim workflow), [`src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java) (Document workflow), [`src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java`](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java) (Claim endpoints), [`src/main/java/com/stanislav/warrantyclaims/document/ClaimDocumentRepository.java`](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/ClaimDocumentRepository.java) (Document repository)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_claim["Claim lifecycle"]
  node_claim_api["Claim endpoints"]
  node_claim_service["Claim workflow<br/>[ClaimService.java]"]
  node_claim_model["Claim state<br/>[Claim.java]"]
  node_claim_repository["Claim repository"]
  node_claim_response["Claim response<br/>[ClaimResponse.java]"]
end

subgraph group_documents["Proof documents"]
  node_document_api["Document endpoints"]
  node_document_service["Document workflow"]
  node_document_model["Document metadata<br/>[ClaimDocument.java]"]
  node_document_repository["Document repository"]
  node_s3_storage["S3 storage adapter<br/>[S3Storage.java]"]
end

subgraph group_warranty["Warranty check"]
  node_warranty_gateway["Warranty gateway"]
  node_warranty_client["SOAP client"]
end

subgraph group_platform["API platform"]
  node_security["Role security"]
  node_error_handler["API error handling"]
end

node_applicant(("Applicant"))
node_reviewer(("Reviewer"))
node_postgres[("PostgreSQL")]
node_s3_service[("S3-compatible storage")]
node_soap_service["SOAP service"]

node_applicant -->|"creates and submits"| node_claim_api
node_reviewer -->|"reviews claims"| node_claim_api
node_claim_api -->|"dispatches"| node_claim_service
node_claim_service -->|"reads and saves"| node_claim_repository
node_claim_service -->|"updates"| node_claim_model
node_claim_service -->|"maps to"| node_claim_response
node_claim_repository -->|"persists claim data"| node_postgres
node_claim_service -->|"checks proof exists"| node_document_repository
node_claim_service -->|"checks warranty"| node_warranty_gateway
node_document_api -->|"dispatches"| node_document_service
node_document_service -->|"checks claim access"| node_claim_service
node_document_service -->|"reads and saves"| node_document_repository
node_document_service -->|"creates metadata"| node_document_model
node_document_service -->|"uploads and downloads"| node_s3_storage
node_document_repository -->|"persists metadata"| node_postgres
node_s3_storage -->|"stores file contents"| node_s3_service
node_warranty_gateway -.->|"uses SOAP adapter"| node_warranty_client
node_warranty_client -->|"checks warranty"| node_soap_service
node_security -.->|"protects API"| node_claim_api
node_error_handler -.->|"formats API errors"| node_claim_service

click node_claim_api "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java"
click node_claim_service "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java"
click node_claim_model "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/Claim.java"
click node_claim_repository "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimRepository.java"
click node_claim_response "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimResponse.java"
click node_document_api "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/DocumentController.java"
click node_document_service "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java"
click node_document_model "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/ClaimDocument.java"
click node_document_repository "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/ClaimDocumentRepository.java"
click node_s3_storage "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/S3Storage.java"
click node_warranty_gateway "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/soap/WarrantyGateway.java"
click node_warranty_client "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/soap/WarrantySoapClient.java"
click node_security "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/security/SecurityConfig.java"
click node_error_handler "https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/common/GlobalExceptionHandler.java"

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_claim_api,node_claim_service,node_claim_model,node_claim_repository,node_claim_response,node_reviewer toneBlue
class node_document_api,node_document_service,node_document_model,node_document_repository,node_s3_storage,node_postgres,node_s3_service toneAmber
class node_warranty_gateway,node_warranty_client toneMint
class node_security,node_error_handler toneRose
class node_applicant,node_soap_service toneIndigo
```

## Components

### Claim lifecycle

- [Claim endpoints](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java): `src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java`
- [Claim workflow](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java): `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`
- [Claim state](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/Claim.java): `src/main/java/com/stanislav/warrantyclaims/claim/Claim.java`
- [Claim repository](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimRepository.java): `src/main/java/com/stanislav/warrantyclaims/claim/ClaimRepository.java`
- [Claim response](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/claim/ClaimResponse.java): `src/main/java/com/stanislav/warrantyclaims/claim/ClaimResponse.java`

### Proof documents

- [Document endpoints](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/DocumentController.java): `src/main/java/com/stanislav/warrantyclaims/document/DocumentController.java`
- [Document workflow](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java): `src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`
- [Document metadata](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/ClaimDocument.java): `src/main/java/com/stanislav/warrantyclaims/document/ClaimDocument.java`
- [Document repository](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/ClaimDocumentRepository.java): `src/main/java/com/stanislav/warrantyclaims/document/ClaimDocumentRepository.java`
- [S3 storage adapter](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/document/S3Storage.java): `src/main/java/com/stanislav/warrantyclaims/document/S3Storage.java`

### Warranty check

- [Warranty gateway](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/soap/WarrantyGateway.java): `src/main/java/com/stanislav/warrantyclaims/soap/WarrantyGateway.java`
- [SOAP client](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/soap/WarrantySoapClient.java): `src/main/java/com/stanislav/warrantyclaims/soap/WarrantySoapClient.java`

### API platform

- [Role security](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/security/SecurityConfig.java): `src/main/java/com/stanislav/warrantyclaims/security/SecurityConfig.java`
- [API error handling](https://github.com/heetaru/warranty-claims-api/blob/main/src/main/java/com/stanislav/warrantyclaims/common/GlobalExceptionHandler.java): `src/main/java/com/stanislav/warrantyclaims/common/GlobalExceptionHandler.java`

### Other components

- **Applicant**
- **Reviewer**
- **PostgreSQL**
- **S3-compatible storage**
- **SOAP service**

## Connections

- Applicant → Claim endpoints: creates and submits (evidence: `README.md`)
- Reviewer → Claim endpoints: reviews claims (evidence: `README.md`)
- Claim endpoints → Claim workflow: dispatches (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimController.java`)
- Claim workflow → Claim repository: reads and saves (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`)
- Claim workflow → Claim state: updates (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`)
- Claim workflow → Claim response: maps to (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`)
- Claim repository → PostgreSQL: persists claim data (evidence: `README.md`)
- Claim workflow → Document repository: checks proof exists (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`)
- Claim workflow → Warranty gateway: checks warranty (evidence: `src/main/java/com/stanislav/warrantyclaims/claim/ClaimService.java`)
- Document endpoints → Document workflow: dispatches (evidence: `src/main/java/com/stanislav/warrantyclaims/document/DocumentController.java`)
- Document workflow → Claim workflow: checks claim access (evidence: `src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`)
- Document workflow → Document repository: reads and saves (evidence: `src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`)
- Document workflow → Document metadata: creates metadata (evidence: `src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`)
- Document workflow → S3 storage adapter: uploads and downloads (evidence: `src/main/java/com/stanislav/warrantyclaims/document/DocumentService.java`)
- Document repository → PostgreSQL: persists metadata (evidence: `README.md`)
- S3 storage adapter → S3-compatible storage: stores file contents (evidence: `README.md`)
- Warranty gateway → SOAP client: uses SOAP adapter (evidence: `src/main/java/com/stanislav/warrantyclaims/soap/WarrantySoapClient.java`)
- SOAP client → SOAP service: checks warranty (evidence: `README.md`)
- Role security → Claim endpoints: protects API
- API error handling → Claim workflow: formats API errors
