# Memo APIs

## Create Memo

```
POST /api/v1/memo
```

**Request Body**

```json
{
  "content": "Memo content",
  "visibility": "PUBLIC",
  "resourceIdList": [123, 456],
  "relationList": [{ "relatedMemoId": 789, "type": "REFERENCE" }]
}
```

**Response**

```json
{
  "id": 1234,
  "content": "Memo content",
  "visibility": "PUBLIC"
  // other fields
}
```

**Status Codes**

- 200: Created
- 400: Invalid request
- 401: Unauthorized
- 403: Forbidden to create public memo
- 500: Internal server error

## Get Memo List

```
GET /api/v1/memo
```

**Parameters**

- `creatorId` (optional): Filter by creator ID
- `visibility` (optional): Filter visibility, `PUBLIC`, `PROTECTED` or `PRIVATE`
- `rowStatus` (optional): Filter Status, `ARCHIVE`, `NORMAL`, Default `NORMAL`
- `pinned` (optional): Filter pinned memo, `true` or `false`
- `tag` (optional): Filter memo with tag
- `content` (optional): Search in content
- `limit` (optional): Limit number of results
- `offset` (optional): Offset of first result

**Response**

```json
[
  {
    "id": 1234,
    "content": "Memo 1"
    // other fields
  },
  {
    "id": 5678,
    "content": "Memo 2"
    // other fields
  }
]
```

## Get Memo By ID

```
GET /api/v1/memo/:memoId
```

**Response**

```json
{
  "id": 1234,
  "content": "Memo content"
  // other fields
}
```

**Status Codes**

- 200: Success
- 403: Forbidden for private memo
- 404: Not found
- 500: Internal server error

## Update Memo

```
PATCH /api/v1/memo/:memoId
```

**Request Body**

```json
{
  "content": "Updated content",
  "visibility": "PRIVATE"
}
```

**Response**

Same as **Get Memo By ID**

**Status Codes**

- 200: Updated
- 400: Invalid request
- 401: Unauthorized
- 403: Forbidden
- 404: Not found
- 500: Internal server error

## Delete Memo

```
DELETE /api/v1/memo/:memoId
```

**Status Codes**

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