# wilkessidney/selling-partner-api-models architecture

> Architecture diagram of the GitHub repository wilkessidney/selling-partner-api-models, 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/wilkessidney/selling-partner-api-models
- Repository: https://github.com/wilkessidney/selling-partner-api-models

## Overview

This repository provides Selling Partner API models and supporting developer libraries. The principal runtime path in the sampled clients is obtaining an LWA access token, then using it to authorize an API client; Java and PHP excerpts also show optional token caching. The tree documents separate restricted-data-token signers and document upload/download helpers, alongside Data Kiosk schemas. The schema and document-helper internals were not sampled, so their links are omitted or marked unverified rather than inferred.

Main entry points: [`clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java`](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java) (Java LWA client), [`clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php`](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php) (PHP LWA client), [`clients/sellingpartner-api-aa-python/spapi/spapiclient.py`](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-python/spapi/spapiclient.py) (Python SP-API client), [`clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/HttpTransferClient.java`](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/HttpTransferClient.java) (HTTP transfer interface)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_auth["Authorization clients"]
  node_java_lwa["Java LWA client<br/>[LWAClient.java]"]
  node_java_meta["Token request metadata"]
  node_java_cache["Java token cache"]
  node_java_cache_impl["Java cache implementation"]
  node_java_scopes["Scope serialization"]
  node_csharp_lwa["C&#35; LWA client<br/>[LWAClient.cs]"]
  node_csharp_meta["C&#35; token metadata"]
  node_php_lwa["PHP LWA client<br/>[LWAClient.php]"]
  node_php_cache["PHP token cache"]
  node_php_signer["PHP authorization signer"]
  node_php_rdt["PHP restricted token signer"]
  node_python_token["Python token cache<br/>[LwaRequest.py]"]
  node_js_auth["JavaScript auth helper<br/>[LwaAuthClient.mjs]"]
end

subgraph group_api["API access"]
  node_spapi_client["Python SP-API client<br/>[spapiclient.py]"]
  node_sample_rdt["Restricted-token workflows"]
  node_delegate_rdt["Delegated token workflows"]
end

subgraph group_documents["Document transfer"]
  node_doc_download["Document download"]
  node_doc_upload["Document upload<br/>[UploadHelper.java]"]
  node_transfer_iface["HTTP transfer interface"]
  node_transfer_impl["OkHttp transfer client"]
end

subgraph group_schemas["API schemas"]
  node_data_kiosk["Data Kiosk schemas"]
end

node_developer(("Developer"))
node_lwa_service(("Login With Amazon"))
node_spapi(("Selling Partner API"))
node_document_service(("Document service"))

node_java_lwa -->|"serializes request"| node_java_meta
node_java_lwa -->|"checks and updates"| node_java_cache
node_java_cache_impl -.->|"implements"| node_java_cache
node_java_scopes -->|"serializes scopes"| node_java_scopes
node_java_lwa -->|"requests token"| node_lwa_service
node_csharp_lwa -->|"builds request"| node_csharp_meta
node_csharp_lwa -->|"posts token request"| node_lwa_service
node_php_lwa -->|"uses optional cache"| node_php_cache
node_php_lwa -->|"requests token"| node_lwa_service
node_php_signer -->|"gets access token"| node_php_lwa
node_php_rdt -->|"uses signer"| node_php_signer
node_python_token -->|"requests token"| node_lwa_service
node_spapi_client -->|"gets access token"| node_python_token
node_spapi_client -->|"creates API client"| node_spapi
node_developer -.->|"configures client"| node_spapi_client
node_developer -.->|"runs workflow"| node_sample_rdt
node_developer -.->|"runs workflow"| node_delegate_rdt
node_doc_download -.->|"uses transfer"| node_transfer_iface
node_doc_upload -.->|"uses transfer"| node_transfer_iface
node_transfer_impl -->|"implements"| node_transfer_iface
node_transfer_impl -.->|"transfers documents"| node_document_service

click node_java_lwa "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java"
click node_java_meta "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenRequestMeta.java"
click node_java_cache "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCache.java"
click node_java_cache_impl "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCacheImpl.java"
click node_java_scopes "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClientScopesSerializerDeserializer.java"
click node_csharp_lwa "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAClient.cs"
click node_csharp_meta "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAAccessTokenRequestMeta.cs"
click node_php_lwa "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php"
click node_php_cache "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAAccessTokenCache.php"
click node_php_signer "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAAuthorizationSigner.php"
click node_php_rdt "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/RestrictedDataTokenSigner.php"
click node_python_token "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-python/auth/LwaRequest.py"
click node_js_auth "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-javascript/src/helper/LwaAuthClient.mjs"
click node_spapi_client "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-python/spapi/spapiclient.py"
click node_sample_rdt "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sample-code/RestrictedDataTokenWorkflow.java"
click node_delegate_rdt "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sample-code/DelegatedRestrictedDataTokenWorkflowForDelegator.java"
click node_doc_download "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/DownloadHelper.java"
click node_doc_upload "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/UploadHelper.java"
click node_transfer_iface "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/HttpTransferClient.java"
click node_transfer_impl "https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/impl/OkHttpTransferClient.java"
click node_data_kiosk "https://github.com/wilkessidney/selling-partner-api-models/tree/main/schemas/data-kiosk"

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_java_lwa,node_java_meta,node_java_cache,node_java_cache_impl,node_java_scopes,node_csharp_lwa,node_csharp_meta,node_php_lwa,node_php_cache,node_php_signer,node_php_rdt,node_python_token,node_js_auth toneBlue
class node_spapi_client,node_sample_rdt,node_delegate_rdt toneAmber
class node_doc_download,node_doc_upload,node_transfer_iface,node_transfer_impl,node_spapi toneMint
class node_data_kiosk toneRose
class node_developer,node_lwa_service,node_document_service toneIndigo
```

## Components

### Authorization clients

- [Java LWA client](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java): `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java`
- [Token request metadata](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenRequestMeta.java): `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenRequestMeta.java`
- [Java token cache](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCache.java): `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCache.java`
- [Java cache implementation](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCacheImpl.java): `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCacheImpl.java`
- [Scope serialization](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClientScopesSerializerDeserializer.java): `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClientScopesSerializerDeserializer.java`
- [C# LWA client](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAClient.cs): `clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAClient.cs`
- [C# token metadata](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAAccessTokenRequestMeta.cs): `clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAAccessTokenRequestMeta.cs`
- [PHP LWA client](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php): `clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php`
- [PHP token cache](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAAccessTokenCache.php): `clients/sellingpartner-api-aa-php/src/authandauth/LWAAccessTokenCache.php`
- [PHP authorization signer](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/LWAAuthorizationSigner.php): `clients/sellingpartner-api-aa-php/src/authandauth/LWAAuthorizationSigner.php`
- [PHP restricted token signer](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-php/src/authandauth/RestrictedDataTokenSigner.php): `clients/sellingpartner-api-aa-php/src/authandauth/RestrictedDataTokenSigner.php`
- [Python token cache](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-python/auth/LwaRequest.py): `clients/sellingpartner-api-aa-python/auth/LwaRequest.py`
- [JavaScript auth helper](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-javascript/src/helper/LwaAuthClient.mjs): `clients/sellingpartner-api-aa-javascript/src/helper/LwaAuthClient.mjs`

### API access

- [Python SP-API client](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-aa-python/spapi/spapiclient.py): `clients/sellingpartner-api-aa-python/spapi/spapiclient.py`
- [Restricted-token workflows](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sample-code/RestrictedDataTokenWorkflow.java): `clients/sample-code/RestrictedDataTokenWorkflow.java`
- [Delegated token workflows](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sample-code/DelegatedRestrictedDataTokenWorkflowForDelegator.java): `clients/sample-code/DelegatedRestrictedDataTokenWorkflowForDelegator.java`

### Document transfer

- [Document download](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/DownloadHelper.java): `clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/DownloadHelper.java`
- [Document upload](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/UploadHelper.java): `clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/UploadHelper.java`
- [HTTP transfer interface](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/HttpTransferClient.java): `clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/HttpTransferClient.java`
- [OkHttp transfer client](https://github.com/wilkessidney/selling-partner-api-models/blob/main/clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/impl/OkHttpTransferClient.java): `clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/impl/OkHttpTransferClient.java`

### API schemas

- [Data Kiosk schemas](https://github.com/wilkessidney/selling-partner-api-models/tree/main/schemas/data-kiosk): `schemas/data-kiosk`

### Other components

- **Developer**
- **Login With Amazon**
- **Selling Partner API**
- **Document service**

## Connections

- Java LWA client → Token request metadata: serializes request (evidence: `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java`)
- Java LWA client → Java token cache: checks and updates (evidence: `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java`)
- Java cache implementation → Java token cache: implements (evidence: `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAAccessTokenCacheImpl.java`)
- Scope serialization → Scope serialization: serializes scopes (evidence: `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClientScopesSerializerDeserializer.java`)
- Java LWA client → Login With Amazon: requests token (evidence: `clients/sellingpartner-api-aa-java/src/com/amazon/SellingPartnerAPIAA/LWAClient.java`)
- C# LWA client → C# token metadata: builds request (evidence: `clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAClient.cs`)
- C# LWA client → Login With Amazon: posts token request (evidence: `clients/sellingpartner-api-aa-csharp/src/Amazon.SellingPartnerAPIAA/LWAClient.cs`)
- PHP LWA client → PHP token cache: uses optional cache (evidence: `clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php`)
- PHP LWA client → Login With Amazon: requests token (evidence: `clients/sellingpartner-api-aa-php/src/authandauth/LWAClient.php`)
- PHP authorization signer → PHP LWA client: gets access token (evidence: `clients/sellingpartner-api-aa-php/src/authandauth/LWAAuthorizationSigner.php`)
- PHP restricted token signer → PHP authorization signer: uses signer (evidence: `clients/sellingpartner-api-aa-php/src/authandauth/RestrictedDataTokenSigner.php`)
- Python token cache → Login With Amazon: requests token (evidence: `clients/sellingpartner-api-aa-python/auth/LwaRequest.py`)
- Python SP-API client → Python token cache: gets access token (evidence: `clients/sellingpartner-api-aa-python/spapi/spapiclient.py`)
- Python SP-API client → Selling Partner API: creates API client (evidence: `clients/sellingpartner-api-aa-python/spapi/spapiclient.py`)
- Developer → Python SP-API client: configures client
- Developer → Restricted-token workflows: runs workflow
- Developer → Delegated token workflows: runs workflow
- Document download → HTTP transfer interface: uses transfer
- Document upload → HTTP transfer interface: uses transfer
- OkHttp transfer client → HTTP transfer interface: implements (evidence: `clients/sellingpartner-api-documents-helper-java/src/main/java/com/amazon/spapi/documents/impl/OkHttpTransferClient.java`)
- OkHttp transfer client → Document service: transfers documents
