{"openapi":"3.0.3","info":{"title":"Kaebauk Merchant API","version":"1.0.0","description":"The /v1 API used by the Kaebauk Merchant mobile app. Amounts are USD; times are UTC; Dili day boundaries are UTC+9."},"servers":[{"url":"/"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}},"paths":{"/v1/health":{"get":{"summary":"GET /v1/health","description":"Public","security":[],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/auth/request-otp":{"post":{"summary":"POST /v1/auth/request-otp","description":"Public","security":[],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/auth/verify-otp":{"post":{"summary":"POST /v1/auth/verify-otp","description":"Public","security":[],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/auth/refresh":{"post":{"summary":"POST /v1/auth/refresh","description":"Public","security":[],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/auth/mpin/set":{"post":{"summary":"POST /v1/auth/mpin/set","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/merchant/profile":{"get":{"summary":"GET /v1/merchant/profile","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/merchant/outlets":{"get":{"summary":"GET /v1/merchant/outlets","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}},"post":{"summary":"POST /v1/merchant/outlets","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/merchant/outlets/{id}/status":{"post":{"summary":"POST /v1/merchant/outlets/{id}/status","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/outlets/{id}/tuqr":{"get":{"summary":"GET /v1/outlets/{id}/tuqr","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/merchant/users":{"get":{"summary":"GET /v1/merchant/users","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/payments/dynamic-qr":{"post":{"summary":"POST /v1/payments/dynamic-qr","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/transactions":{"get":{"summary":"GET /v1/transactions","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/transactions/{id}":{"get":{"summary":"GET /v1/transactions/{id}","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/sales":{"get":{"summary":"GET /v1/sales","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/analytics":{"get":{"summary":"GET /v1/analytics","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/settlements":{"get":{"summary":"GET /v1/settlements","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/settlements/{id}":{"get":{"summary":"GET /v1/settlements/{id}","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/soundbox/{deviceId}":{"get":{"summary":"GET /v1/soundbox/{deviceId}","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/soundbox/{deviceId}/test":{"post":{"summary":"POST /v1/soundbox/{deviceId}/test","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/soundbox/{deviceId}/events":{"get":{"summary":"GET /v1/soundbox/{deviceId}/events","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/soundbox/{deviceId}/settings":{"post":{"summary":"POST /v1/soundbox/{deviceId}/settings","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/soundbox/{deviceId}/report-fault":{"post":{"summary":"POST /v1/soundbox/{deviceId}/report-fault","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/notifications":{"get":{"summary":"GET /v1/notifications","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/merchant/bank":{"post":{"summary":"POST /v1/merchant/bank","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/support/tickets":{"post":{"summary":"POST /v1/support/tickets","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}},"get":{"summary":"GET /v1/support/tickets","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/loans/offer":{"get":{"summary":"GET /v1/loans/offer","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/loans/applications":{"get":{"summary":"GET /v1/loans/applications","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}},"post":{"summary":"POST /v1/loans/applications","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/audit":{"get":{"summary":"GET /v1/audit","description":"Roles: owner","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/mock/simulate-payment":{"post":{"summary":"[demo only] POST /v1/mock/simulate-payment","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/mock/gateway-event":{"post":{"summary":"[demo only] POST /v1/mock/gateway-event","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}},"/v1/mock/soundbox/{deviceId}/status":{"post":{"summary":"[demo only] POST /v1/mock/soundbox/{deviceId}/status","description":"All signed-in roles","security":[{"bearerAuth":[]}],"parameters":[{"name":"deviceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK"},"400":{"description":"Invalid input"},"401":{"description":"Not signed in"},"403":{"description":"Role or outlet not allowed"},"404":{"description":"Not found"}}}}}}