# Create Storage

### Create a storage item

POST /storage

Create a new storage item. If `storage_number` is omitted, one is generated from the configured number format.

Request body: JSON. All fields are optional.

| Field                | Type    | Description                                      |
| -------------------- | ------- | ------------------------------------------------ |
| `uuid`               | string  | Custom UUID (otherwise generated)                |
| `storage_number`     | string  | Display number (auto-generated if omitted)       |
| `type`               | string  | e.g. HDD, SSD, USB                               |
| `make`               | string  | Manufacturer                                     |
| `model_name`         | string  | Model name                                       |
| `model_number`       | string  | Model number                                     |
| `serial_number`      | string  | Serial number                                    |
| `capacity`           | number  | Capacity (numeric value)                         |
| `capacity_unit`      | string  | One of: `KB`, `MB`, `GB`, `TB`                   |
| `notes`              | string  | Free-text notes                                  |
| `location_id`        | number  | Location ID                                      |
| `is_general_storage` | boolean | General (unassigned) storage                     |
| `encryption_key`     | string  | Encryption key reference                         |
| `custom_fields`      | array   | Optional custom field values; see Custom fields. |

Example

```http
POST /storage
Content-Type: application/json

{
  "type": "HDD",
  "make": "Vendor",
  "model_name": "Model X",
  "capacity": 1000,
  "capacity_unit": "GB",
  "location_id": 1
}
```

Response: 201 Created — body is the created storage object (same shape as in the list/get response).

Errors: 400 for invalid body (see `errors` in response); 500 for server errors.
