{"openapi":"3.0.0","info":{"title":"360Pay Internal API","version":"1.0.0","description":"API interna para flujos system-to-system. Requiere token interno y no debe exponerse fuera del entorno interno."},"servers":[{"url":"https://api.360pay.pe/internal","description":"Produccion"},{"url":"https://sandbox.api.360pay.pe/internal","description":"Sandbox / Staging"}],"tags":[{"name":"Internal PaymentCoupons","description":"Gestion interna de cupones."},{"name":"Internal Businesses","description":"Provisioning interno de negocios."},{"name":"Internal Debug","description":"Debug y observabilidad interna."}],"components":{"securitySchemes":{"InternalToken":{"type":"http","scheme":"bearer","bearerFormat":"Internal API Token"}},"parameters":{"IdPathParam":{"in":"path","name":"id","required":true,"schema":{"type":"string"}},"ModuleIdPathParam":{"in":"path","name":"moduleId","required":true,"schema":{"type":"string"}}},"schemas":{"GenericError":{"type":"object","properties":{"success":{"type":"boolean","example":false},"error":{"type":"string","example":"Error message"}},"required":["success","error"],"example":{"success":false,"error":"Cliente no encontrado"}},"GenericSuccess":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"object","additionalProperties":{}},"message":{"type":"string"}},"required":["success","data"]},"GenericListSuccess":{"type":"object","properties":{"success":{"type":"boolean","example":true},"data":{"type":"array","items":{"type":"object","additionalProperties":{}}},"meta":{"type":"object","properties":{"total":{"type":"number","example":15},"page":{"type":"number","example":1},"limit":{"type":"number","example":10},"total_pages":{"type":"number","example":2}},"required":["total","page","limit","total_pages"]}},"required":["success","data","meta"]}}},"security":[{"InternalToken":[]}],"paths":{"/payment-coupons":{"get":{"summary":"Listar cupones internos","tags":["Internal PaymentCoupons"],"responses":{"200":{"description":"Listado obtenido correctamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericListSuccess"},"example":{"success":true,"data":[{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"}],"meta":{"page":1,"limit":10,"total":1,"total_pages":1}}}}}}},"post":{"summary":"Crear cupones internos","tags":["Internal PaymentCoupons"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","amount":150.5,"external_ref":"ORD-9988","description":"Pago interno"}}}},"responses":{"201":{"description":"Recurso creado correctamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Recurso creado correctamente"}}}}}}},"/payment-coupons/{id}":{"get":{"summary":"Obtener cupon interno por ID","tags":["Internal PaymentCoupons"],"parameters":[{"$ref":"#/components/parameters/IdPathParam"}],"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}},"put":{"summary":"Actualizar cupon interno por ID","tags":["Internal PaymentCoupons"],"parameters":[{"$ref":"#/components/parameters/IdPathParam"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"status":"paid","paid_at":"2026-06-12T18:35:10.000Z","bank_tx_id":"BCP"}}}},"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}}},"/payment-coupons/{id}/void":{"post":{"summary":"Anular cupon interno","tags":["Internal PaymentCoupons"],"parameters":[{"$ref":"#/components/parameters/IdPathParam"}],"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}}},"/businesses":{"post":{"summary":"Crear negocio interno con configuracion","tags":["Internal Businesses"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object"},"example":{"business":{"name":"Comercio Provisionado Interno","legal_name":"Comercio Provisionado Interno SAC","ruc":"20609999888","payment_prefix":"INT"},"config":{"fee_percentage":2.5,"settlement_period":"daily","bank_account":"0011-1234-12-1234567890"}}}}},"responses":{"201":{"description":"Recurso creado correctamente.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"business_id":"667000aa0f8a4f0012c3dfff","config_id":"667000ab0f8a4f0012c3dffe","status":"created"},"message":"Recurso creado correctamente"}}}}}}},"/debug/modules":{"get":{"summary":"Listar estado de modulos","tags":["Internal Debug"],"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}}},"/debug/modules/{moduleId}":{"get":{"summary":"Obtener estado de modulo","tags":["Internal Debug"],"parameters":[{"$ref":"#/components/parameters/ModuleIdPathParam"}],"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}}},"/debug/eventbus/handlers":{"get":{"summary":"Listar handlers de event bus","tags":["Internal Debug"],"responses":{"200":{"description":"Operacion exitosa.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenericSuccess"},"example":{"success":true,"data":{"_id":"665b1b4f0f8a4f0012c3d600","business_id":"665a9f9f0f8a4f0012c3d456","contact_id":"665b1a3f0f8a4f0012c3d500","payment_coupon_code":"EMP1001-0001","external_ref":"ORD-9988","amount":150.5,"status":"active","created_at":"2026-06-12T15:20:30.000Z","updated_at":"2026-06-12T15:20:30.000Z"},"message":"Operacion exitosa"}}}}}}}}}