# Form configuration

`GET /api/v1/forms/{kind}/config`

Everything needed to draw the new-deal (`opp`) or new-ticket (`ticket`) form — like Quick Entry: templates (block order, `st` = `open` · `chip` · `off`, `req` required, `cond` condition, `def` defaults, `fl` visible fields) with the template's core defaults as flat keys (deal: `type`, `stage`, `close_days`; ticket: `kind`, `priority`, `sla_hours`, `category`, `assign`, `source`), block definitions for the user's modules (`blocks[].fields[]`: `k` key, `t` type, `o` options), `default_template` (user's team → default) and lists. Deal: `opp_types`, `lead_sources`, `forecast_cats`, `currencies`, `first_stage`, `lifetime_days`, `users`. Ticket: `kinds` (ticket types), `categories` (empty = no category asked), `sources`, `sla_hours` (priority → standard resolution time), `users` (with teams). Returns `403 module` when the module isn't in your plan or role.

## Path parameters

| Field | Type | Description |
|---|---|---|
| `kind` (required) | string | Form. Values: `opp`, `ticket` |

## Response

```json 200
{
  "base_currency": "EUR",
  "blocks": [
    {
      "fields": [
        {
          "k": "product",
          "l": "Ürün",
          "ph": "Ürün adı (yeni ise eklenir)",
          "t": "product"
        }
      ],
      "icon": "box",
      "k": "urun",
      "label": "Ürün ve miktar",
      "obj": "Fırsat"
    },
    {
      "fields": [
        {
          "k": "offer_price",
          "l": "Birim fiyat",
          "ph": "1,85",
          "t": "money",
          "u": "€ / kg"
        }
      ],
      "icon": "file-earmark-text",
      "k": "teklif",
      "label": "Fiyat ve vade",
      "obj": "Teklif"
    }
  ],
  "conds": [
    [
      ""
    ],
    [
      "has_opp"
    ]
  ],
  "currencies": [
    "EUR",
    "USD"
  ],
  "default_template": 1,
  "first_stage": "Qualify",
  "forecast_cats": [
    "Pipeline",
    "Best Case"
  ],
  "kind": "opp",
  "lead_sources": [
    "Web formu",
    "Fuar"
  ],
  "lifetime_days": 180,
  "ok": true,
  "opp_types": [
    "Yeni Müşteri",
    "Mevcut Müşteri — Ek Satış"
  ],
  "priorities": [
    "Düşük",
    "Normal"
  ],
  "stage_rules": true,
  "templates": [
    {
      "blocks": [
        {
          "cond": "",
          "def": {},
          "fl": null,
          "k": "urun",
          "label": "",
          "req": false,
          "st": "open"
        }
      ],
      "close_days": 120,
      "icon": "briefcase",
      "id": 1,
      "is_default": true,
      "kind": "opp",
      "name": "Yeni iş",
      "stage": "",
      "team": "",
      "type": "Yeni Müşteri"
    },
    {
      "blocks": [
        {
          "cond": "",
          "def": {},
          "fl": null,
          "k": "urun",
          "label": "",
          "req": false,
          "st": "open"
        }
      ],
      "close_days": 60,
      "icon": "graph-up-arrow",
      "id": 2,
      "is_default": false,
      "kind": "opp",
      "name": "Ek satış",
      "stage": "",
      "team": "",
      "type": "Mevcut Müşteri — Ek Satış"
    }
  ],
  "unit": "kg",
  "users": [
    {
      "id": 1,
      "name": "Deniz Aksoy"
    }
  ]
}
```
