## Response Envelope

All endpoints return a consistent JSON envelope:

**Success (`2xx`)**

```json
{
  "success": true,
  "data": { },
  "errors": []
}
```

**Error (`4xx` / `5xx`)**

```json
{
  "success": false,
  "data": null,
  "errors": [
    { "errorCode": 1001, "errorMessage": "Unauthorized" }
  ]
}
```