{
  "object": "sandbox",
  "name": "Ada Diamonds API sandbox",
  "status": "available",
  "base_url": "https://www.adadiamonds.com/sandbox/api/v1",
  "production_base_url": "https://www.adadiamonds.com/api/v1",
  "openapi": "https://www.adadiamonds.com/openapi.json",
  "documentation_url": "https://www.adadiamonds.com/developers#sandbox",
  "description": "Every /api/v1 endpoint, mounted under /sandbox/api/v1. Reads return the live catalog so an integration is exercised against real data; writes (consultation requests, exports, checkout sessions) return a well-formed response and create nothing. No account, no credential, and no human approval are needed.",
  "authentication": {
    "required": false,
    "note": "A credential-less request under this base URL is treated as the public sandbox key. Sending a production key here still gets sandbox behaviour; use /api/v1 for production writes.",
    "public_key": "ada_test_public_sandbox_key",
    "public_key_header": "X-Ada-Api-Key",
    "issue_your_own": {
      "method": "POST",
      "url": "https://www.adadiamonds.com/api/v1/keys",
      "body": {
        "name": "my-agent",
        "env": "sandbox"
      },
      "returns": "an ada_test_* key with the same behaviour and a higher rate limit"
    }
  },
  "scopes": [
    "catalog:read",
    "content:read"
  ],
  "rate_limit": {
    "anonymous_per_minute": 120,
    "credential_per_minute": 600
  },
  "examples": [
    {
      "title": "Search inventory",
      "request": "GET https://www.adadiamonds.com/sandbox/api/v1/diamonds?shape=Oval&min_carat=1&max_price=4000"
    },
    {
      "title": "Create a consultation request (nothing is created)",
      "request": "POST https://www.adadiamonds.com/sandbox/api/v1/consultations {\"email\":\"test@example.com\",\"topic\":\"engagement_ring\"}",
      "response": "201 { \"sandbox\": true, \"note\": \"Sandbox request; nothing was created and nobody was contacted.\" }"
    },
    {
      "title": "Batch reads",
      "request": "POST https://www.adadiamonds.com/sandbox/api/v1/batch {\"requests\":[{\"id\":\"a\",\"method\":\"GET\",\"path\":\"/api/v1/diamonds\",\"query\":{\"limit\":1}}]}"
    }
  ],
  "differences_from_production": [
    "Writes are validated and acknowledged but never persisted, and no email or jeweler follow-up is sent.",
    "Checkout sessions complete without charging any payment method.",
    "Reads are identical to production, including inventory and prices (US dollars)."
  ]
}