[{"data":1,"prerenderedAt":761},["ShallowReactive",2],{"navigation":3,"\u002Fapi-to-api\u002Fauthentication":51},[4,38,45],{"title":5,"path":6,"stem":7,"children":8},"API to API","\u002Fapi-to-api","1.api-to-api\u002F1.index",[9,10,14,18,22,26,30,34],{"title":5,"path":6,"stem":7},{"title":11,"path":12,"stem":13},"Authentication","\u002Fapi-to-api\u002Fauthentication","1.api-to-api\u002F2.authentication",{"title":15,"path":16,"stem":17},"Customer","\u002Fapi-to-api\u002Fcustomer","1.api-to-api\u002F3.customer",{"title":19,"path":20,"stem":21},"Products","\u002Fapi-to-api\u002Fproducts","1.api-to-api\u002F4.products",{"title":23,"path":24,"stem":25},"Checkout","\u002Fapi-to-api\u002Fcheckout","1.api-to-api\u002F5.checkout",{"title":27,"path":28,"stem":29},"Payment","\u002Fapi-to-api\u002Fpayment","1.api-to-api\u002F6.payment",{"title":31,"path":32,"stem":33},"Transaction","\u002Fapi-to-api\u002Ftransaction","1.api-to-api\u002F7.transaction",{"title":35,"path":36,"stem":37},"Callback","\u002Fapi-to-api\u002Fcallback","1.api-to-api\u002F8.callback",{"title":39,"path":40,"stem":41,"children":42},"Iframe Static","\u002Fiframe-static","2.iframe-static\u002F1.index",[43],{"title":44,"path":40,"stem":41},"Overview",{"title":46,"path":47,"stem":48,"children":49},"Iframe Dynamic","\u002Fiframe-dynamic","3.iframe-dynamic\u002F1.index",[50],{"title":44,"path":47,"stem":48},{"id":52,"title":11,"body":53,"description":754,"extension":755,"links":756,"meta":757,"navigation":758,"path":12,"seo":759,"stem":13,"__hash__":760},"docs\u002F1.api-to-api\u002F2.authentication.md",{"type":54,"value":55,"toc":742},"minimark",[56,60,69,72,75,80,83,124,188,193,246,250,336,340,343,367,436,439,498,501,579,583,586,608,612,738],[57,58,11],"h1",{"id":59},"authentication",[61,62,68],"p",{"className":63},[64,65,66,67],"not-prose","mt-2","text-xs","text-muted","Terakhir diperbarui: 18 Agustus 2026.",[61,70,71],{},"Authentication dipakai untuk mendapatkan token akses. Secret key mengidentifikasi mitra, sedangkan OTP memastikan login dilakukan oleh akun mitra yang valid.",[61,73,74],{},"Token dari login mitra utama dipakai untuk kebutuhan akses dan monitoring data akun di bawah mitra, seperti customer, warung, outlet, cabang, atau anak mitra. Untuk transaksi harian, mitra dapat memakai token customer\u002Fwarung\u002Fcabang yang dibuat dari endpoint customer provisioning.",[76,77,79],"h2",{"id":78},"request-otp","Request OTP",[61,81,82],{},"Endpoint ini memvalidasi secret key, nomor telepon, dan password. Jika valid, OTP dikirim ke nomor telepon akun mitra.",[84,85,90],"pre",{"className":86,"code":87,"language":88,"meta":89,"style":89},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","POST \u002Fclient\u002Fv2\u002Fauth\u002Flogin_mitra\nX-SECRET-KEY: {partner_secret_key}\nContent-Type: application\u002Fjson\n","bash","",[91,92,93,106,115],"code",{"__ignoreMap":89},[94,95,98,102],"span",{"class":96,"line":97},"line",1,[94,99,101],{"class":100},"sBMFI","POST",[94,103,105],{"class":104},"sfazB"," \u002Fclient\u002Fv2\u002Fauth\u002Flogin_mitra\n",[94,107,109,112],{"class":96,"line":108},2,[94,110,111],{"class":100},"X-SECRET-KEY:",[94,113,114],{"class":104}," {partner_secret_key}\n",[94,116,118,121],{"class":96,"line":117},3,[94,119,120],{"class":100},"Content-Type:",[94,122,123],{"class":104}," application\u002Fjson\n",[84,125,129],{"className":126,"code":127,"language":128,"meta":89,"style":89},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"phone_number\": \"081234567890\",\n  \"password\": \"password-mitra\"\n}\n","json",[91,130,131,137,163,182],{"__ignoreMap":89},[94,132,133],{"class":96,"line":97},[94,134,136],{"class":135},"sMK4o","{\n",[94,138,139,142,146,149,152,155,158,160],{"class":96,"line":108},[94,140,141],{"class":135},"  \"",[94,143,145],{"class":144},"spNyl","phone_number",[94,147,148],{"class":135},"\"",[94,150,151],{"class":135},":",[94,153,154],{"class":135}," \"",[94,156,157],{"class":104},"081234567890",[94,159,148],{"class":135},[94,161,162],{"class":135},",\n",[94,164,165,167,170,172,174,176,179],{"class":96,"line":117},[94,166,141],{"class":135},[94,168,169],{"class":144},"password",[94,171,148],{"class":135},[94,173,151],{"class":135},[94,175,154],{"class":135},[94,177,178],{"class":104},"password-mitra",[94,180,181],{"class":135},"\"\n",[94,183,185],{"class":96,"line":184},4,[94,186,187],{"class":135},"}\n",[189,190,192],"h3",{"id":191},"field","Field",[194,195,196,214],"table",{},[197,198,199],"thead",{},[200,201,202,205,208,211],"tr",{},[203,204,192],"th",{},[203,206,207],{},"Tipe",[203,209,210],{},"Wajib",[203,212,213],{},"Keterangan",[215,216,217,233],"tbody",{},[200,218,219,224,227,230],{},[220,221,222],"td",{},[91,223,145],{},[220,225,226],{},"string",[220,228,229],{},"Ya",[220,231,232],{},"Nomor telepon akun mitra.",[200,234,235,239,241,243],{},[220,236,237],{},[91,238,169],{},[220,240,226],{},[220,242,229],{},[220,244,245],{},"Password akun mitra.",[189,247,249],{"id":248},"success-response","Success Response",[84,251,253],{"className":126,"code":252,"language":128,"meta":89,"style":89},"{\n  \"status\": true,\n  \"message\": \"Kode OTP berhasil dikirimkan ke nomor telepon terdaftar.\",\n  \"data\": {\n    \"phone_number\": \"081234567890\"\n  }\n}\n",[91,254,255,259,273,293,307,325,331],{"__ignoreMap":89},[94,256,257],{"class":96,"line":97},[94,258,136],{"class":135},[94,260,261,263,266,268,270],{"class":96,"line":108},[94,262,141],{"class":135},[94,264,265],{"class":144},"status",[94,267,148],{"class":135},[94,269,151],{"class":135},[94,271,272],{"class":135}," true,\n",[94,274,275,277,280,282,284,286,289,291],{"class":96,"line":117},[94,276,141],{"class":135},[94,278,279],{"class":144},"message",[94,281,148],{"class":135},[94,283,151],{"class":135},[94,285,154],{"class":135},[94,287,288],{"class":104},"Kode OTP berhasil dikirimkan ke nomor telepon terdaftar.",[94,290,148],{"class":135},[94,292,162],{"class":135},[94,294,295,297,300,302,304],{"class":96,"line":184},[94,296,141],{"class":135},[94,298,299],{"class":144},"data",[94,301,148],{"class":135},[94,303,151],{"class":135},[94,305,306],{"class":135}," {\n",[94,308,310,313,315,317,319,321,323],{"class":96,"line":309},5,[94,311,312],{"class":135},"    \"",[94,314,145],{"class":100},[94,316,148],{"class":135},[94,318,151],{"class":135},[94,320,154],{"class":135},[94,322,157],{"class":104},[94,324,181],{"class":135},[94,326,328],{"class":96,"line":327},6,[94,329,330],{"class":135},"  }\n",[94,332,334],{"class":96,"line":333},7,[94,335,187],{"class":135},[76,337,339],{"id":338},"verify-otp","Verify OTP",[61,341,342],{},"Endpoint ini menukar OTP menjadi token akses.",[84,344,346],{"className":86,"code":345,"language":88,"meta":89,"style":89},"POST \u002Fclient\u002Fv2\u002Fauth\u002Flogin_mitra_verify\nX-SECRET-KEY: {partner_secret_key}\nContent-Type: application\u002Fjson\n",[91,347,348,355,361],{"__ignoreMap":89},[94,349,350,352],{"class":96,"line":97},[94,351,101],{"class":100},[94,353,354],{"class":104}," \u002Fclient\u002Fv2\u002Fauth\u002Flogin_mitra_verify\n",[94,356,357,359],{"class":96,"line":108},[94,358,111],{"class":100},[94,360,114],{"class":104},[94,362,363,365],{"class":96,"line":117},[94,364,120],{"class":100},[94,366,123],{"class":104},[84,368,370],{"className":126,"code":369,"language":128,"meta":89,"style":89},"{\n  \"phone_number\": \"081234567890\",\n  \"otp\": \"12345\",\n  \"device_id\": \"web-pos-01\"\n}\n",[91,371,372,376,394,414,432],{"__ignoreMap":89},[94,373,374],{"class":96,"line":97},[94,375,136],{"class":135},[94,377,378,380,382,384,386,388,390,392],{"class":96,"line":108},[94,379,141],{"class":135},[94,381,145],{"class":144},[94,383,148],{"class":135},[94,385,151],{"class":135},[94,387,154],{"class":135},[94,389,157],{"class":104},[94,391,148],{"class":135},[94,393,162],{"class":135},[94,395,396,398,401,403,405,407,410,412],{"class":96,"line":117},[94,397,141],{"class":135},[94,399,400],{"class":144},"otp",[94,402,148],{"class":135},[94,404,151],{"class":135},[94,406,154],{"class":135},[94,408,409],{"class":104},"12345",[94,411,148],{"class":135},[94,413,162],{"class":135},[94,415,416,418,421,423,425,427,430],{"class":96,"line":184},[94,417,141],{"class":135},[94,419,420],{"class":144},"device_id",[94,422,148],{"class":135},[94,424,151],{"class":135},[94,426,154],{"class":135},[94,428,429],{"class":104},"web-pos-01",[94,431,181],{"class":135},[94,433,434],{"class":96,"line":309},[94,435,187],{"class":135},[189,437,192],{"id":438},"field-1",[194,440,441,453],{},[197,442,443],{},[200,444,445,447,449,451],{},[203,446,192],{},[203,448,207],{},[203,450,210],{},[203,452,213],{},[215,454,455,467,480],{},[200,456,457,461,463,465],{},[220,458,459],{},[91,460,145],{},[220,462,226],{},[220,464,229],{},[220,466,232],{},[200,468,469,473,475,477],{},[220,470,471],{},[91,472,400],{},[220,474,226],{},[220,476,229],{},[220,478,479],{},"Kode OTP yang diterima akun mitra.",[200,481,482,486,488,491],{},[220,483,484],{},[91,485,420],{},[220,487,226],{},[220,489,490],{},"Tidak",[220,492,493,494,497],{},"ID device\u002Faplikasi mitra. Default ",[91,495,496],{},"client-api",".",[189,499,249],{"id":500},"success-response-1",[84,502,504],{"className":126,"code":503,"language":128,"meta":89,"style":89},"{\n  \"status\": true,\n  \"message\": \"Verifikasi berhasil. Autentikasi disetujui.\",\n  \"data\": {\n    \"token\": \"o8coocg8k0ss4wcgk0o8........\"\n  }\n}\n",[91,505,506,510,522,541,553,571,575],{"__ignoreMap":89},[94,507,508],{"class":96,"line":97},[94,509,136],{"class":135},[94,511,512,514,516,518,520],{"class":96,"line":108},[94,513,141],{"class":135},[94,515,265],{"class":144},[94,517,148],{"class":135},[94,519,151],{"class":135},[94,521,272],{"class":135},[94,523,524,526,528,530,532,534,537,539],{"class":96,"line":117},[94,525,141],{"class":135},[94,527,279],{"class":144},[94,529,148],{"class":135},[94,531,151],{"class":135},[94,533,154],{"class":135},[94,535,536],{"class":104},"Verifikasi berhasil. Autentikasi disetujui.",[94,538,148],{"class":135},[94,540,162],{"class":135},[94,542,543,545,547,549,551],{"class":96,"line":184},[94,544,141],{"class":135},[94,546,299],{"class":144},[94,548,148],{"class":135},[94,550,151],{"class":135},[94,552,306],{"class":135},[94,554,555,557,560,562,564,566,569],{"class":96,"line":309},[94,556,312],{"class":135},[94,558,559],{"class":100},"token",[94,561,148],{"class":135},[94,563,151],{"class":135},[94,565,154],{"class":135},[94,567,568],{"class":104},"o8coocg8k0ss4wcgk0o8........",[94,570,181],{"class":135},[94,572,573],{"class":96,"line":327},[94,574,330],{"class":135},[94,576,577],{"class":96,"line":333},[94,578,187],{"class":135},[76,580,582],{"id":581},"token-usage","Token Usage",[61,584,585],{},"Gunakan token sesuai konteks akun. Token mitra utama dipakai untuk akses tingkat mitra seperti product sync dan laporan lintas akun. Token customer\u002Fwarung\u002Fcabang dipakai untuk checkout, payment, payment status, dan transaction history akun tersebut.",[84,587,589],{"className":86,"code":588,"language":88,"meta":89,"style":89},"Authorization: Bearer o8coocg8k0ss4wcgk0o8........\nX-SECRET-KEY: {partner_secret_key}\n",[91,590,591,602],{"__ignoreMap":89},[94,592,593,596,599],{"class":96,"line":97},[94,594,595],{"class":100},"Authorization:",[94,597,598],{"class":104}," Bearer",[94,600,601],{"class":104}," o8coocg8k0ss4wcgk0o8........\n",[94,603,604,606],{"class":96,"line":108},[94,605,111],{"class":100},[94,607,114],{"class":104},[76,609,611],{"id":610},"response-codes","Response Codes",[194,613,614,627],{},[197,615,616],{},[200,617,618,621,624],{},[203,619,620],{},"HTTP",[203,622,623],{},"Kondisi",[203,625,626],{},"Message",[215,628,629,642,665,679,694,708,723],{},[200,630,631,636,639],{},[220,632,633],{},[91,634,635],{},"200",[220,637,638],{},"OTP terkirim atau OTP berhasil diverifikasi.",[220,640,641],{},"Sesuai response sukses.",[200,643,644,649,652],{},[220,645,646],{},[91,647,648],{},"400",[220,650,651],{},"Field wajib kosong.",[220,653,654,657,658,661,662,497],{},[91,655,656],{},"Nomor Telepon wajib diisi",", ",[91,659,660],{},"Kata Sandi wajib diisi",", atau ",[91,663,664],{},"Kode OTP wajib diisi",[200,666,667,671,674],{},[220,668,669],{},[91,670,648],{},[220,672,673],{},"OTP salah.",[220,675,676],{},[91,677,678],{},"Kode OTP tidak valid atau salah.",[200,680,681,686,689],{},[220,682,683],{},[91,684,685],{},"401",[220,687,688],{},"Secret key kosong\u002Ftidak valid.",[220,690,691],{},[91,692,693],{},"Akses ditolak. Pastikan kredensial integrasi yang digunakan sudah benar dan masih aktif.",[200,695,696,700,703],{},[220,697,698],{},[91,699,685],{},[220,701,702],{},"Password salah atau akun tidak sesuai mitra.",[220,704,705],{},[91,706,707],{},"Autentikasi gagal: Kata sandi yang dimasukkan tidak sesuai atau akun bukan milik mitra ini.",[200,709,710,715,718],{},[220,711,712],{},[91,713,714],{},"403",[220,716,717],{},"Nomor tidak terdaftar sebagai mitra.",[220,719,720],{},[91,721,722],{},"Akses ditolak: Nomor telepon tidak terdaftar sebagai mitra.",[200,724,725,730,733],{},[220,726,727],{},[91,728,729],{},"404",[220,731,732],{},"Akun tidak ditemukan saat verifikasi OTP.",[220,734,735],{},[91,736,737],{},"Akun tidak ditemukan atau tidak terdaftar sebagai mitra.",[739,740,741],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":89,"searchDepth":97,"depth":108,"links":743},[744,748,752,753],{"id":78,"depth":108,"text":79,"children":745},[746,747],{"id":191,"depth":117,"text":192},{"id":248,"depth":117,"text":249},{"id":338,"depth":108,"text":339,"children":749},[750,751],{"id":438,"depth":117,"text":192},{"id":500,"depth":117,"text":249},{"id":581,"depth":108,"text":582},{"id":610,"depth":108,"text":611},"Login mitra dan verifikasi OTP untuk membuat access token.","md",null,{},true,{"title":11,"description":754},"_5EKwcTCRNnHo06GacSojrCYkkjeXBw00SJpi17eEME",1787290997556]