openapi: 3.0.0
servers:
  - url: https://apirest.isendpro.com/cgi-bin
  - url: http://apirest.isendpro.com/cgi-bin
info:
  contact:
    email: support@isendpro.com
    name: iSendPro Support Team
    url: https://www.isendpro.com/
    x-twitter: isendpro
  description: |
    [1] Liste des fonctionnalités :
    - envoi de SMS à un ou plusieurs destinataires,
    - lookup HLR,
    - récupération des récapitulatifs de campagne,
    - gestion des répertoires,
    - ajout en liste noire.
    - comptage du nombre de caractères des SMS

    [2] Pour utiliser cette API vous devez:
    - Créer un compte iSendPro sur https://isendpro.com/
    - Créditer votre compte 
        - Remarque: obtention d'un crédit de test possible sous conditions
    - Noter votre clé de compte (keyid)
      - Elle vous sera indispensable à l'utilisation de l'API
      - Vous pouvez la trouver dans le rubrique mon "compte", sous-rubrique "mon API"
    - Configurer le contrôle IP
      - Le contrôle IP est configurable dans le rubrique mon "compte", sous-rubrique "mon API"
      - Il s'agit d'un système de liste blanche, vous devez entrer les IP utilisées pour appeler l'API
      - Vous pouvez également désactiver totalement le contrôle IP
  title: API iSendPro
  version: 1.1.1
  x-apisguru-categories:
    - messaging
  x-logo:
    url: https://en.isendpro.com/img/logo-isendpro.png
  x-origin:
    - format: openapi
      url: https://apirest.isendpro.com/isendpro.json
      version: "3.0"
  x-providerName: isendpro.com
paths:
  /campagne:
    get:
      description: |
        Retourne les SMS envoyés sur une période donnée en fonction d'une date de début et d'une date de fin. 

        Les dates sont au format YYYY-MM-DD hh:mm. 

        Le fichier rapport de campagne est sous la forme d'un fichier zip + contenant un fichier csv contenant le détail des envois.
      operationId: getCampagne
      parameters:
        - description: Clé API
          in: query
          name: keyid
          required: true
          schema:
            type: string
        - description: Doit valoir "1"
          in: query
          name: rapportCampagne
          required: true
          schema:
            enum:
              - "1"
            type: string
        - description: date de debut au format YYYY-MM-DD hh:mm
          in: query
          name: date_deb
          required: true
          schema:
            type: string
        - description: date de fin au format YYYY-MM-DD hh:mm
          in: query
          name: date_fin
          required: true
          schema:
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                format: binary
                type: string
            file:
              schema:
                format: binary
                type: string
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
            file:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Retourne les SMS envoyés sur une période donnée
      tags:
        - campagne
  /comptage:
    post:
      description: Compte le nombre de SMS necessaire à un envoi
      operationId: comptage
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ComptageRequest"
        description: sms request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ComptageReponse"
            etat:
              examples:
                response:
                  value:
                    etat:
                      nb_caractere: "222"
                      nb_sms: "2"
                      tel: "0680010203"
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: "Compter le nombre de caractère "
      tags:
        - comptage
  /credit:
    get:
      description: |
        Retourne le credit existant associe au compte.
      operationId: getCredit
      parameters:
        - description: Clé API
          in: query
          name: keyid
          required: true
          schema:
            format: string
            type: string
        - description: Type de reponse demandée, 1 pour euro, 2 pour euro + estimation quantité
          in: query
          name: credit
          required: true
          schema:
            enum:
              - "1"
              - "2"
            type: string
      responses:
        "200":
          content:
            application/json:
              examples:
                response:
                  value:
                    etat:
                      credit: "10.0"
              schema:
                $ref: "#/components/schemas/CreditResponse"
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Interrogation credit
      tags:
        - credit
  /dellistenoire:
    post:
      description: Supprime un numero en liste noire
      operationId: delListeNoire
      parameters:
        - description: Clé API
          in: query
          name: keyid
          required: true
          schema:
            format: string
            type: string
        - description: Doit valoir "1"
          in: query
          name: delListeNoire
          required: true
          schema:
            enum:
              - "1"
            type: string
        - description: numéro de mobile à supprimer
          in: query
          name: num
          required: true
          schema:
            format: string
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LISTENOIREReponse"
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Ajoute un numero en liste noire
      tags:
        - delListeNoire
  /getlistenoire:
    post:
      description: Retourne un fichier csv zippé contenant la liste noire
      operationId: getListeNoire
      parameters:
        - description: Clé API
          in: query
          name: keyid
          required: true
          schema:
            format: string
            type: string
        - description: Doit valoir "1"
          in: query
          name: getListeNoire
          required: true
          schema:
            enum:
              - "1"
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                format: binary
                type: string
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Retourne le liste noire
      tags:
        - getListeNoire
  /hlr:
    post:
      description: |
        Réalise un lookup HLR sur les numéros 
      operationId: getHlr
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/HLRrequest"
        required: true
      responses:
        "200":
          content:
            application/json:
              examples:
                response:
                  value:
                    etat:
                      etat:
                        operateur: ORAN
                        tel: "0680010203"
              schema:
                $ref: "#/components/schemas/HLRReponse"
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: Vérifier la validité d'un numéro
      tags:
        - hlr
  /repertoire:
    post:
      description: Cree un nouveau répertoire et retourne son identifiant. Cet identifiant pourra être utilisé pour ajouter ou supprimer des numéros via l'API.
      operationId: repertoireCrea
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/REPERTOIREcreaterequest"
        description: Creation repertoire
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/REPERTOIREcreatereponse"
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Gestion repertoire (creation)
      tags:
        - repertoire
    put:
      description: Ajoute ou supprime une liste de numéros à un répertoire existant.
      operationId: repertoire
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/REPERTOIREmodifrequest"
        description: Requête de creation repertoire
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/REPERTOIREmodifreponse"
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Gestion repertoire (modification)
      tags:
        - repertoire
  /setlistenoire:
    post:
      description: Ajoute un numero en liste noire. Une fois ajouté, les requêtes d'envoi de SMS marketing vers ce numéro seront refusées.
      operationId: setListeNoire
      parameters:
        - description: Clé API
          in: query
          name: keyid
          required: true
          schema:
            format: string
            type: string
        - description: Doit valoir "1"
          in: query
          name: setlisteNoire
          required: true
          schema:
            enum:
              - "1"
            type: string
        - description: numéro de mobile à insérer en liste noire
          in: query
          name: num
          required: true
          schema:
            format: string
            type: string
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/LISTENOIREReponse"
          description: Successful response
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Erreur
      summary: Ajoute un numero en liste noire
      tags:
        - setListeNoire
  /shortlink:
    post:
      description: add a shortlink
      operationId: addShortlink
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/ShortlinkRequest"
        description: add sub account request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ShortlinkResponse"
            exemple1:
              examples:
                response:
                  value:
                    etat:
                      etat:
                        code: 250
                        message: Le lien court a ete genere
                        shortlink: ww.sms.ht/aOHi
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: add a shortlink
      tags:
        - add shortlink
  /sms:
    post:
      description: Envoi un sms vers un unique destinataire
      operationId: sendSms
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SmsUniqueRequest"
        description: sms request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMSReponse"
            etat:
              examples:
                response:
                  value:
                    etat:
                      code: "0"
                      message: hello world!
                      tel: "0680010203"
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: Envoyer un sms
      tags:
        - sms
  /smsmulti:
    post:
      description: |
        Envoi de SMS vers 1 ou plusieurs destinataires
      operationId: sendSmsMulti
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SMSRequest"
        description: sms request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SMSReponse"
            etat:
              examples:
                response:
                  value:
                    etat:
                      code: "0"
                      message: hello world!
                      tel: "0680010203"
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: Envoyer des SMS
      tags:
        - sms
  /subaccount:
    post:
      description: Ajoute un sous compte
      operationId: subaccountAdd
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SubaccountAddRequest"
        description: add sub account request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubaccountAddResponse"
            exemple1:
              examples:
                response:
                  value:
                    etat:
                      etat:
                        code: 230
                        subAccountId: 20150
                        subAccountKeyId: a9bc68fe78
                        subAccountLogin: marion.peltier.agence06
                        tel: Le sous compte a ete ajoute
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: Ajoute un sous compte
      tags:
        - add subaccount
    put:
      description: Edit a subaccount
      operationId: subaccountEdit
      requestBody:
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SubaccountRequest"
        description: edit sub account request
        required: true
      responses:
        "200":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SubaccountResponse"
          description: Reponse OK
        "400":
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Erreur"
          description: Dysfonctionnement
      summary: Edit a subaccount
      tags:
        - edit subaccount
components:
  schemas:
    ComptageReponse:
      properties:
        etat:
          $ref: "#/components/schemas/ComptageReponse_etat"
      type: object
    ComptageReponse_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/ComptageReponse_etat_etat"
          type: array
    ComptageReponse_etat_etat:
      properties:
        nb_caractere:
          description: nombre de caractères
          type: string
        nb_sms:
          description: nombre de sms nécessaires
          type: string
        tel:
          description: numéro de téléphone
          type: string
    ComptageRequest:
      example:
        comptage: "1"
        emetteur: iSendPro
        keyid: VOTRE_KEYID
        num: "0600123456"
        sms: Bonjour! Bienvenue sur iSendPro!
      properties:
        comptage:
          default: "1"
          enum:
            - "1"
          type: string
        date_envoi:
          description: Date d'envoi au format YYYY-MM-DD hh:mm . Ce paramètre est optionnel, si il est omis l'envoi est réalisé immédiatement.
          type: string
        emetteur:
          description: |
            - L'emetteur doit être une chaîne alphanumérique comprise entre 4 et 11 caractères.

            - Les caractères acceptés sont les chiffres entre 0 et 9, les lettres entre A et Z et l’espace.

            - Il ne peut pas comporter uniquement des chiffres. 

            - Pour la modification de l'émetteur et dans le cadre de campagnes commerciales, les opérateurs imposent contractuellement d'ajouter en fin de message le texte "STOP XXXXX". De ce fait, le message envoyé ne pourra excéder une longueur de 148 caractères au lieu des 160 caractères, le « STOP » étant rajouté automatiquement.
          type: string
        gmt_zone:
          description: Fuseau horaire de la date d'envoi
          enum:
            - Pacific/Midway
            - America/Adak
            - Etc/GMT+10
            - Pacific/Marquesas
            - Pacific/Gambier
            - America/Anchorage
            - America/Ensenada
            - Etc/GMT+8
            - America/Los_Angeles
            - America/Denver
            - America/Chihuahua
            - America/Dawson_Creek
            - America/Belize
            - America/Cancun
            - Chile/EasterIsland
            - America/Chicago
            - America/New_York
            - America/Havana
            - America/Bogota
            - America/Caracas
            - America/Santiago
            - America/La_Paz
            - Atlantic/Stanley
            - America/Campo_Grande
            - America/Goose_Bay
            - America/Glace_Bay
            - America/St_Johns
            - America/Araguaina
            - America/Montevideo
            - America/Miquelon
            - America/Godthab
            - America/Argentina/Buenos_Aires
            - America/Sao_Paulo
            - America/Noronha
            - Atlantic/Cape_Verde
            - Atlantic/Azores
            - Europe/Belfast
            - Europe/Dublin
            - Europe/Lisbon
            - Europe/London
            - Africa/Abidjan
            - Europe/Amsterdam
            - Europe/Belgrade
            - Europe/Brussels
            - Africa/Algiers
            - Africa/Windhoek
            - Asia/Beirut
            - Africa/Cairo
            - Asia/Gaza
            - Africa/Blantyre
            - Asia/Jerusalem
            - Europe/Minsk
            - Asia/Damascus
            - Europe/Moscow
            - Africa/Addis_Ababa
            - Asia/Tehran
            - Asia/Dubai
            - Asia/Yerevan
            - Asia/Kabul
            - Asia/Yekaterinburg
            - Asia/Tashkent
            - Asia/Kolkata
            - Asia/Katmandu
            - Asia/Dhaka
            - Asia/Novosibirsk
            - Asia/Rangoon
            - Asia/Bangkok
            - Asia/Krasnoyarsk
            - Asia/Hong_Kong
            - Asia/Irkutsk
            - Australia/Perth
            - Australia/Eucla
            - Asia/Tokyo
            - Asia/Seoul
            - Asia/Yakutsk
            - Australia/Adelaide
            - Australia/Darwin
            - Australia/Brisbane
            - Australia/Hobart
            - Asia/Vladivostok
            - Australia/Lord_Howe
            - Etc/GMT-11
            - Asia/Magadan
            - Pacific/Norfolk
            - Asia/Anadyr
            - Pacific/Auckland
            - Etc/GMT-12
            - Pacific/Chatham
            - Pacific/Tongatapu
            - Pacific/Kiritimati
          type: string
        keyid:
          description: Clé API
          type: string
        nostop:
          description: Si le message n’est pas à but commercial, vous pouvez faire une demande pour retirer l’obligation du STOP. Une fois votre demande validée par nos services, vous pourrez supprimer la mention STOP SMS en ajoutant nostop = "1"
          type: string
        num:
          description: Numero de téléphone au format national (exemple 0680010203) ou international (example 33680010203)
          type: string
        numAzur:
          enum:
            - "1"
          type: string
        sms:
          description: Message à envoyer aux destinataires. Le message doit être encodé au format utf-8 et ne contenir que des caractères existant dans l'alphabet GSM. Il est également possible d'envoyer (à l'étranger uniquement) des SMS en UCS-2, cf paramètre ucs2 pour plus de détails.
          type: string
        smslong:
          default: "999"
          description: |
            Le SMS long permet de dépasser la limite de 160 caractères en envoyant un message constitué
            de plusieurs SMS.
            Il est possible d’envoyer jusqu’à 6 SMS concaténés pour une longueur totale maximale de 918
            caractères par message.
            Pour des raisons technique, la limite par SMS concaténé étant de 153 caractères.
            En cas de modification de l’émetteur, il faut considérer l’ajout automatique de 12 caractères
            du « STOP SMS ».
            Pour envoyer un smslong, il faut ajouter le paramètre smslong aux appels. La valeur de SMS doit être le nombre maximum de sms concaténé autorisé.   Pour ne pas avoir ce message d’erreur et obtenir un calcul dynamique du nombre de SMS alors il faut renseigner smslong = "999"
          enum:
            - "999"
          type: string
        tracker:
          description: "Le tracker doit être une chaine alphanumérique de moins de 50 caractères. Ce tracker sera ensuite renvoyé en paramètre des urls pour les retours des accusés de réception. "
          type: string
        ucs2:
          description: |
            Il est également possible d’envoyer des SMS en alphabet non latin (russe, chinois, arabe, etc) sur
            les numéros hors France métropolitaine.
            Pour ce faire, la requête devrait être encodée au format UTF-8 et contenir l’argument ucs2 = "1"
            Du fait de contraintes techniques, 1 SMS unique ne pourra pas dépasser 70 caractères (au lieu
            des 160 usuels) et dans le cas de SMS long, chaque sms ne pourra dépasser 67 caractères.
          type: string
      required:
        - comptage
        - keyid
        - num
        - sms
      type: object
    CreditResponse:
      properties:
        etat:
          $ref: "#/components/schemas/CreditResponse_etat"
      type: object
    CreditResponse_etat:
      properties:
        credit:
          description: Montant du crédit restant
          format: double
          type: number
        quantite:
          description: Equivalence du crédit en nombre de SMS vers la France Métropolitaine.
          format: string
          type: string
    Erreur:
      properties:
        etat:
          $ref: "#/components/schemas/Erreur_etat"
      type: object
    Erreur_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/Erreur_etat_etat"
          type: array
    Erreur_etat_etat:
      properties:
        code:
          description: Code retour. Voir "tableau des code retour" dans l'annexe de la documentation
          format: string
          type: string
        message:
          description: Libellé associé au code de retour
          format: string
          type: string
    HLRReponse:
      properties:
        etat:
          $ref: "#/components/schemas/HLRReponse_etat"
      type: object
    HLRReponse_etat:
      properties:
        etat:
          description: liste des retours
          items:
            $ref: "#/components/schemas/HLRReponse_etat_etat"
          type: array
      required:
        - etat
    HLRReponse_etat_etat:
      properties:
        operateur:
          description: Opérateur associé (si numéro valide)
          type: string
        tel:
          description: Numero de téléphone concerné
          type: string
      required:
        - operateur
        - tel
    HLRrequest:
      example:
        getHLR: "1"
        keyid: VOTRE_KEYID
        num:
          - "06123456789"
          - "06345687899"
      properties:
        getHLR:
          default: "1"
          description: Doit valoir "1"
          enum:
            - "1"
          type: string
        keyid:
          description: Clé API
          type: string
        num:
          description: liste de numéros de téléphone
          items:
            description: numéro au format national français ou international
            type: string
          type: array
      required:
        - getHLR
        - keyid
        - num
      type: object
    LISTENOIREReponse:
      properties:
        etat:
          $ref: "#/components/schemas/LISTENOIREReponse_etat"
      type: object
    LISTENOIREReponse_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/LISTENOIREReponse_etat_etat"
          type: array
      required:
        - etat
    LISTENOIREReponse_etat_etat:
      properties:
        listeNoire:
          description: Doit valoir "OK"
          type: string
        tel:
          description: Numéro de téléphone à placer en liste noire. Format national Français ou international.
          type: string
      required:
        - listeNoire
        - tel
    REPERTOIREcreatereponse:
      properties:
        etat:
          $ref: "#/components/schemas/REPERTOIREcreatereponse_etat"
      type: object
    REPERTOIREcreatereponse_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/REPERTOIREcreatereponse_etat_etat"
          type: array
    REPERTOIREcreatereponse_etat_etat:
      properties:
        code:
          description: Code retour. Voir "tableau des code retour" dans l'annexe de la documentation
          type: string
        message:
          description: Libellé associé au code retour.
          type: string
        repertoireId:
          description: repertoireId du repertoire crée.
          type: string
      required:
        - code
    REPERTOIREcreaterequest:
      example:
        keyid: VOTRE_KEYID
        repertoireEdit: create
        repertoireNom: Repertoire de test
      properties:
        keyid:
          description: Clé API
          type: string
        repertoireEdit:
          default: create
          description: Action à réaliser doit valoir "create" ici.
          enum:
            - create
          type: string
        repertoireNom:
          description: Nom du répertoire (libellé) à créer
          type: string
      required:
        - keyid
        - repertoireEdit
        - repertoireNom
      type: object
    REPERTOIREmodifreponse:
      properties:
        etat:
          $ref: "#/components/schemas/REPERTOIREmodifreponse_etat"
      type: object
    REPERTOIREmodifreponse_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/REPERTOIREmodifreponse_etat_etat"
          type: array
    REPERTOIREmodifreponse_etat_etat:
      description: Tableau de code retour. Si succès, un code retour distinct par numéro soumis.
      properties:
        code:
          description: Code retour. Voir "tableau des code retour" dans l'annexe de la documentation
          type: string
        message:
          description: Libellé associé au code retour.
          type: string
        repertoireId:
          description: repertoireId passé en argument lors de l'appel
          type: string
        tel:
          description: Numéro de téléphone
          type: string
      required:
        - code
    REPERTOIREmodifrequest:
      example:
        keyid: VOTRE_KEYID
        num:
          - "06123456789"
          - "07123456789"
        repertoireEdit: add
        repertoireId: VOTRE_REPERTOIRE_ID
      properties:
        champ1:
          description: Noms des contact
          items:
            description: Nom des contacts
            type: string
          type: array
        champ10:
          description: Champs I des contacts
          items:
            description: Champ I
            type: string
          type: array
        champ11:
          description: Champs J des contacts
          items:
            description: Champ J
            type: string
          type: array
        champ12:
          description: Champs K des contacts
          items:
            description: Champ K
            type: string
          type: array
        champ13:
          description: Champs L des contacts
          items:
            description: Champ L
            type: string
          type: array
        champ14:
          description: Champs M des contacts
          items:
            description: Champ M
            type: string
          type: array
        champ15:
          description: Champs N des contacts
          items:
            description: Champ N
            type: string
          type: array
        champ16:
          description: Champs O des contacts
          items:
            description: Champ O
            type: string
          type: array
        champ17:
          description: Champs P des contacts
          items:
            description: Champ P
            type: string
          type: array
        champ18:
          description: Champs Q des contacts
          items:
            description: Champ Q
            type: string
          type: array
        champ19:
          description: Champs R des contacts
          items:
            description: Champ R
            type: string
          type: array
        champ2:
          description: Champs A des contacts
          items:
            description: Champ A
            type: string
          type: array
        champ20:
          description: Champs S des contacts
          items:
            description: Champ S
            type: string
          type: array
        champ21:
          description: Champs T des contacts
          items:
            description: Champ T
            type: string
          type: array
        champ22:
          description: Champs U des contacts
          items:
            description: Champ U
            type: string
          type: array
        champ23:
          description: Champs V des contacts
          items:
            description: Champ V
            type: string
          type: array
        champ24:
          description: Champs W des contacts
          items:
            description: Champ W
            type: string
          type: array
        champ25:
          description: Champs X des contacts
          items:
            description: Champ X
            type: string
          type: array
        champ26:
          description: Champs Y des contacts
          items:
            description: Champ Y
            type: string
          type: array
        champ27:
          description: Champs Z des contacts
          items:
            description: Champ Z
            type: string
          type: array
        champ3:
          description: Champs B des contacts
          items:
            description: Champ B
            type: string
          type: array
        champ4:
          description: Champs C des contacts
          items:
            description: Champ C
            type: string
          type: array
        champ5:
          description: Champs D des contacts
          items:
            description: Champ D
            type: string
          type: array
        champ6:
          description: Champs E des contacts
          items:
            description: Champ E
            type: string
          type: array
        champ7:
          description: Champs F des contacts
          items:
            description: Champ F
            type: string
          type: array
        champ8:
          description: Champs G des contacts
          items:
            description: Champ G
            type: string
          type: array
        champ9:
          description: Champs H des contacts
          items:
            description: Champ H
            type: string
          type: array
        keyid:
          description: Clé API
          type: string
        num:
          description: liste des numéros des téléphone à ajouter ou supprimer
          items:
            description: Numéro de téléphone au format national ou international
            type: string
          type: array
        repertoireEdit:
          description: action à réaliser, "add" pour l'ajout de numéros, "del" pour la suppression de numéros
          enum:
            - add
            - del
          type: string
        repertoireId:
          description: repertoireId du répertoire cible
          type: string
      required:
        - keyid
        - num
        - repertoireEdit
        - repertoireId
      type: object
    SMSReponse:
      properties:
        etat:
          $ref: "#/components/schemas/SMSReponse_etat"
      type: object
    SMSReponse_etat:
      properties:
        etat:
          items:
            $ref: "#/components/schemas/SMSReponse_etat_etat"
          type: array
    SMSReponse_etat_etat:
      properties:
        code:
          description: Code retour. Voir "tableau des code retour" dans l'annexe de la documentation
          type: integer
        message:
          description: Libellé associé au code de retour
          type: string
        smslong:
          description: Nombre de SMS longs facturés
          type: string
        tel:
          description: Numero de téléphone concerné
          type: string
    SMSRequest:
      example:
        emetteur: iSendPro
        keyid: VOTRE_KEYID
        num:
          - "0600123456"
          - "0612345678"
        sms: Bonjour! Bienvenue sur iSendPro!
      properties:
        date_envoi:
          description: Paramètre optionnel, date d'envoi au format YYYY-MM-DD hh:mm
          type: string
        emetteur:
          description: "L'emetteur doit être une chaîne alphanumérique comprise entre 4 et 11 caractères. Les caractères acceptés sont les chiffres entre 0 et 9, les lettres entre A et Z et l’espace. Il ne peut pas comporter uniquement des chiffres. Pour la modification de l’émetteur et dans le cadre de campagnes commerciales, les opérateurs imposent contractuellement d’ajouter en fin de message le texte suivant : STOP XXXXX De ce fait, le message envoyé ne pourra excéder une longueur de 148 caractères au lieu des 160 caractères, le « STOP » étant rajouté automatiquement."
          type: string
        gmt_zone:
          description: Fuseau horaire de la date d'envoi
          enum:
            - Pacific/Midway
            - America/Adak
            - Etc/GMT+10
            - Pacific/Marquesas
            - Pacific/Gambier
            - America/Anchorage
            - America/Ensenada
            - Etc/GMT+8
            - America/Los_Angeles
            - America/Denver
            - America/Chihuahua
            - America/Dawson_Creek
            - America/Belize
            - America/Cancun
            - Chile/EasterIsland
            - America/Chicago
            - America/New_York
            - America/Havana
            - America/Bogota
            - America/Caracas
            - America/Santiago
            - America/La_Paz
            - Atlantic/Stanley
            - America/Campo_Grande
            - America/Goose_Bay
            - America/Glace_Bay
            - America/St_Johns
            - America/Araguaina
            - America/Montevideo
            - America/Miquelon
            - America/Godthab
            - America/Argentina/Buenos_Aires
            - America/Sao_Paulo
            - America/Noronha
            - Atlantic/Cape_Verde
            - Atlantic/Azores
            - Europe/Belfast
            - Europe/Dublin
            - Europe/Lisbon
            - Europe/London
            - Africa/Abidjan
            - Europe/Amsterdam
            - Europe/Belgrade
            - Europe/Brussels
            - Africa/Algiers
            - Africa/Windhoek
            - Asia/Beirut
            - Africa/Cairo
            - Asia/Gaza
            - Africa/Blantyre
            - Asia/Jerusalem
            - Europe/Minsk
            - Asia/Damascus
            - Europe/Moscow
            - Africa/Addis_Ababa
            - Asia/Tehran
            - Asia/Dubai
            - Asia/Yerevan
            - Asia/Kabul
            - Asia/Yekaterinburg
            - Asia/Tashkent
            - Asia/Kolkata
            - Asia/Katmandu
            - Asia/Dhaka
            - Asia/Novosibirsk
            - Asia/Rangoon
            - Asia/Bangkok
            - Asia/Krasnoyarsk
            - Asia/Hong_Kong
            - Asia/Irkutsk
            - Australia/Perth
            - Australia/Eucla
            - Asia/Tokyo
            - Asia/Seoul
            - Asia/Yakutsk
            - Australia/Adelaide
            - Australia/Darwin
            - Australia/Brisbane
            - Australia/Hobart
            - Asia/Vladivostok
            - Australia/Lord_Howe
            - Etc/GMT-11
            - Asia/Magadan
            - Pacific/Norfolk
            - Asia/Anadyr
            - Pacific/Auckland
            - Etc/GMT-12
            - Pacific/Chatham
            - Pacific/Tongatapu
            - Pacific/Kiritimati
          type: string
        keyid:
          description: Clé API
          type: string
        nostop:
          description: Si le message n’est pas à but commercial, vous pouvez faire une demande pour retirer l’obligation du STOP. Une fois votre demande validée par nos services, vous pourrez supprimer la mention STOP SMS en ajoutant nostop = "1"
          type: string
        num:
          items:
            description: Numeros de téléphone au format national (exemple 0680010203) ou international (example 33680010203)
            type: string
          type: array
        numAzur:
          enum:
            - "1"
          type: string
        repertoireId:
          description: Id du repertoire
          type: string
        sms:
          items:
            description: Message à envoyer aux destinataires. Il peut y avoir un seul message ou 1 message par destintaire différent.
            type: string
          type: array
        smslong:
          description: 'Le SMS long permet de dépasser la limite de 160 caractères en envoyant un message constitué de plusieurs SMS. Il est possible d’envoyer jusqu’à 6 SMS concaténés pour une longueur totale maximale de 918 caractères par message. Pour des raisons technique, la limite par SMS concaténé étant de 153 caractères. En cas de modification de l’émetteur, il faut considérer l’ajout automatique de 12 caractères du « STOP SMS ». Pour envoyer un smslong, il faut ajouter le paramètre smslong aux appels. La valeur de SMS doit être le nombre maximum de sms concaténé autorisé.   Pour ne pas avoir ce message d’erreur et obtenir un calcul dynamique du nombre de SMS alors il faut renseigner smslong = "999" '
          type: string
        tracker:
          items:
            description: "Le tracker doit être une chaine alphanumérique de moins de 50 caractères. Ce tracker sera ensuite renvoyé en paramètre des urls pour les retours des accusés de réception. "
            type: string
          type: array
        ucs2:
          description: Il est également possible d’envoyer des SMS en alphabet non latin (russe, chinois, arabe, etc) sur les numéros hors France métropolitaine. Pour ce faire, la requête devrait être encodée au format UTF-8 et contenir l’argument ucs2 = "1" Du fait de contraintes techniques, 1 SMS unique ne pourra pas dépasser 70 caractères (au lieu des 160 usuels) et dans le cas de SMS long, chaque sms ne pourra dépasser 67 caractères.
          type: string
      required:
        - keyid
        - num
        - sms
      type: object
    ShortlinkRequest:
      properties:
        keyid:
          type: string
        shortlink:
          type: string
      required:
        - keyid
        - shortlink
      type: object
    ShortlinkResponse:
      properties:
        etat:
          properties:
            etat:
              items:
                properties:
                  code:
                    type: number
                  message:
                    type: string
                  shortlink:
                    type: string
                type: object
              type: array
          type: object
      type: object
    SmsUniqueRequest:
      example:
        emetteur: iSendPro
        keyid: VOTRE_KEYID
        num: "0600123456"
        sms: Bonjour! Bienvenue sur iSendPro!
      properties:
        date_envoi:
          description: Date d'envoi au format YYYY-MM-DD hh:mm . Ce paramètre est optionnel, si il est omis l'envoi est réalisé immédiatement.
          type: string
        emetteur:
          description: |
            - L'emetteur doit être une chaîne alphanumérique comprise entre 4 et 11 caractères.

            - Les caractères acceptés sont les chiffres entre 0 et 9, les lettres entre A et Z et l’espace.

            - Il ne peut pas comporter uniquement des chiffres. 

            - Pour la modification de l'émetteur et dans le cadre de campagnes commerciales, les opérateurs imposent contractuellement d'ajouter en fin de message le texte "STOP XXXXX". De ce fait, le message envoyé ne pourra excéder une longueur de 148 caractères au lieu des 160 caractères, le « STOP » étant rajouté automatiquement.
          type: string
        gmt_zone:
          description: Fuseau horaire de la date d'envoi
          enum:
            - Pacific/Midway
            - America/Adak
            - Etc/GMT+10
            - Pacific/Marquesas
            - Pacific/Gambier
            - America/Anchorage
            - America/Ensenada
            - Etc/GMT+8
            - America/Los_Angeles
            - America/Denver
            - America/Chihuahua
            - America/Dawson_Creek
            - America/Belize
            - America/Cancun
            - Chile/EasterIsland
            - America/Chicago
            - America/New_York
            - America/Havana
            - America/Bogota
            - America/Caracas
            - America/Santiago
            - America/La_Paz
            - Atlantic/Stanley
            - America/Campo_Grande
            - America/Goose_Bay
            - America/Glace_Bay
            - America/St_Johns
            - America/Araguaina
            - America/Montevideo
            - America/Miquelon
            - America/Godthab
            - America/Argentina/Buenos_Aires
            - America/Sao_Paulo
            - America/Noronha
            - Atlantic/Cape_Verde
            - Atlantic/Azores
            - Europe/Belfast
            - Europe/Dublin
            - Europe/Lisbon
            - Europe/London
            - Africa/Abidjan
            - Europe/Amsterdam
            - Europe/Belgrade
            - Europe/Brussels
            - Africa/Algiers
            - Africa/Windhoek
            - Asia/Beirut
            - Africa/Cairo
            - Asia/Gaza
            - Africa/Blantyre
            - Asia/Jerusalem
            - Europe/Minsk
            - Asia/Damascus
            - Europe/Moscow
            - Africa/Addis_Ababa
            - Asia/Tehran
            - Asia/Dubai
            - Asia/Yerevan
            - Asia/Kabul
            - Asia/Yekaterinburg
            - Asia/Tashkent
            - Asia/Kolkata
            - Asia/Katmandu
            - Asia/Dhaka
            - Asia/Novosibirsk
            - Asia/Rangoon
            - Asia/Bangkok
            - Asia/Krasnoyarsk
            - Asia/Hong_Kong
            - Asia/Irkutsk
            - Australia/Perth
            - Australia/Eucla
            - Asia/Tokyo
            - Asia/Seoul
            - Asia/Yakutsk
            - Australia/Adelaide
            - Australia/Darwin
            - Australia/Brisbane
            - Australia/Hobart
            - Asia/Vladivostok
            - Australia/Lord_Howe
            - Etc/GMT-11
            - Asia/Magadan
            - Pacific/Norfolk
            - Asia/Anadyr
            - Pacific/Auckland
            - Etc/GMT-12
            - Pacific/Chatham
            - Pacific/Tongatapu
            - Pacific/Kiritimati
          type: string
        keyid:
          description: Clé API
          type: string
        nostop:
          description: Si le message n’est pas à but commercial, vous pouvez faire une demande pour retirer l’obligation du STOP. Une fois votre demande validée par nos services, vous pourrez supprimer la mention STOP SMS en ajoutant nostop = "1"
          type: string
        num:
          description: Numero de téléphone au format national (exemple 0680010203) ou international (example 33680010203)
          type: string
        numAzur:
          enum:
            - "1"
          type: string
        sms:
          description: Message à envoyer aux destinataires. Le message doit être encodé au format utf-8 et ne contenir que des caractères existant dans l'alphabet GSM. Il est également possible d'envoyer (à l'étranger uniquement) des SMS en UCS-2, cf paramètre ucs2 pour plus de détails.
          type: string
        smslong:
          description: |
            Le SMS long permet de dépasser la limite de 160 caractères en envoyant un message constitué
            de plusieurs SMS.
            Il est possible d’envoyer jusqu’à 6 SMS concaténés pour une longueur totale maximale de 918
            caractères par message.
            Pour des raisons technique, la limite par SMS concaténé étant de 153 caractères.
            En cas de modification de l’émetteur, il faut considérer l’ajout automatique de 12 caractères
            du « STOP SMS ».
            Pour envoyer un smslong, il faut ajouter le paramètre smslong aux appels. La valeur de SMS doit être le nombre maximum de sms concaténé autorisé.   Pour ne pas avoir ce message d’erreur et obtenir un calcul dynamique du nombre de SMS alors il faut renseigner smslong = "999"
          type: string
        tracker:
          description: "Le tracker doit être une chaine alphanumérique de moins de 50 caractères. Ce tracker sera ensuite renvoyé en paramètre des urls pour les retours des accusés de réception. "
          type: string
        ucs2:
          description: |
            Il est également possible d’envoyer des SMS en alphabet non latin (russe, chinois, arabe, etc) sur
            les numéros hors France métropolitaine.
            Pour ce faire, la requête devrait être encodée au format UTF-8 et contenir l’argument ucs2 = "1"
            Du fait de contraintes techniques, 1 SMS unique ne pourra pas dépasser 70 caractères (au lieu
            des 160 usuels) et dans le cas de SMS long, chaque sms ne pourra dépasser 67 caractères.
          type: string
      required:
        - keyid
        - num
        - sms
      type: object
    SubaccountAddRequest:
      properties:
        keyid:
          type: string
        subAccountEdit:
          enum:
            - addAccount
          type: string
        subAccountLogin:
          type: string
        subAccountPassword:
          type: string
      required:
        - keyid
        - subAccountEdit
        - subAccountLogin
        - subAccountPassword
      type: object
    SubaccountAddResponse:
      properties:
        etat:
          properties:
            etat:
              items:
                properties:
                  code:
                    type: number
                  message:
                    type: string
                  subAccountId:
                    type: string
                  subAccountKeyId:
                    type: string
                  subAccountLogin:
                    type: string
                type: object
              type: array
          type: object
      type: object
    SubaccountRequest:
      properties:
        keyid:
          description: Clé API
          type: string
        subAccountAddCredit:
          description: montant du crédit à ajouter
          type: string
        subAccountCountryCode:
          type: string
        subAccountEdit:
          description: action à réaliser soit setPrice pour définir un prix ou addCredit pour ajouter du credit ou setRestriction modifier la restriction stop /
          enum:
            - setPrice
            - addCredit
            - setRestriction
          type: string
        subAccountKeyId:
          description: keyid du sous-compte
          type: string
        subAccountPrice:
          type: string
        subAccountRestrictionStop:
          enum:
            - "0"
            - "1"
          type: string
        subAccountRestrictionTime:
          enum:
            - "0"
            - "1"
          type: string
      required:
        - keyid
        - subAccountEdit
      type: object
    SubaccountResponse:
      properties:
        etat:
          properties:
            etat:
              items:
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  subAccountId:
                    type: string
                  subAccountKeyid:
                    type: string
                type: object
              type: array
          type: object
      type: object
