This guide gets an Adapt server running with realistic examples.
pip install adapt-servermkdir adapt-demo
cd adapt-demoCreate products.csv:
id,name,price,category,in_stock
1,Laptop,999.99,Electronics,true
2,Book,19.99,Books,true
3,Headphones,79.99,Electronics,false
4,Notebook,4.99,Stationery,true
5,Mouse,24.99,Electronics,trueCreate readme.md:
# Welcome to Adapt Demo
This demo shows generated APIs, schema routes, and UI pages.Optional: create reports.py:
from fastapi import APIRouter
import csv
router = APIRouter()
@router.get("/summary")
def summary():
with open("products.csv", newline="", encoding="utf-8") as f:
rows = list(csv.DictReader(f))
in_stock = [r for r in rows if str(r.get("in_stock", "")).lower() == "true"]
total_value = sum(float(r.get("price", 0) or 0) for r in in_stock)
return {
"total_products": len(rows),
"in_stock": len(in_stock),
"out_of_stock": len(rows) - len(in_stock),
"total_inventory_value": round(total_value, 2),
}adapt serve .Open http://localhost:8000.
Try these endpoints in a browser first:
/ui/products/schema/products/readme/api/reports/summary(if you createdreports.py)
Dataset mutations are action-based and target /api/{resource}.
Get rows:
curl http://localhost:8000/api/productsCreate a row:
curl -X POST http://localhost:8000/api/products \
-H "Content-Type: application/json" \
-d '{"action":"create","data":[{"name":"Keyboard","price":49.99,"category":"Electronics","in_stock":true}]}'Update a row by _row_id:
curl -X PATCH http://localhost:8000/api/products \
-H "Content-Type: application/json" \
-d '{"action":"update","data":{"_row_id":1,"price":899.99}}'Delete a row by _row_id:
curl -X DELETE http://localhost:8000/api/products \
-H "Content-Type: application/json" \
-d '{"action":"delete","data":{"_row_id":1}}'Create a superuser:
adapt addsuperuser . --username adminCreate permissions for discovered resources:
adapt admin create-permissions . __all__List groups and users:
adapt admin list-groups .
adapt admin list-users .adapt serve . --host 127.0.0.1 --port 8000 --debugRead-only mode:
adapt serve . --readonly- Generated dataset API at
/api/products - Generated schema at
/schema/products - Generated UI at
/ui/products - Markdown route at
/readme - Optional Python handler route(s) under
/api/reports/*
- Continue to the User Guide
- Review complete routes in the API Reference
- Use the Admin Guide for user/group management