# Ide (/api/ide)

Papan ide berlaku per [profile](/api/profile): request memakai profile dari API key atau header `Tebar-Profile` (tanpa keduanya: profile default). Penjelasan fiturnya ada di halaman [Ide](/ide).

## Membaca papan [#membaca-papan]

```txt
GET /v1/ideas/board
GET /v1/ideas/{id}
```

`/ideas/board` mengembalikan semua kolom berurutan, masing-masing dengan kartunya berurutan. Papan pertama sebuah profile otomatis mendapat kolom Ide, Dikerjakan, dan Siap (Ideas, In progress, dan Ready bila bahasa akunnya bahasa Inggris). Teks kartu dipotong 280 karakter (`truncated: true`); `/ideas/{id}` memberi teks lengkapnya.

Setiap ide berisi `id`, `column_id`, `text`, `media` (urut), `used_in_posts` (jumlah post yang dibuat dari ide itu), `created_at`, dan `updated_at`.

## Mencatat dan mengubah ide [#mencatat-dan-mengubah-ide]

```txt
POST   /v1/ideas         { "text": "...", "media_ids": ["..."], "column_id": "..." }
PATCH  /v1/ideas/{id}    { "text"?, "media_ids"?, "column_id"?, "before_id"? | "after_id"? }
DELETE /v1/ideas/{id}
```

- Ide baru butuh teks atau media. Tanpa `column_id`, ide masuk ke kolom pertama. Ide baru selalu ditaruh di paling atas kolom.
- Media harus sudah `ready` dan berasal dari profile yang sama. Kalau tidak, API menjawab `media_profile_mismatch` atau `media_not_ready`.
- Untuk memindah ide, sebutkan tetangganya: `before_id` (tepat sebelum ide itu) atau `after_id` (tepat sesudahnya). Kamu tidak perlu menghitung posisi sendiri. `column_id` tanpa tetangga menaruh ide di paling atas kolom itu.
- Satu profile bisa berisi maksimal 1.000 ide (`422 idea_limit`).

## Kolom [#kolom]

```txt
POST   /v1/idea-columns         { "name": "Minggu depan" }
PATCH  /v1/idea-columns/{id}    { "name"?, "before_id"? | "after_id"? }
DELETE /v1/idea-columns/{id}?move_to={kolom tujuan}
```

Kolom baru ditaruh di paling kanan. Satu profile bisa punya maksimal 20 kolom (`422 idea_column_limit`). Kolom yang masih berisi ide hanya bisa dihapus kalau `move_to` dikirim (`409 column_not_empty`). Kolom terakhir tidak bisa dihapus (`409 last_column`).

## Post dari sebuah ide [#post-dari-sebuah-ide]

Kirim `idea_id` saat [membuat post](/api/posts):

```json
{ "content": "...", "idea_id": "…", "targets": [{ "account_id": "…" }] }
```

Ide harus berada di profile yang sama dengan akun tujuan post (`404 idea_not_found`). Post menyimpan `idea_id`, dan `used_in_posts` di idenya bertambah. Ide tetap ada di papan setelah diposting. Kalau idenya dihapus, `idea_id` di post menjadi `null`.
