114 lines
2.5 KiB
Markdown
114 lines
2.5 KiB
Markdown
## Boxes API - Frontend Specification
|
|
|
|
This document outlines the API endpoints for a simple inventory management system called "Boxes".
|
|
|
|
**Authentication:**
|
|
|
|
* All endpoints (except `/login`) require a valid JWT token in the `Authorization` header, formatted as `Bearer <token>`.
|
|
* To obtain a token, send a POST request to `/login` with the following JSON payload:
|
|
```json
|
|
{
|
|
"username": "your_username",
|
|
"password": "your_password"
|
|
}
|
|
```
|
|
* Successful login will return a JSON response with the token:
|
|
```json
|
|
{
|
|
"token": "your_jwt_token"
|
|
}
|
|
```
|
|
|
|
**Endpoints:**
|
|
|
|
**1. Boxes:**
|
|
|
|
* **GET /boxes:**
|
|
* Returns a list of all boxes.
|
|
* Response: Array of Box objects
|
|
```json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Kitchen"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "Bedroom"
|
|
}
|
|
]
|
|
```
|
|
* **POST /boxes:**
|
|
* Creates a new box.
|
|
* Request body: JSON object with the box name
|
|
```json
|
|
{
|
|
"name": "New Box"
|
|
}
|
|
```
|
|
* Response: JSON object with the created box's ID and name
|
|
```json
|
|
{
|
|
"id": 3,
|
|
"name": "New Box"
|
|
}
|
|
```
|
|
* **DELETE /boxes/{id}:**
|
|
* Deletes the box with the specified ID.
|
|
* Response: 204 No Content
|
|
|
|
**2. Items:**
|
|
|
|
* **GET /items:**
|
|
* Returns a list of all items.
|
|
* Response: Array of Item objects
|
|
```json
|
|
[
|
|
{
|
|
"id": 1,
|
|
"name": "Fork",
|
|
"description": "Silverware",
|
|
"box_id": 1,
|
|
"image_path": "path/to/image.jpg"
|
|
},
|
|
{
|
|
"id": 2,
|
|
"name": "Pillow",
|
|
"description": "Fluffy",
|
|
"box_id": 2,
|
|
"image_path": "path/to/another_image.png"
|
|
}
|
|
]
|
|
```
|
|
* **POST /items:**
|
|
* Creates a new item.
|
|
* Request body: JSON object with item details
|
|
```json
|
|
{
|
|
"name": "Spoon",
|
|
"description": "For soup",
|
|
"box_id": 1,
|
|
"image_path": "path/to/spoon_image.jpg"
|
|
}
|
|
```
|
|
* Response: JSON object with the created item's ID and name
|
|
```json
|
|
{
|
|
"id": 3,
|
|
"name": "Spoon"
|
|
}
|
|
```
|
|
* **GET /items/{id}:**
|
|
* Retrieves the item with the specified ID.
|
|
* Response: Item object
|
|
* **GET /items/{id}/items:**
|
|
* Retrieves all items within the box with the specified ID.
|
|
* Response: Array of Item objects
|
|
* **PUT /items/{id}:**
|
|
* Updates the item with the specified ID.
|
|
* Request body: JSON object with updated item details
|
|
* Response: Updated Item object
|
|
* **DELETE /items/{id}:**
|
|
* Deletes the item with the specified ID.
|
|
* Response: 204 No Content
|