# API Reference ## Base URL ``` http://: ``` ## Authentication All endpoints (except `/login`) require a valid JWT token in the `Authorization` header. The token is prefixed with `Bearer `. --- ## Endpoints ### 1. **Login** - **Endpoint:** `/login` - **Method:** `POST` - **Request Body:** ```json { "username": "string", "password": "string" } ``` - **Response:** ```json { "token": "string" } ``` - **Description:** Authenticates a user and returns a JWT token. --- ### 2. **Get Boxes** - **Endpoint:** `/boxes` - **Method:** `GET` - **Response:** ```json [ { "id": "integer", "name": "string" }, ... ] ``` - **Description:** Retrieves all boxes. --- ### 3. **Create Box** - **Endpoint:** `/boxes` - **Method:** `POST` - **Request Body:** ```json { "name": "string" } ``` - **Response:** ```json { "id": "integer", "name": "string" } ``` - **Description:** Creates a new box and returns its ID. --- ### 4. **Delete Box** - **Endpoint:** `/boxes/{id}` - **Method:** `DELETE` - **Description:** Deletes a box by its ID. --- ### 5. **Get Items** - **Endpoint:** `/items` - **Method:** `GET` - **Response:** ```json [ { "id": "integer", "name": "string" }, ... ] ``` - **Description:** Retrieves all items. --- ### 6. **Create Item** - **Endpoint:** `/items` - **Method:** `POST` - **Request Body:** ```json { "name": "string", "description": "string", "box_id": "integer" } ``` - **Response:** ```json { "id": "integer", "name": "string" } ``` - **Description:** Creates a new item and returns its ID. --- ### 7. **Get Item** - **Endpoint:** `/items/{id}` - **Method:** `GET` - **Response:** ```json { "id": "integer", "name": "string", "description": "string", "box_id": "integer" } ``` - **Description:** Retrieves an item by its ID. --- ### 8. **Update Item** - **Endpoint:** `/items/{id}` - **Method:** `PUT` - **Request Body:** ```json { "name": "string", "description": "string", "box_id": "integer" } ``` - **Response:** ```json { "id": "integer", "name": "string" } ``` - **Description:** Updates an item by its ID. --- ### 9. **Delete Item** - **Endpoint:** `/items/{id}` - **Method:** `DELETE` - **Description:** Deletes an item by its ID. --- ### 10. **Get Items in Box** - **Endpoint:** `/boxes/{id}/items` - **Method:** `GET` - **Response:** ```json [ { "id": "integer", "name": "string" }, ... ] ``` - **Description:** Retrieves all items within a specified box. --- ### 11. **Upload Item Image** - **Endpoint:** `/items/{id}/upload` - **Method:** `POST` - **Form Data:** - **File:** `image` (the image file to upload) - **Response:** ```json { "imagePath": "string" } ``` - **Description:** Uploads an image for a specified item. --- ### 12. **Get Item Image** - **Endpoint:** `/items/{id}/image` - **Method:** `GET` - **Response:** Returns the image of the specified item. - **Description:** Retrieves the image for an item by its ID. --- ### 13. **Search Items** - **Endpoint:** `/search/items` - **Method:** `GET` - **Query Parameters:** - `q`: Search query string - **Response:** ```json [ { "id": "integer", "name": "string" }, ... ] ``` - **Description:** Searches for items based on a query string. --- ## Middleware - **AuthMiddleware:** Validates the JWT token in the `Authorization` header and restricts access to protected endpoints. ## Notes - Replace `` and `` with your actual server address and port. - Ensure that CORS settings allow your frontend to access the API.