Deal & ticket forms

Form configuration

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.

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

Authorization

Authorizationheaderrequired
Bearer token: API key (sk_…), OAuth access token (mcp_…) or mobile session (xk_…).
Scope: crm.read

Path parameters

kindstringrequired
Form.
Valuesoppticket

Errors

HTTPerrorMeaning
403moduleThe module is off in the licence or for the user.
404not_foundRecord not found.
Request
curl https://ornek.solk.app/api/v1/forms/opp/config \
  -H "Authorization: Bearer $SOLK_API_KEY"
Response
{
  "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"
    }
  ]
}

Example responses were captured from a v45d installation running sample data; lists are shortened to two items.