# Swagger UI

Swagger UI in the browser over S3's published API cut to the operations the simulator serves, and over the simulator's own control routes.

Swagger UI lets you read and call the simulator from a browser. Open `$RYSTIC_URL/_rystic/swagger`, linked from the state UI's header, and pick a spec in its selector:

```bash
curl -s -o /dev/null -w '%{http_code}\n' "$RYSTIC_URL/_rystic/swagger"
# -> 200
curl -s "$RYSTIC_URL/_rystic/swagger/spec/explorer.json" | jq -c '[.openapi[].name]'
# -> ["Amazon Simple Storage Service","Rystic control plane"]
```

### The two specs

**Amazon Simple Storage Service** is S3's published API, cut to the operations the simulator serves. **Rystic control plane** describes the `/_rystic/` routes the simulator serves, with its scenarios and seedable registers by name. Try it out sends each request to the simulator.

### Signing

Swagger UI cannot send a signed request the simulator accepts: a browser sets no `Date` header and the spec names no `x-amz-date`, so an Authorize header is refused with `403 AccessDenied`. Try it out therefore sends unsigned requests, which reach only what [Auth](https://www.rystic.ai/docs/simulators/s3.md#auth) and Limitations say the simulator serves unsigned. Use curl or an SDK for signed calls. The control plane's routes need no signature.

---

Source: https://www.rystic.ai/docs/simulators/s3/features/swagger-ui · Markdown: https://www.rystic.ai/docs/simulators/s3/features/swagger-ui.md
