models.py•23.7 kB
# generated by fastapi-codegen:
# filename: openapi.yaml
# timestamp: 2025-06-29T03:53:55+00:00
from __future__ import annotations
from enum import Enum
from typing import List, Optional
from pydantic import BaseModel, Field
class ComptageReponseEtatEtat(BaseModel):
nb_caractere: Optional[str] = Field(None, description='nombre de caractères')
nb_sms: Optional[str] = Field(None, description='nombre de sms nécessaires')
tel: Optional[str] = Field(None, description='numéro de téléphone')
class Comptage(Enum):
field_1 = '1'
class GmtZone(Enum):
Pacific_Midway = 'Pacific/Midway'
America_Adak = 'America/Adak'
Etc_GMT_10 = 'Etc/GMT+10'
Pacific_Marquesas = 'Pacific/Marquesas'
Pacific_Gambier = 'Pacific/Gambier'
America_Anchorage = 'America/Anchorage'
America_Ensenada = 'America/Ensenada'
Etc_GMT_8 = 'Etc/GMT+8'
America_Los_Angeles = 'America/Los_Angeles'
America_Denver = 'America/Denver'
America_Chihuahua = 'America/Chihuahua'
America_Dawson_Creek = 'America/Dawson_Creek'
America_Belize = 'America/Belize'
America_Cancun = 'America/Cancun'
Chile_EasterIsland = 'Chile/EasterIsland'
America_Chicago = 'America/Chicago'
America_New_York = 'America/New_York'
America_Havana = 'America/Havana'
America_Bogota = 'America/Bogota'
America_Caracas = 'America/Caracas'
America_Santiago = 'America/Santiago'
America_La_Paz = 'America/La_Paz'
Atlantic_Stanley = 'Atlantic/Stanley'
America_Campo_Grande = 'America/Campo_Grande'
America_Goose_Bay = 'America/Goose_Bay'
America_Glace_Bay = 'America/Glace_Bay'
America_St_Johns = 'America/St_Johns'
America_Araguaina = 'America/Araguaina'
America_Montevideo = 'America/Montevideo'
America_Miquelon = 'America/Miquelon'
America_Godthab = 'America/Godthab'
America_Argentina_Buenos_Aires = 'America/Argentina/Buenos_Aires'
America_Sao_Paulo = 'America/Sao_Paulo'
America_Noronha = 'America/Noronha'
Atlantic_Cape_Verde = 'Atlantic/Cape_Verde'
Atlantic_Azores = 'Atlantic/Azores'
Europe_Belfast = 'Europe/Belfast'
Europe_Dublin = 'Europe/Dublin'
Europe_Lisbon = 'Europe/Lisbon'
Europe_London = 'Europe/London'
Africa_Abidjan = 'Africa/Abidjan'
Europe_Amsterdam = 'Europe/Amsterdam'
Europe_Belgrade = 'Europe/Belgrade'
Europe_Brussels = 'Europe/Brussels'
Africa_Algiers = 'Africa/Algiers'
Africa_Windhoek = 'Africa/Windhoek'
Asia_Beirut = 'Asia/Beirut'
Africa_Cairo = 'Africa/Cairo'
Asia_Gaza = 'Asia/Gaza'
Africa_Blantyre = 'Africa/Blantyre'
Asia_Jerusalem = 'Asia/Jerusalem'
Europe_Minsk = 'Europe/Minsk'
Asia_Damascus = 'Asia/Damascus'
Europe_Moscow = 'Europe/Moscow'
Africa_Addis_Ababa = 'Africa/Addis_Ababa'
Asia_Tehran = 'Asia/Tehran'
Asia_Dubai = 'Asia/Dubai'
Asia_Yerevan = 'Asia/Yerevan'
Asia_Kabul = 'Asia/Kabul'
Asia_Yekaterinburg = 'Asia/Yekaterinburg'
Asia_Tashkent = 'Asia/Tashkent'
Asia_Kolkata = 'Asia/Kolkata'
Asia_Katmandu = 'Asia/Katmandu'
Asia_Dhaka = 'Asia/Dhaka'
Asia_Novosibirsk = 'Asia/Novosibirsk'
Asia_Rangoon = 'Asia/Rangoon'
Asia_Bangkok = 'Asia/Bangkok'
Asia_Krasnoyarsk = 'Asia/Krasnoyarsk'
Asia_Hong_Kong = 'Asia/Hong_Kong'
Asia_Irkutsk = 'Asia/Irkutsk'
Australia_Perth = 'Australia/Perth'
Australia_Eucla = 'Australia/Eucla'
Asia_Tokyo = 'Asia/Tokyo'
Asia_Seoul = 'Asia/Seoul'
Asia_Yakutsk = 'Asia/Yakutsk'
Australia_Adelaide = 'Australia/Adelaide'
Australia_Darwin = 'Australia/Darwin'
Australia_Brisbane = 'Australia/Brisbane'
Australia_Hobart = 'Australia/Hobart'
Asia_Vladivostok = 'Asia/Vladivostok'
Australia_Lord_Howe = 'Australia/Lord_Howe'
Etc_GMT_11 = 'Etc/GMT-11'
Asia_Magadan = 'Asia/Magadan'
Pacific_Norfolk = 'Pacific/Norfolk'
Asia_Anadyr = 'Asia/Anadyr'
Pacific_Auckland = 'Pacific/Auckland'
Etc_GMT_12 = 'Etc/GMT-12'
Pacific_Chatham = 'Pacific/Chatham'
Pacific_Tongatapu = 'Pacific/Tongatapu'
Pacific_Kiritimati = 'Pacific/Kiritimati'
class NumAzur(Enum):
field_1 = '1'
class Smslong(Enum):
field_999 = '999'
class ComptageRequest(BaseModel):
comptage: Comptage
date_envoi: Optional[str] = Field(
None,
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.",
)
emetteur: Optional[str] = Field(
None,
description='- L\'emetteur doit être une chaîne alphanumérique comprise entre 4 et 11 caractères.\n\n- Les caractères acceptés sont les chiffres entre 0 et 9, les lettres entre A et Z et l’espace.\n\n- Il ne peut pas comporter uniquement des chiffres. \n\n- 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 «\xa0STOP\xa0» étant rajouté automatiquement.\n',
)
gmt_zone: Optional[GmtZone] = Field(
None, description="Fuseau horaire de la date d'envoi"
)
keyid: str = Field(..., description='Clé API')
nostop: Optional[str] = Field(
None,
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"',
)
num: str = Field(
...,
description='Numero de téléphone au format national (exemple 0680010203) ou international (example 33680010203)',
)
numAzur: Optional[NumAzur] = None
sms: str = Field(
...,
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.",
)
smslong: Optional[Smslong] = Field(
'999',
description='Le SMS long permet de dépasser la limite de 160 caractères en envoyant un message constitué\nde plusieurs SMS.\nIl est possible d’envoyer jusqu’à 6 SMS concaténés pour une longueur totale maximale de 918\ncaractères par message.\nPour des raisons technique, la limite par SMS concaténé étant de 153 caractères.\nEn cas de modification de l’émetteur, il faut considérer l’ajout automatique de 12 caractères\ndu «\xa0STOP SMS\xa0».\nPour 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"\n',
)
tracker: Optional[str] = Field(
None,
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. ',
)
ucs2: Optional[str] = Field(
None,
description='Il est également possible d’envoyer des SMS en alphabet non latin (russe, chinois, arabe, etc) sur\nles numéros hors France métropolitaine.\nPour ce faire, la requête devrait être encodée au format UTF-8 et contenir l’argument ucs2 = "1"\nDu fait de contraintes techniques, 1 SMS unique ne pourra pas dépasser 70 caractères (au lieu\ndes 160 usuels) et dans le cas de SMS long, chaque sms ne pourra dépasser 67 caractères.\n',
)
class CreditResponseEtat(BaseModel):
credit: Optional[float] = Field(None, description='Montant du crédit restant')
quantite: Optional[str] = Field(
None,
description='Equivalence du crédit en nombre de SMS vers la France Métropolitaine.',
)
class ErreurEtatEtat(BaseModel):
code: Optional[str] = Field(
None,
description='Code retour. Voir "tableau des code retour" dans l\'annexe de la documentation',
)
message: Optional[str] = Field(
None, description='Libellé associé au code de retour'
)
class HLRReponseEtatEtat(BaseModel):
operateur: str = Field(..., description='Opérateur associé (si numéro valide)')
tel: str = Field(..., description='Numero de téléphone concerné')
class GetHLR(Enum):
field_1 = '1'
class HLRrequest(BaseModel):
getHLR: GetHLR = Field(..., description='Doit valoir "1"')
keyid: str = Field(..., description='Clé API')
num: List[str] = Field(..., description='liste de numéros de téléphone')
class LISTENOIREReponseEtatEtat(BaseModel):
listeNoire: str = Field(..., description='Doit valoir "OK"')
tel: str = Field(
...,
description='Numéro de téléphone à placer en liste noire. Format national Français ou international.',
)
class REPERTOIREcreatereponseEtatEtat(BaseModel):
code: str = Field(
...,
description='Code retour. Voir "tableau des code retour" dans l\'annexe de la documentation',
)
message: Optional[str] = Field(None, description='Libellé associé au code retour.')
repertoireId: Optional[str] = Field(
None, description='repertoireId du repertoire crée.'
)
class RepertoireEdit(Enum):
create = 'create'
class REPERTOIREcreaterequest(BaseModel):
keyid: str = Field(..., description='Clé API')
repertoireEdit: RepertoireEdit = Field(
..., description='Action à réaliser doit valoir "create" ici.'
)
repertoireNom: str = Field(..., description='Nom du répertoire (libellé) à créer')
class REPERTOIREmodifreponseEtatEtat(BaseModel):
code: str = Field(
...,
description='Code retour. Voir "tableau des code retour" dans l\'annexe de la documentation',
)
message: Optional[str] = Field(None, description='Libellé associé au code retour.')
repertoireId: Optional[str] = Field(
None, description="repertoireId passé en argument lors de l'appel"
)
tel: Optional[str] = Field(None, description='Numéro de téléphone')
class RepertoireEdit1(Enum):
add = 'add'
del_ = 'del'
class REPERTOIREmodifrequest(BaseModel):
champ1: Optional[List[str]] = Field(None, description='Noms des contact')
champ10: Optional[List[str]] = Field(None, description='Champs I des contacts')
champ11: Optional[List[str]] = Field(None, description='Champs J des contacts')
champ12: Optional[List[str]] = Field(None, description='Champs K des contacts')
champ13: Optional[List[str]] = Field(None, description='Champs L des contacts')
champ14: Optional[List[str]] = Field(None, description='Champs M des contacts')
champ15: Optional[List[str]] = Field(None, description='Champs N des contacts')
champ16: Optional[List[str]] = Field(None, description='Champs O des contacts')
champ17: Optional[List[str]] = Field(None, description='Champs P des contacts')
champ18: Optional[List[str]] = Field(None, description='Champs Q des contacts')
champ19: Optional[List[str]] = Field(None, description='Champs R des contacts')
champ2: Optional[List[str]] = Field(None, description='Champs A des contacts')
champ20: Optional[List[str]] = Field(None, description='Champs S des contacts')
champ21: Optional[List[str]] = Field(None, description='Champs T des contacts')
champ22: Optional[List[str]] = Field(None, description='Champs U des contacts')
champ23: Optional[List[str]] = Field(None, description='Champs V des contacts')
champ24: Optional[List[str]] = Field(None, description='Champs W des contacts')
champ25: Optional[List[str]] = Field(None, description='Champs X des contacts')
champ26: Optional[List[str]] = Field(None, description='Champs Y des contacts')
champ27: Optional[List[str]] = Field(None, description='Champs Z des contacts')
champ3: Optional[List[str]] = Field(None, description='Champs B des contacts')
champ4: Optional[List[str]] = Field(None, description='Champs C des contacts')
champ5: Optional[List[str]] = Field(None, description='Champs D des contacts')
champ6: Optional[List[str]] = Field(None, description='Champs E des contacts')
champ7: Optional[List[str]] = Field(None, description='Champs F des contacts')
champ8: Optional[List[str]] = Field(None, description='Champs G des contacts')
champ9: Optional[List[str]] = Field(None, description='Champs H des contacts')
keyid: str = Field(..., description='Clé API')
num: List[str] = Field(
..., description='liste des numéros des téléphone à ajouter ou supprimer'
)
repertoireEdit: RepertoireEdit1 = Field(
...,
description='action à réaliser, "add" pour l\'ajout de numéros, "del" pour la suppression de numéros',
)
repertoireId: str = Field(..., description='repertoireId du répertoire cible')
class SMSReponseEtatEtat(BaseModel):
code: Optional[int] = Field(
None,
description='Code retour. Voir "tableau des code retour" dans l\'annexe de la documentation',
)
message: Optional[str] = Field(
None, description='Libellé associé au code de retour'
)
smslong: Optional[str] = Field(None, description='Nombre de SMS longs facturés')
tel: Optional[str] = Field(None, description='Numero de téléphone concerné')
class SMSRequest(BaseModel):
date_envoi: Optional[str] = Field(
None, description="Paramètre optionnel, date d'envoi au format YYYY-MM-DD hh:mm"
)
emetteur: Optional[str] = Field(
None,
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 «\xa0STOP\xa0» étant rajouté automatiquement.",
)
gmt_zone: Optional[GmtZone] = Field(
None, description="Fuseau horaire de la date d'envoi"
)
keyid: str = Field(..., description='Clé API')
nostop: Optional[str] = Field(
None,
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"',
)
num: List[str]
numAzur: Optional[NumAzur] = None
repertoireId: Optional[str] = Field(None, description='Id du repertoire')
sms: List[str]
smslong: Optional[str] = Field(
None,
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 «\xa0STOP SMS\xa0». 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" ',
)
tracker: Optional[List[str]] = None
ucs2: Optional[str] = Field(
None,
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.',
)
class ShortlinkRequest(BaseModel):
keyid: str
shortlink: str
class EtatItem(BaseModel):
code: Optional[float] = None
message: Optional[str] = None
shortlink: Optional[str] = None
class Etat(BaseModel):
etat: Optional[List[EtatItem]] = None
class ShortlinkResponse(BaseModel):
etat: Optional[Etat] = None
class SmsUniqueRequest(BaseModel):
date_envoi: Optional[str] = Field(
None,
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.",
)
emetteur: Optional[str] = Field(
None,
description='- L\'emetteur doit être une chaîne alphanumérique comprise entre 4 et 11 caractères.\n\n- Les caractères acceptés sont les chiffres entre 0 et 9, les lettres entre A et Z et l’espace.\n\n- Il ne peut pas comporter uniquement des chiffres. \n\n- 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 «\xa0STOP\xa0» étant rajouté automatiquement.\n',
)
gmt_zone: Optional[GmtZone] = Field(
None, description="Fuseau horaire de la date d'envoi"
)
keyid: str = Field(..., description='Clé API')
nostop: Optional[str] = Field(
None,
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"',
)
num: str = Field(
...,
description='Numero de téléphone au format national (exemple 0680010203) ou international (example 33680010203)',
)
numAzur: Optional[NumAzur] = None
sms: str = Field(
...,
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.",
)
smslong: Optional[str] = Field(
None,
description='Le SMS long permet de dépasser la limite de 160 caractères en envoyant un message constitué\nde plusieurs SMS.\nIl est possible d’envoyer jusqu’à 6 SMS concaténés pour une longueur totale maximale de 918\ncaractères par message.\nPour des raisons technique, la limite par SMS concaténé étant de 153 caractères.\nEn cas de modification de l’émetteur, il faut considérer l’ajout automatique de 12 caractères\ndu «\xa0STOP SMS\xa0».\nPour 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"\n',
)
tracker: Optional[str] = Field(
None,
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. ',
)
ucs2: Optional[str] = Field(
None,
description='Il est également possible d’envoyer des SMS en alphabet non latin (russe, chinois, arabe, etc) sur\nles numéros hors France métropolitaine.\nPour ce faire, la requête devrait être encodée au format UTF-8 et contenir l’argument ucs2 = "1"\nDu fait de contraintes techniques, 1 SMS unique ne pourra pas dépasser 70 caractères (au lieu\ndes 160 usuels) et dans le cas de SMS long, chaque sms ne pourra dépasser 67 caractères.\n',
)
class SubAccountEdit(Enum):
addAccount = 'addAccount'
class SubaccountAddRequest(BaseModel):
keyid: str
subAccountEdit: SubAccountEdit
subAccountLogin: str
subAccountPassword: str
class EtatItem1(BaseModel):
code: Optional[float] = None
message: Optional[str] = None
subAccountId: Optional[str] = None
subAccountKeyId: Optional[str] = None
subAccountLogin: Optional[str] = None
class Etat1(BaseModel):
etat: Optional[List[EtatItem1]] = None
class SubaccountAddResponse(BaseModel):
etat: Optional[Etat1] = None
class SubAccountEdit1(Enum):
setPrice = 'setPrice'
addCredit = 'addCredit'
setRestriction = 'setRestriction'
class SubAccountRestrictionStop(Enum):
field_0 = '0'
field_1 = '1'
class SubAccountRestrictionTime(Enum):
field_0 = '0'
field_1 = '1'
class SubaccountRequest(BaseModel):
keyid: str = Field(..., description='Clé API')
subAccountAddCredit: Optional[str] = Field(
None, description='montant du crédit à ajouter'
)
subAccountCountryCode: Optional[str] = None
subAccountEdit: SubAccountEdit1 = Field(
...,
description='action à réaliser soit setPrice pour définir un prix ou addCredit pour ajouter du credit ou setRestriction modifier la restriction stop /',
)
subAccountKeyId: Optional[str] = Field(None, description='keyid du sous-compte')
subAccountPrice: Optional[str] = None
subAccountRestrictionStop: Optional[SubAccountRestrictionStop] = None
subAccountRestrictionTime: Optional[SubAccountRestrictionTime] = None
class EtatItem2(BaseModel):
code: Optional[str] = None
message: Optional[str] = None
subAccountId: Optional[str] = None
subAccountKeyid: Optional[str] = None
class Etat2(BaseModel):
etat: Optional[List[EtatItem2]] = None
class SubaccountResponse(BaseModel):
etat: Optional[Etat2] = None
class RapportCampagne(Enum):
field_1 = '1'
class Credit(Enum):
field_1 = '1'
field_2 = '2'
class DelListeNoire(Enum):
field_1 = '1'
class GetListeNoire(Enum):
field_1 = '1'
class SetlisteNoire(Enum):
field_1 = '1'
class ComptageReponseEtat(BaseModel):
etat: Optional[List[ComptageReponseEtatEtat]] = None
class CreditResponse(BaseModel):
etat: Optional[CreditResponseEtat] = None
class ErreurEtat(BaseModel):
etat: Optional[List[ErreurEtatEtat]] = None
class HLRReponseEtat(BaseModel):
etat: List[HLRReponseEtatEtat] = Field(..., description='liste des retours')
class LISTENOIREReponseEtat(BaseModel):
etat: List[LISTENOIREReponseEtatEtat]
class REPERTOIREcreatereponseEtat(BaseModel):
etat: Optional[List[REPERTOIREcreatereponseEtatEtat]] = None
class REPERTOIREmodifreponseEtat(BaseModel):
etat: Optional[List[REPERTOIREmodifreponseEtatEtat]] = None
class SMSReponseEtat(BaseModel):
etat: Optional[List[SMSReponseEtatEtat]] = None
class ComptageReponse(BaseModel):
etat: Optional[ComptageReponseEtat] = None
class Erreur(BaseModel):
etat: Optional[ErreurEtat] = None
class HLRReponse(BaseModel):
etat: Optional[HLRReponseEtat] = None
class LISTENOIREReponse(BaseModel):
etat: Optional[LISTENOIREReponseEtat] = None
class REPERTOIREcreatereponse(BaseModel):
etat: Optional[REPERTOIREcreatereponseEtat] = None
class REPERTOIREmodifreponse(BaseModel):
etat: Optional[REPERTOIREmodifreponseEtat] = None
class SMSReponse(BaseModel):
etat: Optional[SMSReponseEtat] = None