Grammar input

Setiap pengecekan dilipat jadi satu kunci kanonik sebelum dicari. Halaman ini adalah aturan pelipatannya, persis seperti yang dijalankan server.

Kenapa ini penting

Pengecekan yang tidak menemukan apa pun tetap ditagih. Jadi identifier yang dilipat berbeda dari yang dilipat pelapor bukan sekadar hasil kosong: ia hasil kosong yang Anda bayar, dan tidak ada apa pun di responsnya yang memberi tahu bahwa sebabnya adalah bentuk masukan.

SDK melipat di sisi klien memakai aturan yang sama sebelum mengirim. Kalau Anda memakai SDK, halaman ini menjelaskan apa yang terjadi; kalau Anda memanggil HTTP langsung, halaman ini adalah kontraknya.

Lima tipe identifier

input.type menerima lima nilai. Tidak ada tipe DOMAIN: server tidak punya normalizer domain, dan menawarkannya berarti menjual kunci yang tidak akan pernah cocok sementara miss-nya tetap ditagih.

PHONE

Nomor telepon, dalam bentuk E.164.

FieldWajibCatatan
valueyaNomor lengkap dengan kode negara.
Pelipatan
  • · Semua karakter selain angka dibuang, kecuali tanda + di awal.
  • · Hasilnya harus cocok E.164: tanda +, lalu 8 sampai 15 angka.
Bentuk kunci
PHONE_<E.164>
Contoh
InputKunci
"+62 812-3456-7890"
PHONE_+6281234567890
"+62 (812) 3456.7890"
PHONE_+6281234567890
"081234567890"
ditolak 400Tanpa + ini entitas yang berbeda. Kode negara tidak pernah ditebak, jadi ditolak alih-alih dikira-kira.

EMAIL

Alamat email.

FieldWajibCatatan
valueyaAlamat lengkap.
Pelipatan
  • · Dinormalkan NFC, dijadikan huruf kecil, lalu di-trim.
Bentuk kunci
EMAIL_<alamat>
Contoh
InputKunci
" Budi@Gmail.com "
EMAIL_budi@gmail.com
"budi+promo@gmail.com"
EMAIL_budi+promo@gmail.comSub-alamat tidak dibuang. Ia bagian dari alamat yang dilaporkan orang.

BANK

Rekening bank. Dua bentuk: IBAN, atau negara + bank + nomor rekening. Bank bisa disebut dengan kode Tracive, kode bank nasional, atau BIC.

FieldWajibCatatan
ibanopsionalKalau diisi, field lain di bawah diabaikan.
countryyaISO 3166-1 alpha-3, misalnya IDN.
bankCodeopsionalKode Tracive, misalnya BCA. Kirim tepat satu dari bankCode, bankShortCode atau bic. Lihat halaman kode bank.
bankShortCodeopsionalKode bank nasional, misalnya 014. Yang tidak dikenal ditolak 400 tanpa biaya.
bicopsionalBIC 8 atau 11 karakter, misalnya CENAIDJA. Yang tidak dikenal ditolak 400 tanpa biaya.
accountIdyaNomor rekening.
Pelipatan
  • · Nomor rekening dan IBAN: huruf besar, spasi dan tanda hubung dibuang.
  • · bankCode: NFC, huruf besar, di-trim, dan garis bawah dibuang.
  • · bankShortCode dan bic: diterjemahkan ke bankCode lebih dulu. Nol di depan kode nasional tidak wajib; akhiran cabang BIC diabaikan.
  • · country: di-trim lalu huruf besar; wajib tiga huruf.
Bentuk kunci
BANK_IBAN_<nomor>  ·  BANK_<COUNTRY>_<CODE>_<nomor>
Contoh
InputKunci
{"country":"IDN","bankCode":"bca","accountId":"1234-567-890"}
BANK_IDN_BCA_1234567890
{"country":"IDN","bankShortCode":"014","accountId":"1234-567-890"}
BANK_IDN_BCA_1234567890
{"country":"IDN","bic":"CENAIDJAXXX","accountId":"1234567890"}
BANK_IDN_BCA_1234567890Akhiran cabang BIC 11 karakter diabaikan.
{"iban":"DE89 3704 0044 0532 0130 00"}
BANK_IBAN_DE89370400440532013000
{"country":"IDN","bankShortCode":"999","accountId":"123"}
ditolak 400Kode bank nasional yang tidak dikenal ditolak 400 dan tidak ditagih.
{"country":"ID","bankCode":"BCA","accountId":"123"}
ditolak 400country harus alpha-3. ID adalah alpha-2 dan ditolak.
bankCode tidak divalidasi terhadap daftar — kode yang salah tetap menjadi miss berbayar. bankShortCode dan bic dicek terhadap daftar bank dan ditolak tanpa biaya kalau tidak dikenal. Daftar lengkapnya ada di halaman kode bank.

CRYPTO

Alamat dompet kripto.

FieldWajibCatatan
chainyaMisalnya ETH, BTC, TRON.
addressyaAlamat dompet.
Pelipatan
  • · chain: NFC, huruf besar, di-trim.
  • · address: di-trim. Alamat EVM (0x diikuti 40 hex) dijadikan huruf kecil; selain itu casing dipertahankan.
Bentuk kunci
CRYPTO_<CHAIN>_<alamat>
Contoh
InputKunci
{"chain":"eth","address":"0xAbC1…"}
CRYPTO_ETH_0xabc1…Checksum EIP-55 dilipat, karena alamatnya sama.
{"chain":"btc","address":"bc1QaR…"}
CRYPTO_BTC_bc1QaR…Bukan EVM, jadi casing dipertahankan apa adanya — pada sebagian rantai, casing itu berarti.

USERNAME

Akun di sebuah platform.

FieldWajibCatatan
platformyaMisalnya INSTAGRAM, TELEGRAM.
handleyaUsername, dengan atau tanpa @.
Pelipatan
  • · platform: NFC, huruf besar, di-trim.
  • · handle: NFC, huruf kecil, di-trim.
Bentuk kunci
USERNAME_<PLATFORM>_<handle>
Contoh
InputKunci
{"platform":"instagram","handle":"@ScammerX"}
USERNAME_INSTAGRAM_@scammerx

Aturan untuk semua kunci

  • · Kunci akhirnya harus berupa document id Firestore yang sah: tidak boleh mengandung garis miring, bukan titik tunggal atau ganda, dan maksimal 1500 byte UTF-8.
  • · Nilai yang menjadi kosong setelah dilipat ditolak, bukan diganti nilai lain.
  • · Anda boleh mengirim `query` berisi kunci yang sudah jadi, alih-alih `input`. Kunci itu tetap dilipat ulang di server, jadi hasilnya sama.

Mengirim query jadi

Selain input, Anda boleh mengirim query berisi kunci lengkap seperti PHONE_+6281234567890. Server tetap melipatnya ulang, jadi hasilnya identik — bentuk ini ada untuk penelusuran dan log, bukan jalan pintas yang melewati aturan di halaman ini.

Kirim salah satu, bukan keduanya.