# bogdanfinn/tls-client-api architecture

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

- Interactive diagram: https://gitdiagram.com/bogdanfinn/tls-client-api
- Repository: https://github.com/bogdanfinn/tls-client-api

## Overview

TLS-Client-API is an authenticated HTTP service for forwarding requests through TLS fingerprints, with additional endpoints to retrieve session cookies and destroy one or all sessions. The runtime begins at the application entry point, which installs the API router; the router registers the request and session handlers. The forward handler builds and sends the upstream request, while the other handlers manage session state through the TLS-client library. Edges reflect the shown registrations and calls; the upstream service is inferred from the documented forwarding purpose.

Main entry points: [`internal/tls-client-api/api/forward-request-handler.go`](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/forward-request-handler.go) (Forward handler), [`internal/tls-client-api/api/api.go`](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/api.go) (API router), [`internal/tls-client-api/api/get-cookies-handler.go`](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/get-cookies-handler.go) (Cookie handler), [`cmd/tls-client-api/main.go`](https://github.com/bogdanfinn/tls-client-api/blob/master/cmd/tls-client-api/main.go) (Application entry)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_runtime["Service runtime"]
  node_main["Application entry<br/>[main.go]"]
  node_router["API router<br/>[api.go]"]
end

subgraph group_requests["Request forwarding"]
  node_forward["Forward handler"]
  node_helpers["Cookie and errors<br/>[utils.go]"]
end

subgraph group_sessions["Session management"]
  node_cookies["Cookie handler"]
  node_free_session["Free session"]
  node_free_all["Free all sessions"]
  node_tls_client["TLS-client library"]
end

node_caller(("API caller"))
node_upstream(("Upstream service"))

node_caller -.->|"starts service"| node_main
node_main -->|"installs router"| node_router
node_caller -.->|"sends API requests"| node_router
node_router -->|"registers route"| node_forward
node_router -->|"registers route"| node_cookies
node_router -->|"registers route"| node_free_session
node_router -->|"registers route"| node_free_all
node_forward -->|"creates client"| node_tls_client
node_forward -->|"builds request"| node_tls_client
node_forward -->|"converts cookies"| node_helpers
node_forward -->|"sends request"| node_tls_client
node_forward -.->|"forwards request"| node_upstream
node_cookies -->|"gets session client"| node_tls_client
node_cookies -->|"converts cookies"| node_helpers
node_free_session -->|"removes session"| node_tls_client
node_free_all -->|"clears sessions"| node_tls_client

click node_main "https://github.com/bogdanfinn/tls-client-api/blob/master/cmd/tls-client-api/main.go"
click node_router "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/api.go"
click node_forward "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/forward-request-handler.go"
click node_helpers "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/utils.go"
click node_cookies "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/get-cookies-handler.go"
click node_free_session "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/free-session-handler.go"
click node_free_all "https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/free-all-handler.go"

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_main,node_router toneBlue
class node_forward,node_helpers toneAmber
class node_cookies,node_free_session,node_free_all,node_tls_client,node_caller toneMint
class node_upstream toneIndigo
```

## Components

### Service runtime

- [Application entry](https://github.com/bogdanfinn/tls-client-api/blob/master/cmd/tls-client-api/main.go): `cmd/tls-client-api/main.go`
- [API router](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/api.go): `internal/tls-client-api/api/api.go`

### Request forwarding

- [Forward handler](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/forward-request-handler.go): `internal/tls-client-api/api/forward-request-handler.go`
- [Cookie and errors](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/utils.go): `internal/tls-client-api/api/utils.go`

### Session management

- [Cookie handler](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/get-cookies-handler.go): `internal/tls-client-api/api/get-cookies-handler.go`
- [Free session](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/free-session-handler.go): `internal/tls-client-api/api/free-session-handler.go`
- [Free all sessions](https://github.com/bogdanfinn/tls-client-api/blob/master/internal/tls-client-api/api/free-all-handler.go): `internal/tls-client-api/api/free-all-handler.go`
- **TLS-client library**

### Other components

- **API caller**
- **Upstream service**

## Connections

- API caller → Application entry: starts service
- Application entry → API router: installs router (evidence: `cmd/tls-client-api/main.go`)
- API caller → API router: sends API requests
- API router → Forward handler: registers route (evidence: `internal/tls-client-api/api/api.go`)
- API router → Cookie handler: registers route (evidence: `internal/tls-client-api/api/api.go`)
- API router → Free session: registers route (evidence: `internal/tls-client-api/api/api.go`)
- API router → Free all sessions: registers route (evidence: `internal/tls-client-api/api/api.go`)
- Forward handler → TLS-client library: creates client (evidence: `internal/tls-client-api/api/forward-request-handler.go`)
- Forward handler → TLS-client library: builds request (evidence: `internal/tls-client-api/api/forward-request-handler.go`)
- Forward handler → Cookie and errors: converts cookies (evidence: `internal/tls-client-api/api/forward-request-handler.go`)
- Forward handler → TLS-client library: sends request (evidence: `internal/tls-client-api/api/forward-request-handler.go`)
- Forward handler → Upstream service: forwards request
- Cookie handler → TLS-client library: gets session client (evidence: `internal/tls-client-api/api/get-cookies-handler.go`)
- Cookie handler → Cookie and errors: converts cookies (evidence: `internal/tls-client-api/api/get-cookies-handler.go`)
- Free session → TLS-client library: removes session (evidence: `internal/tls-client-api/api/free-session-handler.go`)
- Free all sessions → TLS-client library: clears sessions (evidence: `internal/tls-client-api/api/free-all-handler.go`)
