# Resource APIs

## Upload Resource

### Upload File

```
POST /api/v1/resource/blob
```

**Request Form**

- `file`: Upload file

**Response**

```json
{
  "id": 123,
  "filename": "example.png"
  // other fields
}
```

**Status Codes**

- 200: OK
- 400: Invalid request
- 401: Unauthorized
- 413: File too large
- 500: Internal server error

### Create Resource

```
POST /api/v1/resource
```

**Request Body**

```json
{
  "filename": "example.png",
  "externalLink": "https://example.com/image.png"
}
```

**Response**

Same as **Upload File**

**Status Codes**

- 200: OK
- 400: Invalid request
- 401: Unauthorized
- 500: Internal server error

## Get Resource List

```
GET /api/v1/resource
```

**Parameters**

- `limit` (optional): Limit number of results
- `offset` (optional): Offset of first result

**Response**

```json
[
  {
    "id": 123,
    "filename": "example.png"
    // other fields
  },
  {
    "id": 456,
    "filename": "doc.pdf"
    // other fields
  }
]
```

**Status Codes**

- 200: OK
- 401: Unauthorized
- 500: Internal server error

## Update Resource

```
PATCH /api/v1/resource/:resourceId
```

**Request Body**

```json
{
  "filename": "new_name.png"
}
```

**Response**

Same as **Get Resource List**

**Status Codes**

- 200: OK
- 400: Invalid request
- 401: Unauthorized
- 404: Not found
- 500: Internal server error

## Delete Resource

```
DELETE /api/v1/resource/:resourceId
```

**Status Codes**

- 200: Deleted
- 401: Unauthorized
- 404: Not found
- 500: Internal server error