Choisissez le numéro et le tarif ensemble
Achetez un numéro précis sélectionné à partir d’une nouvelle recherche de numéros disponibles. Utilisez le champ de l’entrée sélectionnée info.uuid comme identifiant du numéro et l’une des valeurs de cette même entrée price[].uuid comme identifiant du tarif. La route accepte également le numéro complet enregistré, mais un identifiant de pays, de zone ou de préfixe ne remplace pas la sélection d’un numéro.
La recherche ou la consultation de tarifs enregistrés ne réserve pas de numéro et ne fige pas son prix. Confirmez les frais de mise en service, le prix mensuel, le tarif par minute entrante, les minutes et les canaux inclus pour l’offre sélectionnée, ainsi que les autorisations d’achat du compte et les exigences d’enregistrement. Dans la fonction auxiliaire examinée, le montant de base initial correspond aux frais de mise en service plus le prix mensuel ; l’ensemble des frais et conditions propres au fournisseur doit être confirmé pour l’offre sélectionnée.
Envoyez une demande d’achat avec contrôles par POST
Utilisez un compte API activé via HTTPS depuis une adresse IP source autorisée. La commande suivante effectue un achat, et non une demande de devis ou une simulation. Définissez toutes les variables à partir de la même sélection récente de numéro et de tarif. Les champs de plafond conservent le préfixe historique restore_quote_ ; le portail actuel les utilise également pour les achats de numéros précis assortis de contrôles.
curl --silent --show-error --user "$API_USER:$API_PASSWORD" \
--data-urlencode "restore_quote_price_id=$PRICE_ID" \
--data-urlencode "restore_quote_setup=$SETUP_PRICE" \
--data-urlencode "restore_quote_monthly=$MONTHLY_PRICE" \
--data-urlencode "restore_quote_per_minute=$PER_MINUTE_PRICE" \
--data-urlencode "restore_quote_channels=$CHANNELS" \
"https://api.multitel.net/v3/rentnumber/$NUMBER_ID/$PRICE_ID"Utilisez un formulaire POST comme indiqué. La fonction auxiliaire sait également analyser du JSON et une structure enveloppant les options, mais cet examen n’établit pas une équivalence complète pour tous les parcours de devis et de fournisseurs. N’utilisez pas GET pour acheter, même si ce coordinateur historique ne comporte aucun contrôle explicite de la méthode.
| Champ | Signification |
|---|---|
| NUMBER_ID | UUID du numéro sélectionné dans la recherche, ou numéro complet enregistré. Un seul numéro par requête. |
| PRICE_ID | UUID du tarif associé à ce numéro sélectionné et à votre compte. Fournissez-le toujours explicitement. |
| restore_quote_price_id | Doit correspondre à l’identifiant du tarif résolu. Fournir ce champ active les contrôles du devis ; il ne s’agit pas d’une clé d’idempotence. |
| restore_quote_setup | Montant maximal accepté des frais de mise en service, sous la forme d’une valeur numérique finie supérieure ou égale à zéro. |
| restore_quote_monthly | Prix mensuel maximal accepté, sous la forme d’une valeur numérique finie supérieure ou égale à zéro. |
| restore_quote_per_minute | Tarif maximal accepté par minute entrante, sous la forme d’une valeur numérique finie supérieure ou égale à zéro. |
| restore_quote_channels | Nombre entier exact de canaux de l’option tarifaire sélectionnée, et non une demande d’offre comportant un autre nombre de canaux. |
Fournissez tous les champs numériques du devis chaque fois que vous fournissez l’identifiant du tarif du devis. Un identifiant modifié, un prix dépassant un plafond, un plafond manquant ou invalide, un nombre de canaux modifié ou un verrou de devis occupé entraîne le renvoi du code API 409 avant l’envoi de la demande au fournisseur de location sélectionné. Les comparaisons admettent une faible tolérance liée aux nombres à virgule flottante ; utilisez les valeurs réelles affichées pour l’offre plutôt qu’un prix arrondi manuellement.
Ces contrôles ne transforment pas l’ensemble du processus en simulation ou en transaction. Des recherches de profils d’enregistrement, la création d’identités ou d’autres opérations de la fonction auxiliaire peuvent avoir lieu avant ces contrôles. Ceux-ci ne figent pas non plus le stock externe et ne remplacent pas les restrictions d’achat du compte.
Enregistrement et activation
Si nécessaire, ajoutez le champ de formulaire RegistrationID contenant l’UUID du profil d’enregistrement appartenant au client. Il ne s’agit pas de l’identifiant d’un justificatif téléversé, d’une adresse de fournisseur ou d’une entité d’identité distincte. La fonction auxiliaire recherche le profil dans le compte authentifié et rejette les profils manquants ou indisponibles.
Certains numéros du stock pris en charge peuvent être achetés avant la fin de l’enregistrement ; d’autres nécessitent un profil avant l’achat. Une validation ou une mise en service propre à l’opérateur peut rester nécessaire. N’interprétez pas la réussite d’un achat ou l’absence de contrôle préalable comme une dispense d’enregistrement ou une activation immédiate.
Lorsqu’il est présent dans la réponse, le champ registration_requirements identifie la recherche structurée des exigences, avec le pays et le type de numéro. Utilisez le catalogue d’enregistrement et le processus de soumission des justificatifs pour satisfaire aux exigences applicables. Le texte et les métadonnées renvoyés ne constituent pas, à eux seuls, une approbation du profil.
Évitez le remplacement de l’offre à votre insu
Le coordinateur historique peut déduire un tarif omis à partir des données du numéro en cache. Il peut aussi se rabattre sur le tarif le plus récent du compte pour un préfixe en cache lorsqu’un identifiant de tarif explicitement fourni n’existe plus, et mettre à jour la sélection du tarif autorisé en cache. Ne vous fiez pas à ces mécanismes de repli pour sélectionner l’offre approuvée par un client.
Fournissez explicitement le tarif sélectionné et les champs de contrôle du devis correspondants. Le contrôle de l’identifiant du devis rejette tout repli vers un autre identifiant avant l’envoi de la demande de location. Après un conflit dû à un tarif obsolète, relancez la recherche et obtenez une nouvelle sélection approuvée plutôt que de supprimer les contrôles pour forcer l’achat.
Aucune période de réservation n’est garantie et aucune durée de validité du cache n’est appliquée systématiquement à tous les parcours. La disponibilité du numéro, les limites tarifaires du compte et les règles d’achat sont vérifiées de nouveau au cours du processus, mais le comportement complet propre à chaque fournisseur reste en cours d’examen.
Paramètres avancés : routage par défaut du compte
Un achat peut hériter des destinations vocales existantes du compte, des destinations de secours, de la destination SMS et de la préférence de trunk d’origine. Examinez ces valeurs par défaut avant de commander ; l’omission des options de routage ne garantit pas un numéro sans configuration. La fonction auxiliaire examinée active le renouvellement automatique par défaut.
| Option | Comportement de résolution |
|---|---|
| uri, uri2, uri3 | Les valeurs omises héritent des valeurs par défaut correspondantes du compte. Les valeurs explicitement vides effacent la valeur dans la fonction auxiliaire au lieu d’hériter de la valeur par défaut. Utilisez des destinations valides adaptées au mode de routage sélectionné. |
| smsuri | Une valeur omise hérite de la destination SMS du compte ; une valeur explicitement vide l’efface dans la fonction auxiliaire. |
| origintrunk | Un identifiant de trunk explicitement fourni et reconnu est prioritaire. Une valeur non résolue peut entraîner un repli vers la préférence du compte ou la valeur par défaut historique plutôt que produire une erreur. |
| forward_destination, forwarding_destination, type | Alias de mode de routage non vides, dans cet ordre de priorité. Utilisez les valeurs prises en charge dans la configuration de routage du compte, et non un mode numérique choisi au hasard. |
| RegistrationID | Recherche d’un profil d’enregistrement limitée au client ; elle est distincte des destinations de routage. |
| autorenew | La valeur par défaut est 1. La fonction auxiliaire vérifie si la valeur est non vide ; par conséquent, 0 ne désactive pas le renouvellement de manière fiable au moyen de ce champ d’achat. Utilisez les fonctions de gestion du renouvellement prises en charge par le compte et vérifiez le paramètre enregistré. |
Ces règles décrivent le fonctionnement de la fonction auxiliaire partagée et ne garantissent pas que tous les fournisseurs enregistrent chaque paramètre facultatif de manière identique. D’autres champs historiques pour la voix, la messagerie vocale, le fax et les SMS existent, mais nécessitent encore un examen complet propre à chaque fournisseur. Vérifiez la configuration enregistrée du numéro acheté au moyen du processus de gestion du compte avant de compter sur les appels ou les messages.
Réponse
Exemple fictif d’un achat simple ; les valeurs et les fonctionnalités varient selon l’offre sélectionnée.
{
"status": {
"code": 200,
"msg": ""
},
"response": {
"number": "12025550123",
"price": {
"per_minute": "0.0100",
"free_minutes": "100",
"setup_price": "2.00",
"monthly_price": "4.00",
"channels": "2",
"overflow": "0"
},
"features": [
"voice"
],
"needs_registration": 0,
"registration_requirements": null
}
}Le coordinateur utilise ses propres champs status.code/status.msg et une enveloppe response sans garantie de présence du champ status.results. Une erreur s’accompagne généralement d’une liste de réponse vide. En cas de réussite, examinez le numéro et le tarif renvoyés, puis vérifiez leur concordance avec l’inventaire du compte et l’état d’enregistrement. L’acceptation par le fournisseur ne constitue pas un test réel des services de voix, de SMS ou de fax.
Erreurs et résultats incertains
| Code API | Signification |
|---|---|
| 403 | Les restrictions tarifaires ou d’achat du compte, une sélection tarifaire indisponible ou un profil d’enregistrement inaccessible peuvent bloquer le traitement. |
| 404 | Numéro, tarif ou préfixe sélectionné manquant ou indisponible. |
| 409 | Le numéro est déjà actif, un contrôle du devis ne correspond plus aux valeurs attendues ou une autre opération assortie de contrôles détient le verrou. |
| 422 | Les informations d’enregistrement sont requises, incomplètes ou ne peuvent pas être créées dans les systèmes concernés par les parcours d’enregistrement examinés. |
| 500 et autres codes du fournisseur ou du compte | Échec du fournisseur, du traitement local ou lié aux règles applicables. Ces codes ne prouvent pas systématiquement qu’aucun achat ni aucune facturation n’a eu lieu. |
Lisez le corps réel de la réponse API ainsi que le statut HTTP. Un fournisseur externe peut accepter une location avant l’échec d’une notification locale, de l’enregistrement ou d’un autre traitement. Certaines attributions depuis le stock local utilisent des transactions de base de données, mais il n’existe aucun mécanisme universel d’annulation des commandes auprès des fournisseurs externes. Ce coordinateur ne dispose d’aucune clé d’idempotence client.
Vérifiez la concordance des données avant toute nouvelle tentative
- Conservez le numéro, le tarif et les plafonds du devis approuvés dans l’enregistrement de commande de votre application avant d’envoyer la demande une seule fois.
- Après la requête, consultez l’inventaire des numéros achetés et les détails du numéro pour le même compte, y compris après un dépassement de délai ou une erreur.
- Si le numéro existe, vérifiez son tarif, son renouvellement, son routage et son état d’enregistrement au lieu d’envoyer une nouvelle demande d’achat.
- Si le résultat reste incertain, demandez à l’assistance de vérifier la concordance entre la commande auprès du fournisseur et la facturation du compte avant toute nouvelle tentative. Un message d’erreur ou un indicateur de réussite dans un journal historique ne constitue pas, à lui seul, une preuve suffisante.
- Une fois l’attribution du numéro au compte et son activation confirmées, effectuez les vérifications habituelles du routage et les tests de service du compte.