İşlem türleri (action types)
İşlem türü, kişiden neyi onaylamasının istendiğini adlandırır: giriş için LOGIN, para gönderimi için SEND_MONEY ya da seçtiğiniz herhangi bir ad. Telefon adını ve açıklamasını gösterir. Her giriş isteği ve her SDK guard'ı bir tür belirtir; çalışma alanınızda tanımlı olmayan bir türü Touchque reddeder.
Önce tanımlayın. Yeni bir çalışma alanında hiç işlem türü yoktur,
LOGIN bile. Bir tür tanımlanana kadar onu belirten her istek ve requireTouchque('SEND_MONEY') gibi her guard 400 unknown_action alır.Nerede tanımlanır
- Panelde: Developers → Action types. Bir türü orada kapatabilirsiniz; koddan gelen bir define çağrısı onu yeniden açmaz.
- Sunucunuzdan açılışta: her SDK'da
actionTypes.defineya daPOST /action-types. Her açılışta çağırmak güvenlidir: yöneticinin kapattığı bir türü açmaz;critical,descriptionvesecondThoughtalanlarını yalnızca gönderdiğinizde değiştirir. - Bir yapay zekâ kod asistanından: Touchque MCP'nin
touchque_define_action_typearacı; oluşturmadan önce size sorar.
Alanlar
| Alan | Anlam |
|---|---|
type | type olarak verdiğiniz kimlik: 1–64 harf, rakam ve _ . : - (örn. LOGIN, SEND_MONEY). Zorunlu. |
name | Telefonda ve panelde görünür. Zorunlu. |
description | Telefonda adın altındaki satır. |
critical | Telefon her onayda sayı eşleştirmesi ister. Zaman tabanlı kodlar reddedilir; çevrimdışı onay için App user policy'de ayrıca izin gerekir. |
secondThought | Telefonun Onayla'dan önce sorduğu en fazla iki evet/hayır sorusu; insanların ikna edilerek yaptığı işlemler için ("Şu an telefonda biri bunu yapmanızı mı söylüyor?"). Riskli bir yanıt reddetmez: onay provisional olarak döner. |
active | Yalnızca panelde. Etkin olmayan bir türle gelen istek 403 action_disabled alır. |
Guard'lar verdiğiniz türü kullanır.
requireTouchque('SEND_MONEY') (Node), @require_touchque('SEND_MONEY') (Python), ->middleware('touchque:SEND_MONEY') (Laravel) ve touchque.Require(tq, "SEND_MONEY", …) (Go) türü SEND_MONEY olarak gönderir.const { Touchque } = require('@touchque/node');
const tq = new Touchque(); // TQ_API_KEY / TQ_API_SECRET ortamdan
// Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
await tq.actionTypes.define('LOGIN', { name: 'Giriş' });
await tq.actionTypes.define('SEND_MONEY', { name: 'Para gönder', description: 'Hesabınızdan para gönderimi', critical: true });
const types = await tq.actionTypes.list();from touchque import Touchque
tq = Touchque() # TQ_API_KEY / TQ_API_SECRET ortamdan
# Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
tq.action_types.define("LOGIN", name="Giriş")
tq.action_types.define("SEND_MONEY", name="Para gönder", description="Hesabınızdan para gönderimi", critical=True)
types = tq.action_types.list()$tq = new \Touchque\Touchque(); // TQ_API_KEY / TQ_API_SECRET ortamdan
// Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
$tq->actionTypes->define('LOGIN', 'Giriş');
$tq->actionTypes->define('SEND_MONEY', 'Para gönder', 'Hesabınızdan para gönderimi', true);
$types = $tq->actionTypes->list();tq, err := touchque.New() // TQ_API_KEY / TQ_API_SECRET ortamdan
if err != nil {
log.Fatal(err)
}
// Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
_, err = tq.ActionTypes.Define("LOGIN", touchque.DefineOptions{Name: "Giriş"})
critical := true
_, err = tq.ActionTypes.Define("SEND_MONEY", touchque.DefineOptions{Name: "Para gönder", Description: "Hesabınızdan para gönderimi", Critical: &critical})
types, err := tq.ActionTypes.List()var tq = new TouchqueClient(); // TQ_API_KEY / TQ_API_SECRET ortamdan
// Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
await tq.ActionTypes.DefineAsync("LOGIN", "Giriş");
await tq.ActionTypes.DefineAsync("SEND_MONEY", "Para gönder", "Hesabınızdan para gönderimi", critical: true);
var types = await tq.ActionTypes.ListAsync();var tq = new TouchqueClient(); // TQ_API_KEY / TQ_API_SECRET ortamdan
// Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
tq.actionTypes().define("LOGIN", "Giriş", false);
tq.actionTypes().define("SEND_MONEY", "Para gönder", "Hesabınızdan para gönderimi", true, null);
JsonNode types = tq.actionTypes().list();tq = Touchque::Client.new # TQ_API_KEY / TQ_API_SECRET ortamdan
# Açılışta: oluşturur ya da günceller (yöneticinin kapattığını yeniden açmaz)
tq.action_types.define("LOGIN", name: "Giriş")
tq.action_types.define("SEND_MONEY", name: "Para gönder", description: "Hesabınızdan para gönderimi", critical: true)
types = tq.action_types.list# İmzalı istekler (HMAC), bkz. Kimlik doğrulama
POST /action-types
{ "type": "SEND_MONEY", "name": "Para gönder", "description": "Hesabınızdan para gönderimi", "critical": true }
→ { "id": "…", "type": "SEND_MONEY", "name": "Para gönder", "description": "Hesabınızdan para gönderimi", "critical": true, "active": true, "secondThought": null }
GET /action-types
→ [ { "type": "LOGIN", … }, { "type": "SEND_MONEY", … } ]