# Contact Us (app contract, 2026-11-04)

Contact Us is the one way customers and sellers write to Kapitano: **support tickets were switched off** on 2026-11-04 (website, seller panel and admin). The app should show a "Contact Us" (تواصل معنا) screen where it showed tickets. Staff answer **on WhatsApp**, outside the app, so there is no "my messages" list to show.

Both calls carry the usual `System-Key` header. `App-Language` picks the language of the topic names.

## Send a message

`POST /api/v2/contact-us` — no sign-in needed; send the bearer token when the customer is signed in, so the message is linked to their account.

| Field | Rule |
|---|---|
| `name` | required, up to 100 characters |
| `phone` | **required** (it is the WhatsApp number staff answer on), 7–20 characters: digits, spaces, `-`, `(`, `)`, an optional leading `+` |
| `email` | optional (was required before 2026-11-04), a valid address, up to 191 |
| `content` | required, up to 3000 characters |
| `topic` | optional, one `key` from the topics call below |
| `order_code` | optional, up to 60 characters (the order number the customer writes about) |

Answer `201` (unchanged keys; `topic` and `order_code` are new):

```json
{
  "message": "Contact inquiry submitted successfully",
  "data": {
    "id": 656, "name": "Sara", "email": "sara@example.com", "phone": "0944000010",
    "content": "Where is my order?", "topic": "order", "order_code": "20261104-1",
    "created_at": "2026-11-04T10:00:00.000000Z", "updated_at": "2026-11-04T10:00:00.000000Z"
  }
}
```

A field that fails its rule answers `422` with Laravel's `errors` object. **At most 5 messages in 10 minutes** per account (per phone number for a guest), and 30 from one address: past that the call answers `429`. Show "Your message was sent. We will contact you on WhatsApp." (تم إرسال رسالتك. سنتواصل معك على واتساب.) after a 201.

Old app versions keep working: they send name, email, phone and content, which still pass.

## Topics

`GET /api/v2/contact-us/topics`

```json
{ "data": [ { "key": "order", "name": "طلب قمت به" }, { "key": "delivery", "name": "التوصيل" }, "…" ] }
```

Keys: `order`, `delivery`, `product`, `payment`, `return`, `seller`, `other`. Offer them as a picker, `other` selected by default.

## Pre-fill

When the customer is signed in, fill `name`, `phone` and `email` from the profile, as the website does.
