Seebait mapping
For the Castle Lite microsite and the BA portal: what each of Seebait's replies becomes on this API, so a port can replace its own matching of Swahili text with a message_key.
Note:
How to use this table
A submission to a Seebait campaign is classified by the function this table is built from. Port your reply handling against it and test with the code sentinels, which give every row below. A reply the function does not recognise is
unknown, never a success.What a port does today
Seebait always answers HTTP 200. The outcome is in body.code, which is only ever 200 or 415, and every kind of rejection is a 415: the reason is only in the Swahili message. So today's frontends match phrases. After the port they read state and message_key, and show message.
Reply to message key
| Seebait body.code | How to tell | Meaning | state | message_key | Default copy shown |
|---|---|---|---|---|---|
| 200 | starts "Hongera" | Entered in the draw | accepted | entered | Umeingia. Kila la heri! |
| 200 | "Umejishindia TZS <amount>" | Instant win, paid by mobile money | accepted | instant_win | Umeshinda zawadi ya papo hapo! |
| 415 | "imeshatumika" | Code already redeemed, on any channel | rejected | already_used | Namba hiyo imeshatumika. |
| 415 | "sio sahihi" | Code not valid | rejected | invalid | Namba hiyo si sahihi. Ikague kisha ujaribu tena. |
| 415 | "kikomo cha kuwasilisha" | The phone's daily limit at Seebait | rejected | daily_limit | Umefikia kikomo cha leo. Jaribu tena kesho. |
| 415 | "Huwezi kutumia huduma hii" | The phone is blocked | rejected | blocked | Namba hii haiwezi kushiriki kwa sasa. |
| 200 | a 200 that does not start "Hongera" | Unrecognised: never treated as success | unknown | checking | Tunakagua ushiriki wako. Unaweza kufunga ukurasa huu; matokeo yatapatikana punde. |
| 415 | a 415 with none of the phrases above | Unrecognised: never treated as a rejection we can name | unknown | checking | Tunakagua ushiriki wako. Unaweza kufunga ukurasa huu; matokeo yatapatikana punde. |
| no reply | timeout, network error, HTTP 5xx, empty or non-JSON body | No usable reply | unknown | checking | Tunakagua ushiriki wako. Unaweza kufunga ukurasa huu; matokeo yatapatikana punde. |
What changes for the port
- No reply is not a failure to show. A timeout, a 5xx or an unrecognised reply becomes
state: "unknown"withmessage_key: "checking": the consumer is told the entry is being checked, and the submission is settled afterwards. It is never reported as success. - Do not resend to find out. Each rejection at Seebait costs the phone one of its rationed attempts ("Umebakiza nafasi N"). A retry with the same
Idempotency-Key, or the same code and phone, returns the stored submission and makes no second call to Seebait. - Instant wins arrive as
message_key: "instant_win"with the prize ininstant_win. Seebait's own text is underupstream.message. upstreamis unstable. It carries Seebait'scodeandmessagefor support and logs. Never branch on it; that is the matching this port removes.- Phones go in as the consumer typed them (
+255…,255…or0…). The server sends Seebait the local0…form. - The short code that selects the campaign at Seebait is the server's concern. It comes from the campaign the key belongs to; a frontend never sends it.