API Offline
REST · JSON v1.7 20 February 2020

API Offline

Gérez des numéros de tracking statiques pour les canaux médias offline : presse, panneaux d'affichage, cartes de visite, et plus encore.

Introduction #

L'API Optico Offline Numbers gère des numéros de tracking statiques, attribués de manière permanente à des numéros de destination spécifiques pour les médias offline tels que les annonces presse, panneaux d'affichage, cartes de visite et catalogues. Contrairement aux numéros de tracking online (attribués dynamiquement par visiteur web), les numéros offline sont persistants et liés à une campagne ou destination nommée.

URL de base https://www.optico.fr

Transport & conventions

MéthodeTous les endpoints utilisent GET
ParamètresEn query string
Format de réponseapplication/json
Timeout5 secondes recommandées

Authentification #

Chaque requête doit inclure le paramètre key, la clé API Offline Numbers du domaine. Cette clé est disponible dans les paramètres de votre domaine dans le back-end Optico.

GET
/offline-numbers-api?key=offl_b7e2c8a14f9dcdef&action=check&tracking_number=0899123456
L'API Offline Numbers doit être explicitement activée pour le domaine dans l'admin Optico. Les requêtes avec une clé valide mais l'API désactivée renvoient {"status": "error", "error": "Access denied to this API"}.

Erreurs #

Enveloppe de réponse

Chaque requête renvoie 200 OK avec une enveloppe JSON. Branchez-vous sur le champ status ; en cas d'erreur, le champ error indique la raison.

Succès

json
{ "status": "success", "phone_number": "0612345678", "tracking_number": "0899123456" }

Erreur

json
{ "status": "error",
  "error": "No tracking number available" }

Messages d'erreur courants

MessageCauseCorrection
Invalid API keyLa key est manquante, révoquée, ou n'appartient pas à ce domaine.Utilisez la clé API Offline Numbers issue des paramètres de votre domaine.
Access denied to this APIL'API Offline Numbers n'est pas activée pour le domaine.Contactez Optico pour activer l'API sur le domaine.
No tracking number availableLe pool privé pour le type demandé est épuisé.Demandez des numéros supplémentaires à Optico, ou choisissez un autre préfixe.
Tracking number already assignedLe numéro que vous tentez d'assign est déjà utilisé.Utilisez reassign pour changer sa destination, ou faites unassign au préalable.
Unknown tracking numberLe tracking_number donné ne fait pas partie du pool de ce domaine.Vérifiez le numéro avec /offline-numbers-api/list.

Idempotence

Les actions de lecture (check, /list) peuvent être appelées de manière répétée sans risque. Les actions d'écriture (assign, unassign, reassign, redirect_setup) renvoient l'état courant en cas de succès ; renvoyer un unassign ou redirect_setup après succès est un no-op. assign alloue un nouveau numéro depuis le pool à chaque succès ; ne réessayez pas aveuglément sur timeout, appelez d'abord check.

Réessais & timeouts

Utilisez un timeout client de 5 secondes. Réessayez sur timeout réseau ou HTTP 5xx uniquement pour les actions de lecture. Pour assign, traitez un timeout comme « inconnu » et appelez check avec le phone_number de destination pour savoir si un numéro a été alloué avant de réessayer.

Limites de taux

Aucune limite de taux publique fixe n'est appliquée. Ces endpoints sont administratifs ; l'usage typique est de quelques requêtes par jour, pas par seconde. Contactez le support avant de scripter des réassignations en masse.

Endpoints #

EndpointMéthodeObjet
/offline-numbers-apiGETGérer les numéros de tracking : assign, unassign, reassign, check, et plus encore.
/offline-numbers-api/listGETLister tous les numéros de tracking et de destination pour un domaine.

GET /offline-numbers-api #

GET/offline-numbers-api

Paramètres communs

ParamètreTypeDescription
keystring ObligatoireClé API Offline Numbers du domaine.
actionstring ObligatoireUne parmi : assign, unassign, reassign, check, redirect_setup.
phone_numberstringNuméro de téléphone de destination (le numéro réel) vers lequel rediriger les appels.
tracking_numberstringLe numéro de téléphone de tracking Optico (issu du pool privé).
descriptionstringLibellé du numéro de tracking (ex. nom de campagne, emplacement publicitaire).
typeintegerType de préfixe du numéro de tracking. Voir le tableau ci-dessous.
cost_groupstringPour les numéros surtaxés, filtrage optionnel par groupe de coût. Ex. A299.
allow_redirect0 ou 1Détermine si les appels doivent être redirigés lorsque le destinataire ne répond pas.
timetablearray|intPlage horaire pour la fonctionnalité de redirection. Passez 0 pour désactiver, ou un tableau d'entrées jour/plage par exemple timetable[monday]=10:00-12:00;17:15-18:24.

Type et référence des préfixes

IDPréfixeIDPréfixeIDPréfixeIDPréfixe
108002081030940820
50899601702803
9041005110892120897
170826180805200811210821
2208252300442024004925004990
260034900270044912800349290044800
300032310891320890330895
340806

Champs de la réponse en cas de succès

ChampDescription
statussuccess ou error
phone_numberNuméro de téléphone de destination (le numéro réel).
tracking_numberNuméro de tracking Optico attribué.
allow_redirectRéglage actuel de la redirection (0 ou 1).
timetablePlage horaire active (0 si vide, sinon tableau JSON d'entrées jour/plage).

Action : assign #

Attribuer un numéro de tracking issu du pool privé du domaine à un numéro de téléphone de destination.

ParamètreObligatoire pour cette action
phone_numberObligatoire
descriptionObligatoire
typeObligatoire
allow_redirect, cost_group, timetable, operatorOptionnel
GET
/offline-numbers-api?key=offl_key&action=assign&phone_number=0612345678&description=Magazine+Ad&type=1&allow_redirect=1
json
{ "status": "success", "phone_number": "0612345678", "tracking_number": "0899123456", "allow_redirect": "1" }

Action : unassign #

Libérer un numéro de tracking et le remettre dans le pool privé. Fournissez soit tracking_number, soit phone_number.

GET
/offline-numbers-api?key=offl_key&action=unassign&tracking_number=0899123456

Action : reassign #

Changer le numéro de téléphone de destination d'un numéro de tracking existant.

ParamètreObligatoire
phone_numberObligatoire
tracking_numberObligatoire
description, allow_redirectOptionnel

Action : check #

Interroger l'état courant d'un numéro de tracking ou d'un téléphone de destination. Fournissez soit tracking_number, soit phone_number.

json
{ "status": "success", "phone_number": "0612345678", "tracking_number": "0899123456", "allow_redirect": "1" }

Action : redirect_setup #

Mettre à jour le drapeau de redirection d'appels et/ou la plage horaire d'un numéro de tracking existant.

ParamètreObligatoire
allow_redirectObligatoire
tracking_number ou phone_numberObligatoire (un des deux)
timetableOptionnel
json
{ "status": "success", "phone_number": "0612345678", "tracking_number": "0899123456",
  "allow_redirect": "1", "timetable": [{ "day": "mon", "from": "09:00", "to": "18:00" }] }

GET /offline-numbers-api/list #

GET/offline-numbers-api/list

Renvoie tous les numéros de tracking (à la fois les numéros offline attribués et les numéros du pool non attribués) associés au domaine.

Paramètres

ParamètreTypeDescription
keystring ObligatoireClé API Offline Numbers.
details0 ou 1 OptionnelSi 1, renvoie les détails complets par numéro. Par défaut, renvoie une simple correspondance.

Réponse simple (details=0)

json
{
  "0899123456": "0612345678",
  "0899789012": "0698765432"
}

Numéro de tracking → téléphone de destination

Réponse détaillée (details=1)

json
{
  "tracking_number_details": [{
    "tracking_phone": "0899123456",
    "destination_phone": "0612345678",
    "description": "Magazine Ad",
    "product_name": "example.com",
    "last_update": "2019-10-01 12:00:00"
  }]
}