Skip to main content

FastAPI gateway for Sardis stablecoin execution

Project description

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.io/api.

License

MIT License - see LICENSE for details.

Contributing

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

sardis_api-0.1.1-py3-none-any.whl (132.2 kB view details)

Uploaded Python 3

File details

Details for the file sardis_api-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: sardis_api-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 132.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.14

File hashes

Hashes for sardis_api-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2e139645d15bdf3d2415b2433134b868b590fc17cd64dc9942ab043f3e5caac1
MD5 575370e42bdaf6b48d1a08ef1c9e45b7
BLAKE2b-256 c31fedba7119732432b1899c0db6ee1ecd0974d14721dd10d477939b8838b9b9

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page