# Warehouse list: code, name, country, company, aggregate / physical, ships, currency

`GET /api/v1/warehouses` — No token

Warehouses & stock

## Response

The envelope is decided by the HTTP status alone: 2xx with `{ data: … }` (lists also carry `page / page_size / has_more` or `total_count`); 4xx / 5xx with `{ error: { code, message, hint, request_id, doc_url } }`.

```json
{
  "data": [
    { "warehouse_code": "AU", "name": "Australia (all warehouses)", "name_zh": "澳洲（全部仓合计）", "country": "AU", "company_code": "100003", "type": "group", "can_ship": true, "currency": "AUD" },
    { "warehouse_code": "AUSYD2", "name": "Sydney main warehouse (Rosehill)", "name_zh": "悉尼主仓（Rosehill）", "country": "AU", "company_code": "100003", "type": "physical", "can_ship": true, "currency": "AUD" }
  ],
  "total_count": 5
}
```

A success response carries no human-readable text — no `code / result / msg`. `error.code` is the only field your code should branch on; `message` follows `Accept-Language`.

## Examples

### curl

```bash
curl "https://connect.everugg.net.au/api/v1/warehouses"
```

### Python

```python
import requests

r = requests.get(
    "https://connect.everugg.net.au/api/v1/warehouses",
)
data = r.json()
r.raise_for_status()  # 4xx/5xx: data["error"]["code"] / ["hint"]
```

### Node

```js
const res = await fetch("https://connect.everugg.net.au/api/v1/warehouses", {
  headers: { },
})
const data = await res.json()
if (!res.ok) throw new Error(`${data.error?.code}: ${data.error?.message}`)
```

### Java

```java
HttpRequest req = HttpRequest.newBuilder()
    .uri(URI.create("https://connect.everugg.net.au/api/v1/warehouses"))
    .GET()
    .build();
HttpResponse<String> res = HttpClient.newHttpClient().send(req, HttpResponse.BodyHandlers.ofString());
```

---
Markdown source: https://connect.everugg.net.au/reference/get-api-v1-warehouses.md?lang=en · Web page: https://connect.everugg.net.au/reference?op=get-api-v1-warehouses&lang=en
