# devlib-itsw/getapi architecture

> Architecture diagram of the GitHub repository devlib-itsw/getapi, 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/devlib-itsw/getapi
- Repository: https://github.com/devlib-itsw/getapi

## Overview

GetAPI is a Spring Boot API marketplace. A provider registers an API; users discover it in the library, authenticate proxy calls, and spend points as requests are forwarded to the provider’s original API. Supporting flows include account authentication, AI moderation, payments, and community features. The README documents the end-to-end proxy behavior; source excerpts and the SOURCE INDEX support selected service-level calls. Several major controllers and integrations are represented from README descriptions and tree paths, not inspected source.

Main entry points: [`src/main/java/com/getapi/ai/service/AiCensorAsyncService.java`](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/ai/service/AiCensorAsyncService.java) (Async Moderation), [`src/main/java/com/getapi/user/service/UserService.java`](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/service/UserService.java) (User Accounts), [`src/main/java/com/getapi/proxy/ProxyController.java`](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/proxy/ProxyController.java) (API Proxy), [`src/main/java/com/getapi/api/service/ApiService.java`](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/api/service/ApiService.java) (API Management)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_marketplace["API Marketplace"]
  node_api_catalog["API Management<br/>[ApiService.java]"]
  node_api_record[("API Records<br/>[Api.java]")]
  node_library["API Library"]
end

subgraph group_identity["Identity &amp; Accounts"]
  node_auth["OAuth &amp; JWT"]
  node_sms_auth["SMS Verification"]
  node_users["User Accounts<br/>[UserService.java]"]
  node_user_store[("User Data")]
  node_profile_store[("User Profiles")]
end

subgraph group_commerce["Proxy &amp; Payments"]
  node_proxy["API Proxy"]
  node_call_logs[("Call Logs")]
  node_payments["Point Payments"]
end

subgraph group_community["Community"]
  node_posts["Posts &amp; Tags<br/>[PostService.java]"]
  node_likes["Post Likes<br/>[LikeService.java]"]
  node_comments["Comments"]
end

subgraph group_moderation["Moderation &amp; Admin"]
  node_ai_async["Async Moderation"]
  node_ai_filter["AI Filter Client"]
  node_admin["Admin Review"]
end

node_provider(("API Provider"))
node_consumer(("API Consumer"))
node_origin_api{{"Provider API"}}
node_toss{{"Toss Payments"}}
node_ai_server{{"AI Moderation Server"}}

node_provider -->|"registers APIs"| node_api_catalog
node_api_catalog -->|"stores APIs"| node_api_record
node_api_catalog -->|"requests checks"| node_ai_async
node_consumer -->|"browses APIs"| node_library
node_library -->|"searches listings"| node_api_record
node_consumer -->|"signs in"| node_auth
node_consumer -->|"verifies phone"| node_sms_auth
node_auth -->|"resolves account"| node_users
node_sms_auth -->|"uses account"| node_users
node_users -->|"reads/writes users"| node_user_store
node_users -->|"reads/writes profiles"| node_profile_store
node_consumer -->|"calls API"| node_proxy
node_proxy -->|"forwards request"| node_origin_api
node_proxy -->|"deducts points"| node_payments
node_proxy -->|"records call"| node_call_logs
node_consumer -->|"adds points"| node_payments
node_payments -->|"confirms payment"| node_toss
node_payments -->|"updates points"| node_user_store
node_provider -->|"publishes posts"| node_posts
node_posts -->|"requests checks"| node_ai_async
node_consumer -->|"comments"| node_comments
node_comments -->|"requests checks"| node_ai_async
node_consumer -->|"likes posts"| node_likes
node_ai_async -->|"checks content"| node_ai_filter
node_ai_filter -.->|"sends text"| node_ai_server
node_ai_async -->|"updates censor status"| node_api_record
node_ai_async -->|"updates censor status"| node_profile_store
node_admin -->|"manages APIs"| node_api_catalog
node_admin -->|"manages users"| node_users
node_admin -.->|"reviews censored content"| node_ai_async

click node_api_catalog "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/api/service/ApiService.java"
click node_api_record "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/api/domain/Api.java"
click node_library "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/library/service/LibraryService.java"
click node_proxy "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/proxy/ProxyController.java"
click node_call_logs "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/proxy/service/CallLogService.java"
click node_payments "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/payments/service/PaymentsService.java"
click node_auth "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/auth/service/CustomOAuth2UserService.java"
click node_sms_auth "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/auth/service/SmsAuthService.java"
click node_users "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/service/UserService.java"
click node_user_store "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/repository/UserRepository.java"
click node_profile_store "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/repository/UserProfileRepository.java"
click node_posts "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/post/service/PostService.java"
click node_likes "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/post/service/LikeService.java"
click node_comments "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/comment/service/PostCommentService.java"
click node_ai_async "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/ai/service/AiCensorAsyncService.java"
click node_ai_filter "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/ai/service/AiFilterService.java"
click node_admin "https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/admin/controller/AdminController.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_api_catalog,node_api_record,node_library toneBlue
class node_auth,node_sms_auth,node_users,node_user_store,node_profile_store toneAmber
class node_proxy,node_call_logs,node_payments,node_provider,node_consumer,node_origin_api,node_ai_server toneMint
class node_posts,node_likes,node_comments toneRose
class node_ai_async,node_ai_filter,node_admin,node_toss toneIndigo
```

## Components

### API Marketplace

- [API Management](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/api/service/ApiService.java): `src/main/java/com/getapi/api/service/ApiService.java`
- [API Records](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/api/domain/Api.java): `src/main/java/com/getapi/api/domain/Api.java`
- [API Library](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/library/service/LibraryService.java): `src/main/java/com/getapi/library/service/LibraryService.java`

### Identity & Accounts

- [OAuth & JWT](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/auth/service/CustomOAuth2UserService.java): `src/main/java/com/getapi/auth/service/CustomOAuth2UserService.java`
- [SMS Verification](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/auth/service/SmsAuthService.java): `src/main/java/com/getapi/auth/service/SmsAuthService.java`
- [User Accounts](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/service/UserService.java): `src/main/java/com/getapi/user/service/UserService.java`
- [User Data](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/repository/UserRepository.java): `src/main/java/com/getapi/user/repository/UserRepository.java`
- [User Profiles](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/user/repository/UserProfileRepository.java): `src/main/java/com/getapi/user/repository/UserProfileRepository.java`

### Proxy & Payments

- [API Proxy](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/proxy/ProxyController.java): `src/main/java/com/getapi/proxy/ProxyController.java`
- [Call Logs](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/proxy/service/CallLogService.java): `src/main/java/com/getapi/proxy/service/CallLogService.java`
- [Point Payments](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/payments/service/PaymentsService.java): `src/main/java/com/getapi/payments/service/PaymentsService.java`

### Community

- [Posts & Tags](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/post/service/PostService.java): `src/main/java/com/getapi/post/service/PostService.java`
- [Post Likes](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/post/service/LikeService.java): `src/main/java/com/getapi/post/service/LikeService.java`
- [Comments](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/comment/service/PostCommentService.java): `src/main/java/com/getapi/comment/service/PostCommentService.java`

### Moderation & Admin

- [Async Moderation](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/ai/service/AiCensorAsyncService.java): `src/main/java/com/getapi/ai/service/AiCensorAsyncService.java`
- [AI Filter Client](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/ai/service/AiFilterService.java): `src/main/java/com/getapi/ai/service/AiFilterService.java`
- [Admin Review](https://github.com/devlib-itsw/getapi/blob/develop/src/main/java/com/getapi/admin/controller/AdminController.java): `src/main/java/com/getapi/admin/controller/AdminController.java`

### Other components

- **API Provider**
- **API Consumer**
- **Provider API**
- **Toss Payments**
- **AI Moderation Server**

## Connections

- API Provider → API Management: registers APIs
- API Management → API Records: stores APIs (evidence: `src/main/java/com/getapi/api/service/ApiService.java`)
- API Management → Async Moderation: requests checks (evidence: `src/main/java/com/getapi/api/service/ApiService.java`)
- API Consumer → API Library: browses APIs
- API Library → API Records: searches listings (evidence: `src/main/java/com/getapi/library/service/LibraryService.java`)
- API Consumer → OAuth & JWT: signs in
- API Consumer → SMS Verification: verifies phone
- OAuth & JWT → User Accounts: resolves account (evidence: `src/main/java/com/getapi/auth/service/CustomOAuth2UserService.java`)
- SMS Verification → User Accounts: uses account (evidence: `src/main/java/com/getapi/auth/service/SmsAuthService.java`)
- User Accounts → User Data: reads/writes users (evidence: `src/main/java/com/getapi/user/service/UserService.java`)
- User Accounts → User Profiles: reads/writes profiles (evidence: `src/main/java/com/getapi/user/service/UserService.java`)
- API Consumer → API Proxy: calls API
- API Proxy → Provider API: forwards request
- API Proxy → Point Payments: deducts points
- API Proxy → Call Logs: records call (evidence: `src/main/java/com/getapi/proxy/ProxyController.java`)
- API Consumer → Point Payments: adds points
- Point Payments → Toss Payments: confirms payment
- Point Payments → User Data: updates points (evidence: `src/main/java/com/getapi/payments/service/PaymentsService.java`)
- API Provider → Posts & Tags: publishes posts
- Posts & Tags → Async Moderation: requests checks (evidence: `src/main/java/com/getapi/post/service/PostService.java`)
- API Consumer → Comments: comments
- Comments → Async Moderation: requests checks (evidence: `src/main/java/com/getapi/comment/service/PostCommentService.java`)
- API Consumer → Post Likes: likes posts
- Async Moderation → AI Filter Client: checks content (evidence: `src/main/java/com/getapi/ai/service/AiCensorAsyncService.java`)
- AI Filter Client → AI Moderation Server: sends text
- Async Moderation → API Records: updates censor status (evidence: `src/main/java/com/getapi/ai/service/AiCensorAsyncService.java`)
- Async Moderation → User Profiles: updates censor status (evidence: `src/main/java/com/getapi/ai/service/AiCensorAsyncService.java`)
- Admin Review → API Management: manages APIs (evidence: `src/main/java/com/getapi/admin/controller/AdminController.java`)
- Admin Review → User Accounts: manages users (evidence: `src/main/java/com/getapi/admin/controller/AdminController.java`)
- Admin Review → Async Moderation: reviews censored content
