[
  {
    "endpoint": "/api/tokens",
    "method": "GET",
    "description": "Retrieve all tokens.",
    "responses": {
      "200": { "$ref": "../examples/tokens/list.200.json" }
    }
  },
  {
    "endpoint": "/api/tokens/:id",
    "method": "GET",
    "description": "Retrieve a token by ID.",
    "request": {
      "params": { "id": "integer" }
    },
    "responses": {
      "200": { "$ref": "../examples/tokens/get.200.json" },
      "404": { "$ref": "../examples/errors/404.json" }
    }
  },
  {
    "endpoint": "/api/tokens",
    "method": "POST",
    "description": "Create a new token for a user.",
    "request": {
      "body": {
        "user_id": "integer (required)",
        "expiry_time": "datetime string (optional)"
      }
    },
    "responses": {
      "201": { "$ref": "../examples/tokens/post.201.json" },
      "400": { "$ref": "../examples/errors/400.json" },
      "401": { "$ref": "../examples/errors/401.json" }
    }
  },
  {
    "endpoint": "/api/tokens/:id",
    "method": "PUT",
    "description": "Update a token's expiry time.",
    "request": {
      "params": { "id": "integer" },
      "body": {
        "expiry_time": "datetime string (optional)"
      }
    },
    "responses": {
      "200": { "$ref": "../examples/tokens/put.200.json" },
      "400": { "$ref": "../examples/errors/400.json" },
      "404": { "$ref": "../examples/errors/404.json" }
    }
  },
  {
    "endpoint": "/api/tokens/:id",
    "method": "DELETE",
    "description": "Delete a token by ID (revoke it).",
    "request": {
      "params": { "id": "integer" }
    },
    "responses": {
      "200": { "$ref": "../examples/tokens/delete.200.json" },
      "404": { "$ref": "../examples/errors/404.json" }
    }
  }
]
