# bagisto/bagisto-api architecture

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

- Interactive diagram: https://gitdiagram.com/bagisto/bagisto-api
- Repository: https://github.com/bagisto/bagisto-api
- Video tour (about a minute): https://gitdiagram.com/bagisto/bagisto-api/video

## Overview

Bagisto API Platform exposes REST and GraphQL surfaces for both storefront and administration. The principal storefront workflow spans product discovery, cart management, checkout, and order access; the admin surface manages catalog and customers, processes orders, and configures the store. The tree supports a substantial admin state/model layer, while the README documents broader API capabilities whose implementations are not shown in the sampled source. Accordingly, some subsystem links reflect documented surfaces rather than inspected call chains.

Main entry points: [`src/Admin/Routes/admin.php`](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Routes/admin.php) (Admin API), [`config/storefront.php`](https://github.com/bagisto/bagisto-api/blob/main/config/storefront.php) (Storefront API), [`config/graphql-auth.php`](https://github.com/bagisto/bagisto-api/blob/main/config/graphql-auth.php) (GraphQL API), [`config/api-platform.php`](https://github.com/bagisto/bagisto-api/blob/main/config/api-platform.php) (REST API)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_surfaces["API surfaces"]
  node_rest["REST API<br/>[api-platform.php]"]
  node_graphql["GraphQL API<br/>[graphql-auth.php]"]
  node_shop["Storefront API<br/>[storefront.php]"]
  node_adminapi["Admin API<br/>[admin.php]"]
end

subgraph group_commerce["Storefront commerce"]
  node_catalog["Catalog and discovery<br/>[AdminProduct.php]"]
  node_cart["Cart and checkout<br/>[AdminCart.php]"]
  node_orders["Orders and fulfillment<br/>[AdminOrder.php]"]
  node_accounts["Customer accounts<br/>[AdminCustomer.php]"]
end

subgraph group_admin["Administration"]
  node_admincatalog["Catalog management"]
  node_adminorders["Order operations"]
  node_customers["Customer management<br/>[AdminCustomer.php]"]
  node_marketing["Marketing tools"]
  node_appearance["Themes and content"]
  node_settings["Store settings"]
  node_reports["Reporting"]
end

subgraph group_platform["Platform services"]
  node_integration["Integration tokens"]
  node_audit["API audit history"]
  node_bagisto[("Bagisto commerce core")]
  node_playground["GraphQL playground"]
end

node_shopper(("Shopper or client"))
node_adminuser(("Admin user"))

node_shopper -->|"sends requests"| node_rest
node_shopper -->|"sends queries"| node_graphql
node_adminuser -->|"sends requests"| node_rest
node_adminuser -->|"sends queries"| node_graphql
node_rest -->|"serves shop API"| node_shop
node_graphql -->|"serves shop API"| node_shop
node_rest -->|"serves admin API"| node_adminapi
node_graphql -->|"serves admin API"| node_adminapi
node_shop -->|"exposes browsing"| node_catalog
node_shop -->|"exposes cart checkout"| node_cart
node_shop -->|"exposes orders"| node_orders
node_shop -->|"exposes accounts"| node_accounts
node_adminapi -->|"exposes management"| node_admincatalog
node_adminapi -->|"exposes operations"| node_adminorders
node_adminapi -->|"exposes management"| node_customers
node_adminapi -->|"exposes tools"| node_marketing
node_adminapi -->|"exposes customization"| node_appearance
node_adminapi -->|"exposes configuration"| node_settings
node_adminapi -->|"exposes reports"| node_reports
node_adminapi -->|"manages tokens"| node_integration
node_adminapi -->|"records changes"| node_audit
node_integration -->|"stores token state"| node_bagisto
node_catalog -->|"uses commerce data"| node_bagisto
node_cart -->|"uses commerce data"| node_bagisto
node_orders -->|"uses commerce data"| node_bagisto
node_accounts -->|"uses commerce data"| node_bagisto
node_admincatalog -->|"manages records"| node_bagisto
node_adminorders -->|"manages records"| node_bagisto
node_customers -->|"manages records"| node_bagisto
node_marketing -->|"manages records"| node_bagisto
node_appearance -->|"manages themes"| node_bagisto
node_settings -->|"manages settings"| node_bagisto
node_reports -->|"reads commerce data"| node_bagisto
node_adminuser -->|"manages credentials"| node_integration
node_shopper -.->|"runs queries"| node_playground
node_playground -.->|"submits queries"| node_graphql

click node_rest "https://github.com/bagisto/bagisto-api/blob/main/config/api-platform.php"
click node_graphql "https://github.com/bagisto/bagisto-api/blob/main/config/graphql-auth.php"
click node_shop "https://github.com/bagisto/bagisto-api/blob/main/config/storefront.php"
click node_adminapi "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Routes/admin.php"
click node_catalog "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminProduct.php"
click node_cart "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCart.php"
click node_orders "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminOrder.php"
click node_accounts "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCustomer.php"
click node_admincatalog "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminAttributeCollectionProvider.php"
click node_adminorders "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminCancelOrderProcessor.php"
click node_customers "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCustomer.php"
click node_marketing "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminMarketingCampaign.php"
click node_appearance "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminAppearanceSectionProcessor.php"
click node_settings "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminSettingsChannel.php"
click node_reports "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Resolver/AdminReportingQueryResolver.php"
click node_integration "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Http/Controllers/IntegrationController.php"
click node_audit "https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Audit/AdminApiAuditRecorder.php"
click node_playground "https://github.com/bagisto/bagisto-api/blob/main/src/Http/Controllers/GraphQLPlaygroundController.php"

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_rest,node_graphql,node_shop,node_adminapi,node_shopper,node_adminuser toneBlue
class node_catalog,node_cart,node_orders,node_accounts toneAmber
class node_admincatalog,node_adminorders,node_customers,node_marketing,node_appearance,node_settings,node_reports toneMint
class node_integration,node_audit,node_bagisto,node_playground toneRose
```

## Components

### API surfaces

- [REST API](https://github.com/bagisto/bagisto-api/blob/main/config/api-platform.php): `config/api-platform.php`
- [GraphQL API](https://github.com/bagisto/bagisto-api/blob/main/config/graphql-auth.php): `config/graphql-auth.php`
- [Storefront API](https://github.com/bagisto/bagisto-api/blob/main/config/storefront.php): `config/storefront.php`
- [Admin API](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Routes/admin.php): `src/Admin/Routes/admin.php`

### Storefront commerce

- [Catalog and discovery](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminProduct.php): `src/Admin/Models/AdminProduct.php`
- [Cart and checkout](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCart.php): `src/Admin/Models/AdminCart.php`
- [Orders and fulfillment](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminOrder.php): `src/Admin/Models/AdminOrder.php`
- [Customer accounts](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCustomer.php): `src/Admin/Models/AdminCustomer.php`

### Administration

- [Catalog management](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminAttributeCollectionProvider.php): `src/Admin/State/AdminAttributeCollectionProvider.php`
- [Order operations](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminCancelOrderProcessor.php): `src/Admin/State/AdminCancelOrderProcessor.php`
- [Customer management](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminCustomer.php): `src/Admin/Models/AdminCustomer.php`
- [Marketing tools](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminMarketingCampaign.php): `src/Admin/Models/AdminMarketingCampaign.php`
- [Themes and content](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/State/AdminAppearanceSectionProcessor.php): `src/Admin/State/AdminAppearanceSectionProcessor.php`
- [Store settings](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Models/AdminSettingsChannel.php): `src/Admin/Models/AdminSettingsChannel.php`
- [Reporting](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Resolver/AdminReportingQueryResolver.php): `src/Admin/Resolver/AdminReportingQueryResolver.php`

### Platform services

- [Integration tokens](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Http/Controllers/IntegrationController.php): `src/Admin/Http/Controllers/IntegrationController.php`
- [API audit history](https://github.com/bagisto/bagisto-api/blob/main/src/Admin/Audit/AdminApiAuditRecorder.php): `src/Admin/Audit/AdminApiAuditRecorder.php`
- **Bagisto commerce core**
- [GraphQL playground](https://github.com/bagisto/bagisto-api/blob/main/src/Http/Controllers/GraphQLPlaygroundController.php): `src/Http/Controllers/GraphQLPlaygroundController.php`

### Other components

- **Shopper or client**
- **Admin user**

## Connections

- Shopper or client → REST API: sends requests
- Shopper or client → GraphQL API: sends queries
- Admin user → REST API: sends requests
- Admin user → GraphQL API: sends queries
- REST API → Storefront API: serves shop API
- GraphQL API → Storefront API: serves shop API
- REST API → Admin API: serves admin API
- GraphQL API → Admin API: serves admin API
- Storefront API → Catalog and discovery: exposes browsing
- Storefront API → Cart and checkout: exposes cart checkout
- Storefront API → Orders and fulfillment: exposes orders
- Storefront API → Customer accounts: exposes accounts
- Admin API → Catalog management: exposes management
- Admin API → Order operations: exposes operations
- Admin API → Customer management: exposes management
- Admin API → Marketing tools: exposes tools
- Admin API → Themes and content: exposes customization
- Admin API → Store settings: exposes configuration
- Admin API → Reporting: exposes reports
- Admin API → Integration tokens: manages tokens
- Admin API → API audit history: records changes
- Integration tokens → Bagisto commerce core: stores token state
- Catalog and discovery → Bagisto commerce core: uses commerce data
- Cart and checkout → Bagisto commerce core: uses commerce data
- Orders and fulfillment → Bagisto commerce core: uses commerce data
- Customer accounts → Bagisto commerce core: uses commerce data
- Catalog management → Bagisto commerce core: manages records
- Order operations → Bagisto commerce core: manages records
- Customer management → Bagisto commerce core: manages records
- Marketing tools → Bagisto commerce core: manages records
- Themes and content → Bagisto commerce core: manages themes
- Store settings → Bagisto commerce core: manages settings
- Reporting → Bagisto commerce core: reads commerce data
- Admin user → Integration tokens: manages credentials
- Shopper or client → GraphQL playground: runs queries
- GraphQL playground → GraphQL API: submits queries
