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

Response Objet 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.

POST Corps de la requête
name Requis
string ex : 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_ips Optionnel
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_domains Optionnel
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_amount Optionnel
integer centimes ex : 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_methods Optionnel
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_countries Optionnel
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.com/v1/security-profiles/ \
  -H "Authorization: Bearer sk_live_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"]
  }'
Response 201 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.

PATCH Corps de la mise à jour (PATCH)
name Optionnel
string
Nouveau nom du profil.
allowed_ips Optionnel
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_domains Optionnel
array[string]

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

max_amount Optionnel
integer centimes

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

allowed_payment_methods Optionnel
array[string]

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

blocked_countries Optionnel
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.com/v1/security-profiles/" \
  -H "Authorization: Bearer sk_live_xxxx"

Modifier un profil

bash
curl -X PATCH https://api.sangho.com/v1/security-profiles/sp_xxx/ \
  -H "Authorization: Bearer sk_live_xxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "max_amount": 750000,
    "blocked_countries": ["KP", "IR", "SY"]
  }'
Response 200 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.com/v1/security-profiles/sp_xxx/ \
  -H "Authorization: Bearer sk_live_xxxx"
Response 204 No Content — Supprimé
La suppression a réussi. Les règles de sécurité cessent d'être appliquées immédiatement.