{"openapi":"3.1.0","info":{"title":"DIGIBA PAYMENT CORE API","version":"1.0.0","description":"API de paiement Mobile Money DIGIBA (RDC). pawaPay est le provider principal, WonyaPay le repli. Toutes les décisions de statut, de frais et de sécurité sont serveur."},"servers":[{"url":"https://payment.digiba.tech"}],"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"DIGIBA API key"}},"schemas":{"SuccessEnvelope":{"type":"object","properties":{"success":{"const":true},"data":{"type":"object"}}},"ErrorEnvelope":{"type":"object","properties":{"success":{"const":false},"error":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"}}}}}}},"paths":{"/api/public/v1/health":{"get":{"operationId":"health","summary":"État du service","description":"Vérifie que le cœur de paiement répond. Aucune authentification.","tags":["Payments"],"parameters":[],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/providers":{"get":{"operationId":"providers","summary":"Capacités providers","description":"Providers routables (pawaPay principal, WonyaPay repli), opérateurs Mobile Money RDC et devises. Aucun identifiant exposé.","tags":["Payments"],"parameters":[],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/payments":{"post":{"operationId":"createPayment","summary":"Créer un paiement (C2B)","description":"Crée une transaction Mobile Money. Le montant, les frais et le statut sont décidés côté serveur. L'environnement provient de la clé API.","tags":["Payments"],"parameters":[{"name":"Authorization","in":"header","required":true,"description":"Bearer <clé API DIGIBA>","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"UUID unique par tentative de création.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"example":{"amount":2500,"currency":"CDF","action":"C2B","mobileMoney":"0812345678","description":"Recharge compte","customerReference":"CLIENT-4471"}}}},"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}},"get":{"operationId":"listPayments","summary":"Lister les paiements","description":"Liste paginée et filtrable des transactions du projet.","tags":["Payments"],"parameters":[{"name":"Authorization","in":"header","required":true,"description":"Bearer <clé API DIGIBA>","schema":{"type":"string"}},{"name":"status","in":"query","required":false,"description":"created | processing | pending | success | failed | cancelled | expired","schema":{"type":"string"},"example":"success"},{"name":"limit","in":"query","required":false,"description":"1 à 100.","schema":{"type":"string"},"example":"25"},{"name":"offset","in":"query","required":false,"description":"Décalage.","schema":{"type":"string"},"example":"0"}],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/payments/{refTransa}":{"get":{"operationId":"getPayment","summary":"Statut d'un paiement","description":"Rafraîchit le statut auprès du provider si la transaction n'est pas terminale. Le statut renvoyé est toujours vérifié côté serveur.","tags":["Payments"],"parameters":[{"name":"Authorization","in":"header","required":true,"description":"Bearer <clé API DIGIBA>","schema":{"type":"string"}},{"name":"refTransa","in":"path","required":true,"description":"Référence DIGIBA (20 caractères).","schema":{"type":"string"},"example":"DIGIBA20260214A7F3Q1"}],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/checkout/sessions":{"post":{"operationId":"createCheckoutSession","summary":"Créer une session DIGIBA CHECKOUT","description":"Crée une session de paiement hébergée et renvoie l'URL de checkout vers laquelle rediriger le client.","tags":["Checkout"],"parameters":[{"name":"Authorization","in":"header","required":true,"description":"Bearer <clé API DIGIBA>","schema":{"type":"string"}},{"name":"Idempotency-Key","in":"header","required":false,"description":"UUID unique par tentative de création.","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"example":{"amount":15000,"currency":"CDF","description":"Réservation #A-2291","customer":{"name":"Client DIGIBA","phone":"0812345678"},"return_url":"https://marchand.com/paiement/succes","cancel_url":"https://marchand.com/paiement/annule","expires_in_minutes":30}}}},"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/checkout/sessions/{sessionId}":{"get":{"operationId":"getCheckoutSession","summary":"Lire une session de checkout","description":"Renvoie l'état serveur d'une session (statut, montant figé, expiration).","tags":["Checkout"],"parameters":[{"name":"Authorization","in":"header","required":true,"description":"Bearer <clé API DIGIBA>","schema":{"type":"string"}},{"name":"sessionId","in":"path","required":true,"description":"Identifiant public de la session.","schema":{"type":"string"},"example":"cs_test_xxxxxxxx"}],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}},"/api/public/v1/webhooks/{provider}":{"post":{"operationId":"providerWebhook","summary":"Callback provider (entrant)","description":"Endpoint appelé par le provider. Les callbacks sont des indices non autoritaires : DIGIBA confirme toujours le statut par polling.","tags":["Payments"],"parameters":[{"name":"provider","in":"path","required":true,"description":"pawapay | wonyapay","schema":{"type":"string"},"example":"pawapay"}],"responses":{"200":{"description":"Succès","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessEnvelope"}}}},"default":{"description":"Erreur normalisée DIGIBA","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorEnvelope"}}}}}}}}}