Skip to main content

sardis-api

PyPI version Python 3.11+ License: MIT

FastAPI gateway for Sardis stablecoin execution.

Overview

sardis-api provides a production-ready REST API for the Sardis payment infrastructure:

  • Mandate Processing: AP2 Intent/Cart/Payment mandate ingestion and verification
  • Wallet Operations: Orchestration, approvals, and balance queries
  • Ledger Access: Transaction history and compliance feeds
  • Agent Management: AI agent registration, policies, and spending controls
  • Compliance Integration: KYC/AML hooks and sanction screening

Installation

pip install sardis-api

Development Installation

pip install sardis-api[dev]

Quick Start

import uvicorn
from sardis_api import create_app

# Create the FastAPI application
app = create_app()

# Run the server
if __name__ == "__main__":
    uvicorn.run(app, host="0.0.0.0", port=8000)

Or use the CLI:

uvicorn sardis_api.main:app --host 0.0.0.0 --port 8000

API Endpoints

Wallets

POST   /api/v2/wallets              Create a new wallet
GET    /api/v2/wallets/{wallet_id}  Get wallet details
GET    /api/v2/wallets/{wallet_id}/balance  Get wallet balance

Transactions

POST   /api/v2/transactions         Initiate a transaction
GET    /api/v2/transactions/{tx_id} Get transaction status
GET    /api/v2/wallets/{wallet_id}/transactions  List wallet transactions

Agents

POST   /api/v2/agents               Register an AI agent
GET    /api/v2/agents/{agent_id}    Get agent details
PATCH  /api/v2/agents/{agent_id}/policy  Update agent policy

Mandates

POST   /api/v2/mandates/intent      Submit an intent mandate
POST   /api/v2/mandates/cart        Submit a cart mandate
POST   /api/v2/mandates/payment     Submit a payment mandate

Holds

POST   /api/v2/holds                Create a payment hold
POST   /api/v2/holds/{hold_id}/capture  Capture a hold
POST   /api/v2/holds/{hold_id}/void     Void a hold

Configuration

Configure via environment variables:

# Database
SARDIS_DATABASE_URL=postgresql://user:pass@localhost/sardis

# Redis (for caching and rate limiting)
SARDIS_REDIS_URL=redis://localhost:6379

# API Settings
SARDIS_API_HOST=0.0.0.0
SARDIS_API_PORT=8000
SARDIS_API_CORS_ORIGINS=["http://localhost:3000"]

# Security
SARDIS_API_KEY_HEADER=X-API-Key
SARDIS_JWT_SECRET=your-secret-key

Middleware

The API includes production-ready middleware:

  • Authentication: API key and JWT validation
  • Rate Limiting: Per-client request throttling
  • Logging: Structured request/response logging
  • Security: CORS, security headers, input validation
  • Exception Handling: Consistent error responses

OpenAPI Documentation

Interactive API documentation is available at:

  • Swagger UI: http://localhost:8000/docs
  • ReDoc: http://localhost:8000/redoc
  • OpenAPI JSON: http://localhost:8000/openapi.json

Architecture

sardis-api/
├── main.py           # Application entry point
├── dependencies.py   # FastAPI dependencies
├── routers/
│   ├── wallets.py    # Wallet endpoints
│   ├── transactions.py
│   ├── agents.py
│   ├── mandates.py
│   ├── holds.py
│   └── ...
└── middleware/
    ├── auth.py       # Authentication
    ├── rate_limit.py # Rate limiting
    ├── logging.py    # Request logging
    └── security.py   # Security headers

Requirements

  • Python 3.11+
  • FastAPI >= 0.109
  • uvicorn >= 0.23
  • sardis-core >= 0.1.0
  • sardis-ledger >= 0.1.0
  • sardis-chain >= 0.1.0
  • sardis-compliance >= 0.1.0

Documentation

Full documentation is available at docs.sardis.sh/api.

License

MIT License - see LICENSE for details.

Contributing

Contributions are welcome! Please see our Contributing Guide for details.

Metadata

Release files for sardis-api 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sardis-api 1.0.0
File Size Uploaded
sardis_api-1.0.0.tar.gz 419.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sardis-api 1.0.0
File Interpreter ABI Platform
sardis_api-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 829.4 kB

Release files / sardis_api-1.0.0.tar.gz

Download URL sardis_api-1.0.0.tar.gz
Size 419.1 kB
Tags Source
SHA-256 checksum
How to use checksums
207b20551ede0cb167d197d9dec50b5761420b24ea7d4fc39a954f00bdad5a41
BLAKE2b-256 checksum
How to use checksums
ce588ba25f2022936e9e43653a7ad5895b4d6ee696633e29c0106262d4f89b39
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release files / sardis_api-1.0.0-py3-none-any.whl

Download URL sardis_api-1.0.0-py3-none-any.whl
Size 410.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
19fb33fd28303fa6b6c9e8c09ff3c35ff60cc3afd4a993060857e53c59428e3c
BLAKE2b-256 checksum
How to use checksums
31e0cea3c9512226b47727e9c7f931737d12072a45139e404cbfdbabce62d4c7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.3.1

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

1 release file

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page