# Core API

# VPN Connector

Orchestrators delegate the operations on Controllers, which themselves delegate operations to the components (VPNConnection component, VPNAccount component, VPNServers components, etc)

                                          +------+
                                          | View |
                                          +---+--+
                                              |
                                           +--v--+
                                           | App |
                                           +--+--+
                                              |
                                              |
                   +---------------+  +-------v--------+
                   | Session       |  | Connection     |
                   | Orchestrator  <--+ Orchestrator   +---------+------------------+
                   +------+--------+  +--------+-------+         |                  |
                         |                     |                 |                  |
                         |                     |                 |                  |
                         |                     |         +-------v------+     +-----v--------+
                         |                     |         | VPN Servers  |     | User Settings|
            +-------------+                    |         | Orchestrator |     | Orchestrator |
            |             |                    |         +-------+------+     +--------------+
            |             |                    |                 |
    +-------v---+         |                    |                 |
    |Proton VPN |  +------v------+   +---------v-----+   +-------v------+
    |Session    |  | Credentials |   |VPN Connection |   | VPN Servers  |
    |Controller |  | Controller  |   | Controller    |   | Controller   |
    +-----------+  +-------------+   +---------------+   +--------------+

See :

- `proton.vpn.core.controllers.vpnsession.VPNSessionController`

- `proton.vpn.core.cache_handler.CacheHandler`

- `proton.vpn.core.usage.UsageReporting`

- `proton.vpn.core.controllers.vpnservers.VPNServersController`

For controllers documentation.

# Orchestrators

# Controllers

Controllers implement the high level business logic of the application, ensuring that the VPN service is in a consistent state.

# User Settings

# Persistence

# Views

An abstract view of the user interface.