# PasseInfo SDK
# 
Un SDK Python puissant et intuitif pour une intégration transparente avec l'API PasseInfo, permettant une livraison de messages rapide, fiable et sécurisée à travers plusieurs canaux. Ce SDK simplifie les opérations de messagerie complexes en un code propre et maintenable, en faisant le choix idéal pour les entreprises recherchant des solutions de communication robustes.
## Description
PasseInfo SDK est une bibliothèque Python puissante et conviviale conçue pour simplifier l'intégration des services de messagerie PasseInfo dans vos applications. Ce SDK abstrait la complexité des interactions directes avec l'API, offrant une interface propre et intuitive pour l'envoi de messages à travers différents canaux.
Le SDK gère toute l'authentification API nécessaire, le formatage des requêtes et l'analyse des réponses, permettant aux développeurs de se concentrer sur l'implémentation de leur logique de messagerie plutôt que de gérer les détails de bas niveau de l'API. Il fournit une gestion robuste des erreurs, des tentatives automatiques pour les requêtes échouées et des capacités complètes de journalisation.
Les principaux avantages de l'utilisation du SDK PasseInfo incluent :
- **Intégration Simplifiée** : Méthodes faciles à utiliser pour toutes les opérations de messagerie
- **Sécurité des Types** : Validation intégrée pour tous les paramètres API
- **Configuration Flexible** : Paramètres personnalisables pour différents cas d'utilisation
- **Prêt pour la Production** : Testé en conditions réelles dans des scénarios à haut volume
- **Bien Documenté** : Documentation complète avec des exemples pratiques
- **Utilisation Efficace des Ressources** : Optimisé pour gérer les messages uniques et en masse
Que vous envoyiez des messages transactionnels, des communications marketing ou des notifications système, PasseInfo SDK fournit les outils et la flexibilité dont vous avez besoin pour implémenter des fonctionnalités de messagerie robustes dans vos applications Python.
## Fonctionnalités
- Envoi de messages individuels aux contacts
- Envoi en masse de messages à plusieurs contacts simultanément
- Envoi de messages à des groupes de contacts prédéfinis
- Suivi du statut de livraison des messages individuels et en masse
- Surveillance des statuts des lots de messages et rapports de livraison
- Gestion complète des erreurs
- Formatage et validation automatiques des requêtes
- Authentification API sécurisée
## Installation
Le SDK PasseInfo peut être facilement installé via pip, le gestionnaire de paquets Python. Le SDK est compatible avec tous les principaux systèmes d'exploitation (Windows, macOS, Linux) et nécessite un minimum de dépendances. Avant l'installation, assurez-vous d'avoir Python 3.6 ou une version supérieure installée sur votre système.
### Prérequis
- Python 3.6 ou supérieur
- Bibliothèque `requests`
### Installation via pip
```bash
pip install passinfo-sdk
```
## Démarrage Rapide
Cette section vous guidera à travers les étapes essentielles pour commencer à utiliser le SDK PasseInfo dans votre application. Vous apprendrez à initialiser le client, envoyer des messages à des contacts individuels, des groupes, et gérer efficacement plusieurs destinataires. Avant de commencer, assurez-vous d'avoir :
- Installé le package SDK PasseInfo
- Obtenu vos identifiants API depuis le tableau de bord PasseInfo
- Une compréhension basique de la programmation Python
### Initialiser le Client
Créez une nouvelle instance du client SDK PasseInfo avec vos identifiants API. Vous pouvez obtenir ces identifiants depuis votre tableau de bord PasseInfo :
> **Note** : Gardez vos identifiants API sécurisés et ne les exposez jamais dans votre code. Utilisez des variables d'environnement ou une gestion de configuration sécurisée pour les déploiements en production.
Voici comment initialiser le client :
```python
from passinfo_sdk import PassInfoSDKClient
client = PassInfoSDKClient(
api_key="your_api_key", # Votre clé API PasseInfo
client_id="your_client_id" # Votre ID client PasseInfo
)
```
### Envoyer un Message Unique
Envoyez un message à un contact individuel. Cette méthode fournit un moyen simple de livrer des messages à des destinataires spécifiques :
```python
response = client.send_message(
message="Hello World", # Contenu du message
contact="phoneNumber", # Numéro de téléphone du destinataire
sender_name="senderName" # Nom qui apparaît comme expéditeur
)
print(response)
# Exemple de sortie : {"status": "success", "message": "123"}
```
#### Paramètres
- `message` (str) : Le contenu de votre message. Gardez-le clair et concis.
- `contact` (str) : Le numéro de téléphone du destinataire dans un format valide (ex : "622000001").
- `sender_name` (str) : Votre ID d'expéditeur que les destinataires verront.
#### Réponse
La méthode renvoie un dictionnaire contenant :
- `status` : Statut de succès ou d'échec de l'opération d'envoi
- `message` : Identifiant unique pour le suivi du message
#### Meilleures Pratiques
- Validez les numéros de téléphone avant l'envoi
- Gardez le contenu du message dans les limites de caractères
- Stockez le message_id pour le suivi des livraisons
- Gérez les erreurs API potentielles en utilisant des blocs try-except
### Envoi de Messages en Masse
Envoyez un message à plusieurs contacts simultanément. Cette méthode fournit un moyen efficace de livrer le même message à plusieurs destinataires en un seul appel API :
```python
contacts = ["622000001", "622000002", "622000003"]
response = client.send_message_bulk(
message="Hello Everyone", # Contenu du message
sender_name="senderName", # Nom qui apparaît comme expéditeur
contacts=contacts # Liste des numéros de téléphone des destinataires
)
print(response)
# Exemple de sortie : {"status": "success", "successful_sends": 3, "failed_sends": 0}
```
#### Paramètres
- `message` (str) : Le contenu de votre message qui sera envoyé à tous les destinataires.
- `sender_name` (str) : Votre ID d'expéditeur qui apparaîtra comme expéditeur pour tous les destinataires.
- `contacts` (list) : Une liste de numéros de téléphone auxquels envoyer le message.
#### Réponse
La méthode renvoie un dictionnaire contenant :
- `status` : Statut de succès ou d'échec de l'opération d'envoi en masse
- `successful_sends` : Nombre de messages mis en file d'attente avec succès pour la livraison
- `failed_sends` : Nombre de messages qui n'ont pas pu être mis en file d'attente
#### Meilleures Pratiques
- Gardez la taille de la liste de contacts raisonnable pour éviter les délais d'attente
- Validez tous les numéros de téléphone avant l'envoi
- Surveillez la réponse pour les envois échoués
- Implémentez une logique de réessai pour les livraisons échouées
### Envoi de Message à un Groupe
Envoyez un message à un groupe prédéfini de contacts. Cette méthode vous permet de livrer efficacement des messages à des groupes qui ont été créés et gérés via votre tableau de bord PasseInfo :
```python
response = client.send_message_group(
message="Hello Group", # Contenu du message
sender_name="senderName", # Nom qui apparaît comme expéditeur
group_id="groupId" # ID du groupe cible
)
print(response)
# Exemple de sortie : {"status": "success", "group_size": 50, "messages_queued": 50}
```
#### Paramètres
- `message` (str) : Le contenu de votre message qui sera envoyé à tous les membres du groupe.
- `sender_name` (str) : Votre ID d'expéditeur qui apparaîtra comme expéditeur pour tous les membres du groupe.
- `group_id` (str) : L'identifiant unique de votre groupe cible (disponible dans le tableau de bord PasseInfo).
#### Réponse
La méthode renvoie un dictionnaire contenant :
- `status` : Statut de succès ou d'échec de l'opération d'envoi au groupe
- `group_size` : Nombre total de contacts dans le groupe
- `messages_queued` : Nombre de messages mis en file d'attente avec succès pour la livraison
#### Meilleures Pratiques
- Vérifiez l'existence du groupe avant l'envoi
- Gardez les tailles de groupe gérables
- Surveillez le statut de livraison pour les grands groupes
- Tenez compte des fuseaux horaires pour le timing des messages
### Obtenir le Statut d'un Message
Suivez le statut de livraison d'un message unique en utilisant son ID unique :
```python
response = client.get_message_status(
message_id="1234567890" # Identifiant unique du message
)
print(response)
# Exemple de sortie : {"status": "sent", "message_id": "1234567890"}
```
#### Paramètres
- `message_id` (str) : L'identifiant unique du message à suivre, retourné lors de l'envoi du message.
#### Réponse
La méthode renvoie un dictionnaire contenant :
- `status` : Statut actuel du message (ex : 'pending', 'sent', 'failed')
- `message_id` : L'identifiant unique du message suivi
#### Meilleures Pratiques
- Stockez les ID des messages pour les communications importantes
- Implémentez une interrogation du statut à intervalles appropriés
- Gérez tous les statuts possibles dans votre application
### Obtenir le Statut des Messages en Masse
Suivez le statut de livraison de plusieurs messages envoyés en lot :
```python
response = client.get_message_status_bulk(
batch_id="1234567890" # Identifiant unique du lot
)
print(response)
# Exemple de sortie : {"status": "processing", "successful": 45, "failed": 2, "pending": 3}
```
#### Paramètres
- `batch_id` (str) : L'identifiant unique du lot de messages à suivre.
#### Réponse
La méthode renvoie un dictionnaire contenant :
- `status` : Statut général du lot
- `successful` : Nombre de messages livrés avec succès
- `failed` : Nombre de livraisons échouées
- `pending` : Nombre de messages encore en file d'attente
#### Meilleures Pratiques
- Stockez les ID de lot pour les opérations en masse
- Implémentez une logique de réessai pour les messages échoués
- Surveillez les taux et les modèles de livraison
- Configurez des alertes pour les taux d'échec élevés
## Gestion des Erreurs
Le SDK fournit une gestion complète des erreurs via l'exception `PassInfoAPIError` :
```python
from passinfo_sdk.exceptions import PassInfoAPIError
try:
response = client.send_message(
message="Hello World",
contact="phoneNumber",
sender_name="senderName"
)
except PassInfoAPIError as e:
print(f"Erreur {e.status_code}: {e.message}")
```
### Vérifier le Solde de Crédits SMS
Vérifiez le solde de crédits SMS restant pour votre compte :
```python
try:
remaining_credits = client.get_sms_count()
print(f"Il vous reste {remaining_credits} crédits SMS")
except PassInfoAPIError as e:
print(f"Erreur lors de la vérification du solde SMS : {e}")
```
#### Retourne
- `int` : Le nombre de crédits SMS restants sur le compte. Retourne 0 si la requête échoue ou s'il n'y a pas de crédits disponibles.
#### Meilleures Pratiques
- Implémentez des vérifications régulières du solde pour assurer des crédits suffisants
- Configurez des alertes de solde bas dans votre application
- Gérez les erreurs API potentielles avec élégance
- Envisagez d'implémenter des mécanismes de recharge automatique de crédits
- Surveillez les modèles d'utilisation des crédits pour la planification de la capacité
### Renouvellement de la Clé API
Faites pivoter votre clé API pour une sécurité renforcée en utilisant la méthode renew_api_key. Cette opération invalide votre clé API actuelle et en génère une nouvelle :
```python
try:
response = client.renew_api_key()
if response.get('api_key'):
new_key = response['api_key']
print(f"Nouvelle clé API générée avec succès")
# Mettez à jour votre configuration avec la nouvelle clé
else:
print("Échec de la génération de la nouvelle clé API")
except PasseInfoAPIError as e:
print(f"Erreur lors du renouvellement de la clé API : {e}")
```
#### Retours
- `dict` : Contient la nouvelle clé API dans la réponse
- `api_key` (str) : La clé API nouvellement générée
#### Meilleures Pratiques
- Planifier des rotations régulières des clés (par exemple, tous les 90 jours)
- Mettre en œuvre des périodes de transition appropriées
- Stocker les nouvelles clés de manière sécurisée (par exemple, variables d'environnement)
- Mettre à jour toutes les instances d'application avec la nouvelle clé
- Maintenir un accès de secours pendant la rotation
- Journaliser tous les événements de rotation des clés
#### Directives d'Implémentation
1. **Préparation**
- Sauvegarder la configuration actuelle
- Planifier une fenêtre de maintenance si nécessaire
- S'assurer que tous les systèmes sont prêts pour la mise à jour
2. **Exécution**
- Générer une nouvelle clé API
- Valider la fonctionnalité de la nouvelle clé
- Mettre à jour les fichiers/variables de configuration
- Redémarrer les services affectés si nécessaire
3. **Vérification**
- Tester la connectivité API avec la nouvelle clé
- Surveiller les erreurs d'authentification
- Vérifier que tous les systèmes fonctionnent
4. **Plan de Retour en Arrière**
- Garder l'ancienne clé temporairement accessible
- Documenter les procédures de retour en arrière
- Mettre en place une surveillance des problèmes
#### Considérations de Sécurité
- Ne jamais journaliser ou afficher les clés API complètes
- Utiliser des canaux sécurisés pour la distribution des clés
- Mettre en œuvre un accès avec privilèges minimaux
- Surveiller l'utilisation non autorisée des clés
- Configurer des alertes pour les événements liés aux clés
#### Exemple d'Implémentation
```python
from passinfo_sdk import PasseInfoSDKClient
from passinfo_sdk.exceptions import PasseInfoAPIError
import os
def rotate_api_key(client):
try:
# Générer une nouvelle clé
response = client.renew_api_key()
if not response.get('api_key'):
raise ValueError("Pas de clé API dans la réponse")
new_key = response['api_key']
# Valider la nouvelle clé
test_client = PasseInfoSDKClient(
api_key=new_key,
client_id=client.client_id
)
# Tester la nouvelle clé
test_client.get_sms_count()
# Mettre à jour la configuration
update_api_key_config(new_key)
print("Clé API pivotée avec succès")
return True
except PasseInfoAPIError as e:
print(f"Erreur lors de la rotation de la clé API : {e}")
return False
except Exception as e:
print(f"Erreur inattendue : {e}")
return False
def update_api_key_config(new_key):
# Mettre à jour la variable d'environnement
os.environ['PASSINFO_API_KEY'] = new_key
# Mettre à jour le fichier de configuration
# Implémentez votre logique de mise à jour de configuration ici
pass
```
## Meilleures Pratiques
### Gestion des Messages
- Implémenter une file d'attente de messages pour les scénarios à haut volume
- Utiliser le traitement par lots pour optimiser les performances
- Mettre en place des mécanismes de réessai avec backoff exponentiel
- Implémenter le suivi du statut de livraison des messages
- Gérer la priorité des messages selon les besoins métier
- Valider le contenu des messages avant l'envoi
### Optimisation des Performances
- Utiliser le pooling de connexions pour une meilleure gestion des ressources
- Implémenter la mise en cache des données fréquemment utilisées
- Optimiser les tailles de lots pour les opérations en masse
- Surveiller et ajuster les limites de requêtes concurrentes
- Utiliser des opérations asynchrones lorsque
Raw data
{
"_id": null,
"home_page": "https://github.com/gustavodelamou/passinfo_sdk",
"name": "passinfo-sdk",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "api, sdk, messaging, security, passinfo, sms",
"author": "Jean Gustave DELAMOU",
"author_email": "jeangustave1996@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/c6/ab/59e8ff15e3d64323762c2ab1a78986f6f2a38e6c92e4da16e138522174cf/passinfo_sdk-1.0.2.tar.gz",
"platform": null,
"description": "# PasseInfo SDK\n# \n\nUn SDK Python puissant et intuitif pour une int\u00e9gration transparente avec l'API PasseInfo, permettant une livraison de messages rapide, fiable et s\u00e9curis\u00e9e \u00e0 travers plusieurs canaux. Ce SDK simplifie les op\u00e9rations de messagerie complexes en un code propre et maintenable, en faisant le choix id\u00e9al pour les entreprises recherchant des solutions de communication robustes.\n\n## Description\n\nPasseInfo SDK est une biblioth\u00e8que Python puissante et conviviale con\u00e7ue pour simplifier l'int\u00e9gration des services de messagerie PasseInfo dans vos applications. Ce SDK abstrait la complexit\u00e9 des interactions directes avec l'API, offrant une interface propre et intuitive pour l'envoi de messages \u00e0 travers diff\u00e9rents canaux.\n\nLe SDK g\u00e8re toute l'authentification API n\u00e9cessaire, le formatage des requ\u00eates et l'analyse des r\u00e9ponses, permettant aux d\u00e9veloppeurs de se concentrer sur l'impl\u00e9mentation de leur logique de messagerie plut\u00f4t que de g\u00e9rer les d\u00e9tails de bas niveau de l'API. Il fournit une gestion robuste des erreurs, des tentatives automatiques pour les requ\u00eates \u00e9chou\u00e9es et des capacit\u00e9s compl\u00e8tes de journalisation.\n\nLes principaux avantages de l'utilisation du SDK PasseInfo incluent :\n- **Int\u00e9gration Simplifi\u00e9e** : M\u00e9thodes faciles \u00e0 utiliser pour toutes les op\u00e9rations de messagerie\n- **S\u00e9curit\u00e9 des Types** : Validation int\u00e9gr\u00e9e pour tous les param\u00e8tres API\n- **Configuration Flexible** : Param\u00e8tres personnalisables pour diff\u00e9rents cas d'utilisation\n- **Pr\u00eat pour la Production** : Test\u00e9 en conditions r\u00e9elles dans des sc\u00e9narios \u00e0 haut volume\n- **Bien Document\u00e9** : Documentation compl\u00e8te avec des exemples pratiques\n- **Utilisation Efficace des Ressources** : Optimis\u00e9 pour g\u00e9rer les messages uniques et en masse\n\nQue vous envoyiez des messages transactionnels, des communications marketing ou des notifications syst\u00e8me, PasseInfo SDK fournit les outils et la flexibilit\u00e9 dont vous avez besoin pour impl\u00e9menter des fonctionnalit\u00e9s de messagerie robustes dans vos applications Python.\n\n## Fonctionnalit\u00e9s\n\n- Envoi de messages individuels aux contacts\n- Envoi en masse de messages \u00e0 plusieurs contacts simultan\u00e9ment\n- Envoi de messages \u00e0 des groupes de contacts pr\u00e9d\u00e9finis\n- Suivi du statut de livraison des messages individuels et en masse\n- Surveillance des statuts des lots de messages et rapports de livraison\n- Gestion compl\u00e8te des erreurs\n- Formatage et validation automatiques des requ\u00eates\n- Authentification API s\u00e9curis\u00e9e\n\n## Installation\n\nLe SDK PasseInfo peut \u00eatre facilement install\u00e9 via pip, le gestionnaire de paquets Python. Le SDK est compatible avec tous les principaux syst\u00e8mes d'exploitation (Windows, macOS, Linux) et n\u00e9cessite un minimum de d\u00e9pendances. Avant l'installation, assurez-vous d'avoir Python 3.6 ou une version sup\u00e9rieure install\u00e9e sur votre syst\u00e8me.\n\n### Pr\u00e9requis\n\n- Python 3.6 ou sup\u00e9rieur\n- Biblioth\u00e8que `requests`\n\n### Installation via pip\n\n```bash\npip install passinfo-sdk\n```\n\n## D\u00e9marrage Rapide\n\nCette section vous guidera \u00e0 travers les \u00e9tapes essentielles pour commencer \u00e0 utiliser le SDK PasseInfo dans votre application. Vous apprendrez \u00e0 initialiser le client, envoyer des messages \u00e0 des contacts individuels, des groupes, et g\u00e9rer efficacement plusieurs destinataires. Avant de commencer, assurez-vous d'avoir :\n\n- Install\u00e9 le package SDK PasseInfo\n- Obtenu vos identifiants API depuis le tableau de bord PasseInfo\n- Une compr\u00e9hension basique de la programmation Python\n\n### Initialiser le Client\n\nCr\u00e9ez une nouvelle instance du client SDK PasseInfo avec vos identifiants API. Vous pouvez obtenir ces identifiants depuis votre tableau de bord PasseInfo :\n\n> **Note** : Gardez vos identifiants API s\u00e9curis\u00e9s et ne les exposez jamais dans votre code. Utilisez des variables d'environnement ou une gestion de configuration s\u00e9curis\u00e9e pour les d\u00e9ploiements en production.\n\nVoici comment initialiser le client :\n\n```python\nfrom passinfo_sdk import PassInfoSDKClient\n\nclient = PassInfoSDKClient(\n api_key=\"your_api_key\", # Votre cl\u00e9 API PasseInfo\n client_id=\"your_client_id\" # Votre ID client PasseInfo\n)\n```\n\n### Envoyer un Message Unique\n\nEnvoyez un message \u00e0 un contact individuel. Cette m\u00e9thode fournit un moyen simple de livrer des messages \u00e0 des destinataires sp\u00e9cifiques :\n\n```python\nresponse = client.send_message(\n message=\"Hello World\", # Contenu du message\n contact=\"phoneNumber\", # Num\u00e9ro de t\u00e9l\u00e9phone du destinataire\n sender_name=\"senderName\" # Nom qui appara\u00eet comme exp\u00e9diteur\n)\nprint(response)\n# Exemple de sortie : {\"status\": \"success\", \"message\": \"123\"}\n```\n\n#### Param\u00e8tres\n- `message` (str) : Le contenu de votre message. Gardez-le clair et concis.\n- `contact` (str) : Le num\u00e9ro de t\u00e9l\u00e9phone du destinataire dans un format valide (ex : \"622000001\").\n- `sender_name` (str) : Votre ID d'exp\u00e9diteur que les destinataires verront.\n\n#### R\u00e9ponse\nLa m\u00e9thode renvoie un dictionnaire contenant :\n- `status` : Statut de succ\u00e8s ou d'\u00e9chec de l'op\u00e9ration d'envoi\n- `message` : Identifiant unique pour le suivi du message\n\n#### Meilleures Pratiques\n- Validez les num\u00e9ros de t\u00e9l\u00e9phone avant l'envoi\n- Gardez le contenu du message dans les limites de caract\u00e8res\n- Stockez le message_id pour le suivi des livraisons\n- G\u00e9rez les erreurs API potentielles en utilisant des blocs try-except\n\n### Envoi de Messages en Masse\n\nEnvoyez un message \u00e0 plusieurs contacts simultan\u00e9ment. Cette m\u00e9thode fournit un moyen efficace de livrer le m\u00eame message \u00e0 plusieurs destinataires en un seul appel API :\n\n```python\ncontacts = [\"622000001\", \"622000002\", \"622000003\"]\nresponse = client.send_message_bulk(\n message=\"Hello Everyone\", # Contenu du message\n sender_name=\"senderName\", # Nom qui appara\u00eet comme exp\u00e9diteur\n contacts=contacts # Liste des num\u00e9ros de t\u00e9l\u00e9phone des destinataires\n)\nprint(response)\n# Exemple de sortie : {\"status\": \"success\", \"successful_sends\": 3, \"failed_sends\": 0}\n```\n\n#### Param\u00e8tres\n- `message` (str) : Le contenu de votre message qui sera envoy\u00e9 \u00e0 tous les destinataires.\n- `sender_name` (str) : Votre ID d'exp\u00e9diteur qui appara\u00eetra comme exp\u00e9diteur pour tous les destinataires.\n- `contacts` (list) : Une liste de num\u00e9ros de t\u00e9l\u00e9phone auxquels envoyer le message.\n\n#### R\u00e9ponse\nLa m\u00e9thode renvoie un dictionnaire contenant :\n- `status` : Statut de succ\u00e8s ou d'\u00e9chec de l'op\u00e9ration d'envoi en masse\n- `successful_sends` : Nombre de messages mis en file d'attente avec succ\u00e8s pour la livraison\n- `failed_sends` : Nombre de messages qui n'ont pas pu \u00eatre mis en file d'attente\n\n \n\n#### Meilleures Pratiques\n- Gardez la taille de la liste de contacts raisonnable pour \u00e9viter les d\u00e9lais d'attente\n- Validez tous les num\u00e9ros de t\u00e9l\u00e9phone avant l'envoi\n- Surveillez la r\u00e9ponse pour les envois \u00e9chou\u00e9s\n- Impl\u00e9mentez une logique de r\u00e9essai pour les livraisons \u00e9chou\u00e9es\n\n### Envoi de Message \u00e0 un Groupe\n\nEnvoyez un message \u00e0 un groupe pr\u00e9d\u00e9fini de contacts. Cette m\u00e9thode vous permet de livrer efficacement des messages \u00e0 des groupes qui ont \u00e9t\u00e9 cr\u00e9\u00e9s et g\u00e9r\u00e9s via votre tableau de bord PasseInfo :\n\n```python\nresponse = client.send_message_group(\n message=\"Hello Group\", # Contenu du message\n sender_name=\"senderName\", # Nom qui appara\u00eet comme exp\u00e9diteur\n group_id=\"groupId\" # ID du groupe cible\n)\nprint(response)\n# Exemple de sortie : {\"status\": \"success\", \"group_size\": 50, \"messages_queued\": 50}\n```\n\n#### Param\u00e8tres\n- `message` (str) : Le contenu de votre message qui sera envoy\u00e9 \u00e0 tous les membres du groupe.\n- `sender_name` (str) : Votre ID d'exp\u00e9diteur qui appara\u00eetra comme exp\u00e9diteur pour tous les membres du groupe.\n- `group_id` (str) : L'identifiant unique de votre groupe cible (disponible dans le tableau de bord PasseInfo).\n\n#### R\u00e9ponse\nLa m\u00e9thode renvoie un dictionnaire contenant :\n- `status` : Statut de succ\u00e8s ou d'\u00e9chec de l'op\u00e9ration d'envoi au groupe\n- `group_size` : Nombre total de contacts dans le groupe\n- `messages_queued` : Nombre de messages mis en file d'attente avec succ\u00e8s pour la livraison\n\n#### Meilleures Pratiques\n- V\u00e9rifiez l'existence du groupe avant l'envoi\n- Gardez les tailles de groupe g\u00e9rables\n- Surveillez le statut de livraison pour les grands groupes\n- Tenez compte des fuseaux horaires pour le timing des messages\n\n### Obtenir le Statut d'un Message\n\nSuivez le statut de livraison d'un message unique en utilisant son ID unique :\n\n```python\nresponse = client.get_message_status(\n message_id=\"1234567890\" # Identifiant unique du message\n)\nprint(response)\n# Exemple de sortie : {\"status\": \"sent\", \"message_id\": \"1234567890\"}\n```\n\n#### Param\u00e8tres\n- `message_id` (str) : L'identifiant unique du message \u00e0 suivre, retourn\u00e9 lors de l'envoi du message.\n\n#### R\u00e9ponse\nLa m\u00e9thode renvoie un dictionnaire contenant :\n- `status` : Statut actuel du message (ex : 'pending', 'sent', 'failed')\n- `message_id` : L'identifiant unique du message suivi\n\n#### Meilleures Pratiques\n- Stockez les ID des messages pour les communications importantes\n- Impl\u00e9mentez une interrogation du statut \u00e0 intervalles appropri\u00e9s\n- G\u00e9rez tous les statuts possibles dans votre application\n\n### Obtenir le Statut des Messages en Masse\n\nSuivez le statut de livraison de plusieurs messages envoy\u00e9s en lot :\n\n```python\nresponse = client.get_message_status_bulk(\n batch_id=\"1234567890\" # Identifiant unique du lot\n)\nprint(response)\n# Exemple de sortie : {\"status\": \"processing\", \"successful\": 45, \"failed\": 2, \"pending\": 3}\n```\n\n#### Param\u00e8tres\n- `batch_id` (str) : L'identifiant unique du lot de messages \u00e0 suivre.\n\n#### R\u00e9ponse\nLa m\u00e9thode renvoie un dictionnaire contenant :\n- `status` : Statut g\u00e9n\u00e9ral du lot\n- `successful` : Nombre de messages livr\u00e9s avec succ\u00e8s\n- `failed` : Nombre de livraisons \u00e9chou\u00e9es\n- `pending` : Nombre de messages encore en file d'attente\n\n#### Meilleures Pratiques\n- Stockez les ID de lot pour les op\u00e9rations en masse\n- Impl\u00e9mentez une logique de r\u00e9essai pour les messages \u00e9chou\u00e9s\n- Surveillez les taux et les mod\u00e8les de livraison\n- Configurez des alertes pour les taux d'\u00e9chec \u00e9lev\u00e9s\n\n## Gestion des Erreurs\n\nLe SDK fournit une gestion compl\u00e8te des erreurs via l'exception `PassInfoAPIError` :\n\n```python\nfrom passinfo_sdk.exceptions import PassInfoAPIError\n\ntry:\n response = client.send_message(\n message=\"Hello World\",\n contact=\"phoneNumber\",\n sender_name=\"senderName\"\n )\nexcept PassInfoAPIError as e:\n print(f\"Erreur {e.status_code}: {e.message}\")\n```\n\n### V\u00e9rifier le Solde de Cr\u00e9dits SMS\n\nV\u00e9rifiez le solde de cr\u00e9dits SMS restant pour votre compte :\n\n```python\ntry:\n remaining_credits = client.get_sms_count()\n print(f\"Il vous reste {remaining_credits} cr\u00e9dits SMS\")\nexcept PassInfoAPIError as e:\n print(f\"Erreur lors de la v\u00e9rification du solde SMS : {e}\")\n```\n\n#### Retourne\n- `int` : Le nombre de cr\u00e9dits SMS restants sur le compte. Retourne 0 si la requ\u00eate \u00e9choue ou s'il n'y a pas de cr\u00e9dits disponibles.\n\n#### Meilleures Pratiques\n- Impl\u00e9mentez des v\u00e9rifications r\u00e9guli\u00e8res du solde pour assurer des cr\u00e9dits suffisants\n- Configurez des alertes de solde bas dans votre application\n- G\u00e9rez les erreurs API potentielles avec \u00e9l\u00e9gance\n- Envisagez d'impl\u00e9menter des m\u00e9canismes de recharge automatique de cr\u00e9dits\n- Surveillez les mod\u00e8les d'utilisation des cr\u00e9dits pour la planification de la capacit\u00e9\n\n \n### Renouvellement de la Cl\u00e9 API\n\nFaites pivoter votre cl\u00e9 API pour une s\u00e9curit\u00e9 renforc\u00e9e en utilisant la m\u00e9thode renew_api_key. Cette op\u00e9ration invalide votre cl\u00e9 API actuelle et en g\u00e9n\u00e8re une nouvelle :\n\n```python\ntry:\n response = client.renew_api_key()\n if response.get('api_key'):\n new_key = response['api_key']\n print(f\"Nouvelle cl\u00e9 API g\u00e9n\u00e9r\u00e9e avec succ\u00e8s\")\n # Mettez \u00e0 jour votre configuration avec la nouvelle cl\u00e9\n else:\n print(\"\u00c9chec de la g\u00e9n\u00e9ration de la nouvelle cl\u00e9 API\")\nexcept PasseInfoAPIError as e:\n print(f\"Erreur lors du renouvellement de la cl\u00e9 API : {e}\")\n```\n\n#### Retours\n- `dict` : Contient la nouvelle cl\u00e9 API dans la r\u00e9ponse\n - `api_key` (str) : La cl\u00e9 API nouvellement g\u00e9n\u00e9r\u00e9e\n\n#### Meilleures Pratiques\n- Planifier des rotations r\u00e9guli\u00e8res des cl\u00e9s (par exemple, tous les 90 jours)\n- Mettre en \u0153uvre des p\u00e9riodes de transition appropri\u00e9es\n- Stocker les nouvelles cl\u00e9s de mani\u00e8re s\u00e9curis\u00e9e (par exemple, variables d'environnement)\n- Mettre \u00e0 jour toutes les instances d'application avec la nouvelle cl\u00e9\n- Maintenir un acc\u00e8s de secours pendant la rotation\n- Journaliser tous les \u00e9v\u00e9nements de rotation des cl\u00e9s\n\n#### Directives d'Impl\u00e9mentation\n1. **Pr\u00e9paration**\n - Sauvegarder la configuration actuelle\n - Planifier une fen\u00eatre de maintenance si n\u00e9cessaire\n - S'assurer que tous les syst\u00e8mes sont pr\u00eats pour la mise \u00e0 jour\n\n2. **Ex\u00e9cution**\n - G\u00e9n\u00e9rer une nouvelle cl\u00e9 API\n - Valider la fonctionnalit\u00e9 de la nouvelle cl\u00e9\n - Mettre \u00e0 jour les fichiers/variables de configuration\n - Red\u00e9marrer les services affect\u00e9s si n\u00e9cessaire\n\n3. **V\u00e9rification**\n - Tester la connectivit\u00e9 API avec la nouvelle cl\u00e9\n - Surveiller les erreurs d'authentification\n - V\u00e9rifier que tous les syst\u00e8mes fonctionnent\n\n4. **Plan de Retour en Arri\u00e8re**\n - Garder l'ancienne cl\u00e9 temporairement accessible\n - Documenter les proc\u00e9dures de retour en arri\u00e8re\n - Mettre en place une surveillance des probl\u00e8mes\n\n#### Consid\u00e9rations de S\u00e9curit\u00e9\n- Ne jamais journaliser ou afficher les cl\u00e9s API compl\u00e8tes\n- Utiliser des canaux s\u00e9curis\u00e9s pour la distribution des cl\u00e9s\n- Mettre en \u0153uvre un acc\u00e8s avec privil\u00e8ges minimaux\n- Surveiller l'utilisation non autoris\u00e9e des cl\u00e9s\n- Configurer des alertes pour les \u00e9v\u00e9nements li\u00e9s aux cl\u00e9s\n\n#### Exemple d'Impl\u00e9mentation\n```python\nfrom passinfo_sdk import PasseInfoSDKClient\nfrom passinfo_sdk.exceptions import PasseInfoAPIError\nimport os\n\ndef rotate_api_key(client):\n try:\n # G\u00e9n\u00e9rer une nouvelle cl\u00e9\n response = client.renew_api_key()\n if not response.get('api_key'):\n raise ValueError(\"Pas de cl\u00e9 API dans la r\u00e9ponse\")\n\n new_key = response['api_key']\n \n # Valider la nouvelle cl\u00e9\n test_client = PasseInfoSDKClient(\n api_key=new_key,\n client_id=client.client_id\n )\n \n # Tester la nouvelle cl\u00e9\n test_client.get_sms_count()\n \n # Mettre \u00e0 jour la configuration\n update_api_key_config(new_key)\n \n print(\"Cl\u00e9 API pivot\u00e9e avec succ\u00e8s\")\n return True\n \n except PasseInfoAPIError as e:\n print(f\"Erreur lors de la rotation de la cl\u00e9 API : {e}\")\n return False\n except Exception as e:\n print(f\"Erreur inattendue : {e}\")\n return False\n\ndef update_api_key_config(new_key):\n # Mettre \u00e0 jour la variable d'environnement\n os.environ['PASSINFO_API_KEY'] = new_key\n \n # Mettre \u00e0 jour le fichier de configuration\n # Impl\u00e9mentez votre logique de mise \u00e0 jour de configuration ici\n pass\n\n```\n## Meilleures Pratiques\n \n### Gestion des Messages\n\n- Impl\u00e9menter une file d'attente de messages pour les sc\u00e9narios \u00e0 haut volume\n- Utiliser le traitement par lots pour optimiser les performances\n- Mettre en place des m\u00e9canismes de r\u00e9essai avec backoff exponentiel\n- Impl\u00e9menter le suivi du statut de livraison des messages\n- G\u00e9rer la priorit\u00e9 des messages selon les besoins m\u00e9tier\n- Valider le contenu des messages avant l'envoi\n\n### Optimisation des Performances\n\n- Utiliser le pooling de connexions pour une meilleure gestion des ressources\n- Impl\u00e9menter la mise en cache des donn\u00e9es fr\u00e9quemment utilis\u00e9es\n- Optimiser les tailles de lots pour les op\u00e9rations en masse\n- Surveiller et ajuster les limites de requ\u00eates concurrentes\n- Utiliser des op\u00e9rations asynchrones lorsque\n",
"bugtrack_url": null,
"license": null,
"summary": "A Python SDK for seamless integration with PassInfo API, enabling secure message delivery and contact management",
"version": "1.0.2",
"project_urls": {
"Bug Reports": "https://github.com/gustavodelamou/passinfo_sdk/issues",
"Documentation": "https://github.com/gustavodelamou/passinfo_sdk/wiki",
"Homepage": "https://github.com/gustavodelamou/passinfo_sdk",
"Source Code": "https://github.com/gustavodelamou/passinfo_sdk"
},
"split_keywords": [
"api",
" sdk",
" messaging",
" security",
" passinfo",
" sms"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "b1e748bc5f5c576f98c535d1e704ea9c5635cddecda4cbba38bd1768ea4d9649",
"md5": "a102d00842b25b36cd115247682481ca",
"sha256": "32f367a1b56c36249886738232fe8fc2b50cdafd18d7b3915d919c783aee2332"
},
"downloads": -1,
"filename": "passinfo_sdk-1.0.2-py3-none-any.whl",
"has_sig": false,
"md5_digest": "a102d00842b25b36cd115247682481ca",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 16338,
"upload_time": "2025-02-15T00:07:39",
"upload_time_iso_8601": "2025-02-15T00:07:39.383418Z",
"url": "https://files.pythonhosted.org/packages/b1/e7/48bc5f5c576f98c535d1e704ea9c5635cddecda4cbba38bd1768ea4d9649/passinfo_sdk-1.0.2-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "c6ab59e8ff15e3d64323762c2ab1a78986f6f2a38e6c92e4da16e138522174cf",
"md5": "30f2407e85765a4006ee18050e834ff3",
"sha256": "54def95d7ed854444ce8745d5282367e8895cf5f6c023f19f2d540c4860045c1"
},
"downloads": -1,
"filename": "passinfo_sdk-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "30f2407e85765a4006ee18050e834ff3",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 21172,
"upload_time": "2025-02-15T00:07:42",
"upload_time_iso_8601": "2025-02-15T00:07:42.121431Z",
"url": "https://files.pythonhosted.org/packages/c6/ab/59e8ff15e3d64323762c2ab1a78986f6f2a38e6c92e4da16e138522174cf/passinfo_sdk-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-02-15 00:07:42",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "gustavodelamou",
"github_project": "passinfo_sdk",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"requirements": [
{
"name": "certifi",
"specs": [
[
"==",
"2025.1.31"
]
]
},
{
"name": "charset-normalizer",
"specs": [
[
"==",
"3.4.1"
]
]
},
{
"name": "docutils",
"specs": [
[
"==",
"0.21.2"
]
]
},
{
"name": "id",
"specs": [
[
"==",
"1.5.0"
]
]
},
{
"name": "idna",
"specs": [
[
"==",
"3.10"
]
]
},
{
"name": "jaraco.classes",
"specs": [
[
"==",
"3.4.0"
]
]
},
{
"name": "jaraco.context",
"specs": [
[
"==",
"6.0.1"
]
]
},
{
"name": "jaraco.functools",
"specs": [
[
"==",
"4.1.0"
]
]
},
{
"name": "keyring",
"specs": [
[
"==",
"25.6.0"
]
]
},
{
"name": "markdown-it-py",
"specs": [
[
"==",
"3.0.0"
]
]
},
{
"name": "mdurl",
"specs": [
[
"==",
"0.1.2"
]
]
},
{
"name": "more-itertools",
"specs": [
[
"==",
"10.6.0"
]
]
},
{
"name": "nh3",
"specs": [
[
"==",
"0.2.20"
]
]
},
{
"name": "packaging",
"specs": [
[
"==",
"24.2"
]
]
},
{
"name": "Pygments",
"specs": [
[
"==",
"2.19.1"
]
]
},
{
"name": "readme_renderer",
"specs": [
[
"==",
"44.0"
]
]
},
{
"name": "requests",
"specs": [
[
"==",
"2.32.3"
]
]
},
{
"name": "requests-toolbelt",
"specs": [
[
"==",
"1.0.0"
]
]
},
{
"name": "rfc3986",
"specs": [
[
"==",
"2.0.0"
]
]
},
{
"name": "rich",
"specs": [
[
"==",
"13.9.4"
]
]
},
{
"name": "setuptools",
"specs": [
[
"==",
"75.8.0"
]
]
},
{
"name": "twine",
"specs": [
[
"==",
"6.1.0"
]
]
},
{
"name": "urllib3",
"specs": [
[
"==",
"2.3.0"
]
]
},
{
"name": "wheel",
"specs": [
[
"==",
"0.45.1"
]
]
}
],
"lcname": "passinfo-sdk"
}