Accès aux API de livraison

Les données d’une livraison

Une livraison définit les 6 données suivantes :

  • id : identifiant technique de la livraison.

  • label : le numéro de version de l’application qui est livrée.

  • description : champs texte libre.

  • application : l’application concernée.

  • environnement : l’environnement cible de la livraison.

  • startDate : date de début de la livraison au format Epoch en milliseconde au fuseau horaire local.

  • endDate : date de fin de la livraison au format Epoch en milliseconde au fuseau horaire local.

Enregistrement d’une livraison

On commence par définir les données que l’on souhaite enregistrer dans un format lisible.

### donnée de la livraison ##################################################
# id de l'application "Application courier"
appli = "16a167f5-c3e8-c47d-a588-f9dbb5193cf8"

# id de l'environnement "Pre-Prod"
env = "8910fe04-5a7e-aca9-cf49-117a9bf3c861"

# numéro de la version
version = "2.3.5"

# description
description = "Livraison de la version 2.3.5 qui corrige les bugs #483 et #484."

# dates du début et de fin de la livraison
dateDebut = "25/08/2022 13h00"
dateFin = "25/08/2022 13h00"

L’id est généré aléatoirement :

id = str(uuid.uuid4())

Le code suivant formate les données. Concernant les champs environnement et application, l”id suffit. Concernant le champ description, il est optionnel.

# formatage des dates au format epoch en milliseconde
def format_date(date_str):
    date_date = datetime.datetime.strptime(date_str, "%d/%m/%Y %Hh%M")
    date_epoch = date_date.timestamp()
    return int(date_epoch)*1000

# formatage des données de la livraison
livraison = {
    "id":               id,
    "label":            version,
    "environnement":    {"id": env},                # l'environnement est défini par son ID
    "application":      {"id": appli},              # l'environnement est défini par son ID
    "description":      description,
    "endDate":          format_date(dateDebut),
    "startDate":        format_date(dateFin)
}

Voici la représentation de ces données au format JSON tel qu’elle sera envoyée à Carto-SI :

{
  "id": "a4589d53-56e7-4806-b184-16b3561e2268",
  "label": "2.3.5",
  "environnement": {
    "id": "8910fe04-5a7e-aca9-cf49-117a9bf3c861"
  },
  "application": {
    "id": "16a167f5-c3e8-c47d-a588-f9dbb5193cf8"
  },
  "description": "Livraison de la version 2.3.5 qui corrige les bugs #483 et #484.",
  "endDate": 1661425200000,
  "startDate": 1661425200000
}

Il suffit de faire un PUT sur l’URL :

# URL de la livraison
URLAPI=HOST+"/api/v2/delivery/%s" % livraison["id"]

# enregistrement de la livraison
rep = requests.put(URLAPI, json=livraison, headers=headers)

La totalité du code est disponible dans le fichier put_delivery.py.

Voici notre livraison affichée dans Carto-SI.

Fenêtre contenant les données de la livraison

Lecture d’une livraison

Pour récupérer une livraison, il suffit de faire un GET sur son URL. L’URL de la livraison de l’exemple précédent est /api/v2/delivery/a4589d53-56e7-4806-b184-16b3561e2268 car son id est a4589d53-56e7-4806-b184-16b3561e2268.

Le fichier get_delivery.py est un exemple de code permettant d’afficher les données de la livraison.

Lister les livraisons

Un GET sur l’URL /api/v2/delivery/ retourne la liste des livraisons.

Le fichier get_all_deliveries.py affiche la liste de l’ensemble des livraisons.