Aller au contenu

SecurityProfiles

Les SecurityProfiles permettent de définir des règles de sécurité granulaires appliquées aux requêtes API de votre App : restriction par IP ou domaine, plafond de montant par transaction, liste blanche de méthodes de paiement et blocage de pays à risque.

Cas d’usage typiques : limiter les appels API à vos serveurs de production, interdire les paiements au-delà d’un certain montant depuis le frontend, bloquer les pays sous embargo ou à fort taux de fraude.

Disponibilité

Les SecurityProfiles sont disponibles sur les plans Growth, Business et Enterprise. Sur le plan Starter, les requêtes ne sont pas filtrées par profil de sécurité.

Endpoints

MéthodeEndpointDescription
POST/security-profiles/Créer un profil de sécurité
GET/security-profiles/Lister les profils
GET/security-profiles/{id}/Récupérer un profil
PATCH/security-profiles/{id}/Modifier un profil
DELETE/security-profiles/{id}/Supprimer un profil

Schéma de l’objet

ResponseObjet SecurityProfile
Structure complète retournée par tous les endpoints de cette ressource.
json
{
  "id": "sp_xxxxxxxxxxxx",
  "object": "security_profile",
  "name": "Profil E-commerce Production",
  "allowed_ips": [
    "196.200.1.0/24",
    "41.202.219.5"
  ],
  "allowed_domains": [
    "ma-boutique.com",
    "app.ma-boutique.com"
  ],
  "max_amount": 500000,
  "allowed_payment_methods": [
    "mobile_money",
    "bank_card"
  ],
  "blocked_countries": [
    "KP",
    "IR"
  ],
  "livemode": true,
  "created_at": "2026-01-01T00:00:00Z",
  "updated_at": "2026-01-01T00:00:00Z"
}

Créer un SecurityProfile

Crée un nouveau profil de sécurité pour votre App. Le profil est appliqué immédiatement à toutes les requêtes API dès sa création.

POSTCorps de la requête
nameRequis
stringex :Profil E-commerce Production

Nom du profil de sécurité. Utilisé uniquement à des fins d’identification dans le dashboard — non visible par vos clients.

allowed_ipsOptionnel
array[string]ex :[“196.200.1.0/24”, “41.202.219.5”]

Liste d’adresses IP ou de plages CIDR autorisées à émettre des requêtes API. Si ce champ est renseigné, toute requête provenant d’une IP non listée est rejetée avec une erreur 403 Forbidden.

En savoir plus

Formats acceptés : adresse IPv4 unique (41.202.219.5) ou notation CIDR (196.200.1.0/24). Laissez ce champ vide pour autoriser toutes les IPs — utile si vos serveurs n’ont pas d’IP fixe. Combinez avec allowed_domains pour une protection en profondeur.

allowed_domainsOptionnel
array[string]ex :[“ma-boutique.com”, “app.ma-boutique.com”]

Liste de domaines autorisés à initier des requêtes depuis le navigateur (header Origin). Utile pour restreindre l’usage de votre clé publique aux seuls domaines que vous contrôlez.

En savoir plus

Ne pas inclure le protocole (https://) ni le slash final. Les sous-domaines doivent être listés explicitement — ma-boutique.com n’autorise pas automatiquement app.ma-boutique.com. Le champ allowed_domains s’applique uniquement aux requêtes frontend (CORS) ; les appels serveur-à-serveur ne sont pas filtrés par ce champ.

max_amountOptionnel
integercentimesex :500000

Montant maximum autorisé par transaction, en centimes. Toute tentative de paiement dépassant ce seuil est rejetée avant d’être créée.

En savoir plus

Ce plafond s’applique au montant brut du PaymentIntent, avant remises ou taxes. Laissez ce champ à null pour ne pas appliquer de plafond. Utile pour limiter l’exposition en cas de compromission de clé API, ou pour les marchands soumis à des limites réglementaires par transaction.

allowed_payment_methodsOptionnel
array[string]

Liste des méthodes de paiement autorisées par ce profil. Si renseignée, seules les méthodes listées peuvent être utilisées dans les transactions associées à cette App.

En savoir plus

Valeurs possibles : mobile_money, bank_card, bank_transfer. Si ce champ est vide ou omis, toutes les méthodes actives de l’App sont autorisées. Restreindre aux méthodes effectivement proposées sur votre interface réduit la surface d’attaque.

blocked_countriesOptionnel
array[string]ISO 3166-1 alpha-2

Liste de codes pays dont les paiements sont bloqués. Toute transaction initiée depuis une IP géolocalisée dans un pays bloqué est rejetée.

En savoir plus

Codes ISO 3166-1 alpha-2 en majuscules (ex. KP, IR, SY). La géolocalisation est basée sur l’IP de l’acheteur — non contournable via VPN dans la majorité des cas grâce à la détection d’anomalies. Cette liste est indépendante des restrictions de votre App ; un pays peut être bloqué ici sans être retiré de votre catalogue.

Créer un profil restrictif

bash
curl -X POST https://api.sangho.ga/v1/security-profiles/ \
  -H "Authorization: Bearer sk_prod_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Profil E-commerce Production",
    "allowed_ips": ["196.200.1.0/24", "41.202.219.5"],
    "allowed_domains": ["ma-boutique.com", "app.ma-boutique.com"],
    "max_amount": 500000,
    "allowed_payment_methods": ["mobile_money", "bank_card"],
    "blocked_countries": ["KP", "IR"]
  }'
Response201 Created
Le profil est actif immédiatement. Les requêtes API de votre App sont désormais filtrées selon ces règles.
json
{
  "id": "sp_xxxxxxxxxxxx",
  "object": "security_profile",
  "name": "Profil E-commerce Production",
  "allowed_ips": [
    "196.200.1.0/24",
    "41.202.219.5"
  ],
  "allowed_domains": [
    "ma-boutique.com",
    "app.ma-boutique.com"
  ],
  "max_amount": 500000,
  "allowed_payment_methods": [
    "mobile_money",
    "bank_card"
  ],
  "blocked_countries": [
    "KP",
    "IR"
  ],
  "livemode": true,
  "created_at": "2026-03-01T10:00:00Z",
  "updated_at": "2026-03-01T10:00:00Z"
}

Lister les SecurityProfiles

Retourne tous les profils de sécurité de votre App, triés par date de création décroissante.

Modifier un SecurityProfile

Met à jour un ou plusieurs champs d’un profil existant. Les modifications sont appliquées immédiatement — les requêtes suivantes sont filtrées selon les nouvelles règles.

PATCHCorps de la mise à jour (PATCH)
nameOptionnel
string
Nouveau nom du profil.
allowed_ipsOptionnel
array[string]

Nouvelle liste complète d’IPs autorisées. Remplace entièrement la liste existante — ce n’est pas un merge. Passez un tableau vide [] pour supprimer toutes les restrictions IP.

allowed_domainsOptionnel
array[string]

Nouvelle liste complète de domaines autorisés. Remplace entièrement la liste existante. Passez [] pour supprimer les restrictions de domaine.

max_amountOptionnel
integercentimes

Nouveau plafond de montant. Passez null pour supprimer le plafond.

allowed_payment_methodsOptionnel
array[string]

Nouvelle liste de méthodes autorisées. Remplace entièrement la liste existante.

blocked_countriesOptionnel
array[string]ISO 3166-1 alpha-2

Nouvelle liste de pays bloqués. Remplace entièrement la liste existante. Passez [] pour débloquer tous les pays.

Supprimer un SecurityProfile

Supprime définitivement le profil de sécurité. Les règles associées cessent immédiatement d’être appliquées. L’action est irréversible.

Impact immédiat

La suppression d’un SecurityProfile prend effet instantanément : votre App n’est plus soumise à aucune restriction de sécurité jusqu’à ce qu’un nouveau profil soit créé et activé. Assurez-vous d’avoir un profil de remplacement prêt avant de supprimer un profil de production.

Lister les profils

bash
curl "https://api.sangho.ga/v1/security-profiles/" \
  -H "Authorization: Bearer sk_prod_xxxx"

Modifier un profil

bash
curl -X PATCH https://api.sangho.ga/v1/security-profiles/sp_xxx/ \
  -H "Authorization: Bearer sk_prod_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "max_amount": 750000,
    "blocked_countries": ["KP", "IR", "SY"]
  }'
Response200 OK — Profil mis à jour
Retourne l'objet SecurityProfile complet avec les règles mises à jour. Les modifications sont effectives immédiatement.
json
{
  "id": "sp_xxxxxxxxxxxx",
  "object": "security_profile",
  "name": "Profil E-commerce Production",
  "allowed_ips": ["196.200.1.0/24", "41.202.219.5"],
  "allowed_domains": ["ma-boutique.com", "app.ma-boutique.com"],
  "max_amount": 750000,
  "allowed_payment_methods": ["mobile_money", "bank_card"],
  "blocked_countries": ["KP", "IR", "SY"],
  "livemode": true,
  "updated_at": "2026-04-10T15:30:00Z"
}

Supprimer un profil

bash
curl -X DELETE https://api.sangho.ga/v1/security-profiles/sp_xxx/ \
  -H "Authorization: Bearer sk_prod_xxxx"
Response204 No Content — Supprimé
La suppression a réussi. Les règles de sécurité cessent d'être appliquées immédiatement.