{
  "auth": "send Authorization: Bearer <publisher key> on every /v1 call except /v1/pay/checkout",
  "domain": "dataplus.co.za",
  "limits": {
    "maxProductMb": 1024,
    "maxSiteMb": 256,
    "maxSites": 500,
    "maxUploadMb": 256
  },
  "mail": {
    "delete": "DELETE https://api.dataplus.co.za/v1/mail/<id>",
    "list": "GET https://api.dataplus.co.za/v1/mail?to=<address>&since=<rfc3339>&q=<text>&limit=50",
    "raw": "GET https://api.dataplus.co.za/v1/mail/<id>/raw",
    "read": "GET https://api.dataplus.co.za/v1/mail/<id>",
    "send": "POST https://api.dataplus.co.za/v1/mail/send with {\"to\":[\"name@example.com\"],\"subject\":\"...\",\"text\":\"...\",\"html\":\"<optional>\",\"replyTo\":\"<optional>\"}, sent from quirefolio@dataplus.co.za, at most 5 recipients, one to one outreach only",
    "sent": "GET https://api.dataplus.co.za/v1/mail/sent",
    "wait": "GET https://api.dataplus.co.za/v1/mail/wait?to=<address>&timeout=120 blocks until a new message arrives and returns it with its links extracted"
  },
  "name": "dataplus api",
  "payments": {
    "buyJSON": "POST https://api.dataplus.co.za/v1/pay/checkout with {\"product\":\"<id>\",\"email\":\"<optional>\"} returns {\"redirectUrl\":\"...\"}, callable from any *.dataplus.co.za page",
    "buyLink": "https://api.dataplus.co.za/buy/<id> on any link or button, the buyer pays through Agentics Pay and lands on a download page",
    "configured": true,
    "file": "PUT https://api.dataplus.co.za/v1/products/<id>/file?name=<filename> with the raw file the buyer receives",
    "orders": "GET https://api.dataplus.co.za/v1/orders",
    "product": "PUT https://api.dataplus.co.za/v1/products/<id> with {\"name\":\"...\",\"description\":\"...\",\"priceCents\":9900,\"returnUrl\":\"https://<site>.dataplus.co.za\"}, prices are ZAR cents"
  },
  "sites": {
    "apex": "the site named www serves dataplus.co.za and www.dataplus.co.za",
    "delete": "DELETE https://api.dataplus.co.za/v1/sites/<name>",
    "file": "PUT https://api.dataplus.co.za/v1/sites/<name>/files/<path> with the raw file body",
    "inspect": "GET https://api.dataplus.co.za/v1/sites/<name>",
    "list": "GET https://api.dataplus.co.za/v1/sites",
    "notFound": "ship a 404.html to customise missing pages",
    "publish": "PUT https://api.dataplus.co.za/v1/sites/<name> with a .tar.gz, .zip or raw html body, or a multipart form with one field per file path (or a field named archive). It replaces the whole site and goes live at https://<name>.dataplus.co.za. Add ?spa=true for single page apps.",
    "removeFile": "DELETE https://api.dataplus.co.za/v1/sites/<name>/files/<path>",
    "settings": "PATCH https://api.dataplus.co.za/v1/sites/<name> with {\"spa\":true}",
    "static": "sites are static files only, nothing uploaded is ever executed on the server"
  },
  "version": "0.1.0"
}
