Utilisateurs illimités pour seulement 99 $/mois

Toute votre organisation à un prix fixe

Réserver une démo
Voir tous les articles

Copier des modèles de flux de travail via l'API de Pneumatic

Ce guide montre comment copier des modèles de flux de travail entre des comptes afin que vous puissiez créer un modèle une fois et le partager avec plusieurs partenaires. Suivez notre exemple étape par étape en utilisant Google Colab pour créer un script qui automatise la copie des modèles de flux de travail entre des comptes, et explorez les options de personnalisation pour répondre à vos besoins spécifiques. Plongez dans le monde de Pneumatic et améliorez la productivité de votre équipe dès aujourd'hui.

En Pneumatic, vous pouvez créer un modèle de workflow dans un compte, puis utiliser l’API publique de Pneumatic pour le copier “verbatum” dans un autre compte. Tout ce dont vous avez besoin pour accomplir cela est la clé API du compte source, celui dont vous copierez un modèle, et pour le compte cible, celui vers lequel vous copierez le modèle.

Prenons un exemple

Supposons que nous ayons un modèle de workflow de Développement de contenu dans un compte et que nous voulions le copier dans un autre compte.

Tuile du modèle de workflow de Développement de contenu

Pour nos besoins, nous allons utiliser Google Colab pour mettre rapidement en place un script simple qui fera la copie pour nous. Commençons par écrire deux fonctions “simples”, une pour récupérer notre modèle source et l’autre pour créer un nouveau modèle.

def get_template_by_id(api_key, template_id):
    end_point = f"https://api.pneumatic.app/templates/{template_id}"
    headers = {
      'Authorization': f'Bearer {api_key}'
    }
    
    r = requests.get(end_point, headers=headers)
    if r.ok:
      return r.json()
    else:
      return None

def create_template(api_key, template_info):
    headers = {
      'Authorization': f'Bearer {api_key}',
      'Content-Type': 'application/json'
    }
    json_data = json.dumps(template_info)
    r = requests.post(
        f'https://api.pneumatic.app/templates', # c'est le point final
        headers=headers,
        data=json_data,
    )
    if r.ok:
        return "le modèle a été ajouté au compte cible"
    else:
        return f"quelque chose s'est mal passé: {r.content}"

Nous passons nos clés API, notre identifiant de modèle (pour le modèle source) et template_info en paramètres. Naturellement, pour que ces fonctions fonctionnent, nous devons importer requests et json:

import requests
import json

Passons maintenant à l’essentiel

Tout d’abord, nous devons obtenir la clé API du compte source et l’identifiant du modèle que nous voulons copier:

api_key = input("entrez la clé API source: ")#demander la clé API source
template_id = int(input("entrez l'identifiant du modèle source: "))#demander l'identifiant du modèle source

Vous pouvez trouver la clé API sur la page des intégrations de votre compte (le compte vers lequel vous souhaitez copier le modèle):

Votre clé API de Pneumatic

L’identifiant du modèle est le numéro dans le lien du modèle:

Votre identifiant de modèle de workflow

Une fois que nous avons récupéré la clé API source et l’identifiant du modèle source auprès de l’utilisateur, nous les passons à notre fonction get_template_by_id et s’il trouve le modèle source, nous pouvons continuer:

source_template = get_template_by_id(api_key=api_key, template_id=template_id)
if source_template is None:
  print("aucun modèle trouvé")
else:

À ce stade, nous obtenons l’API cible et l’identifiant du propriétaire cible de l’utilisateur:

  target_api = input("Entrez la clé API cible: ")#demander la clé API cible
  target_owner = int(input("Entrez l'identifiant du propriétaire cible"))#demander l'identifiant du propriétaire cible.

Encore une fois, vous pouvez rechercher la clé API sur la page des intégrations de votre compte cible:

Votre clé API de Pneumatic

Le propriétaire est l’utilisateur auquel appartiendra la copie du modèle. Dans le compte cible, accédez à la page de l’équipe, trouvez l’utilisateur auquel vous souhaitez que le modèle appartienne et recherchez son identifiant:

Identifiant d’utilisateur Pneumatic

Une fois que la clé API cible et le propriétaire cible ont été saisis, le script créera un modèle provisoire dans le compte cible en utilisant le modèle source:

  source_template['template_owners'].clear() #supprimer tous les anciens propriétaires du modèle
  source_template['template_owners'].append(target_owner) #ajouter le propriétaire cible
  source_template['is_active'] = False
  for task in source_template['tasks']:
    task['raw_performers'].clear()
  result = create_template(api_key=target_api, template_info=source_template)
  print(result)

Il y a quelques points importants à noter ici

Tout d’abord, notre compte cible a des utilisateurs différents de celui du compte source, donc nous devons nous en occuper d’une manière ou d’une autre. Il existe plusieurs options, celle que nous utilisons dans notre exemple est peut-être la plus simple en termes de code à écrire.

Tout d’abord, nous devons modifier le propriétaire du modèle, nous demandons donc à l’utilisateur de fournir l’identifiant du propriétaire du modèle dans le compte cible, puis nous supprimons tous les propriétaires de notre modèle source et ajoutons l’identifiant du propriétaire fourni par l’utilisateur:

  source_template['template_owners'].clear() #supprimer tous les anciens propriétaires du modèle
  source_template['template_owners'].append(target_owner) #ajouter le propriétaire cible
  source_template['is_active'] = False

Maintenant, pour les exécutants de tâches, nous supprimons simplement tous les anciens exécutants de tâches, ce code suppose que le modèle sera “post-édité” après sa copie, donc il définit simplement le statut is_active sur false et supprime tous les exécutants. Le modèle est ainsi créé dans le compte cible comme un brouillon pour que quelqu’un puisse assigner les étapes à des utilisateurs spécifiques.

  for task in source_template['tasks']:
    task['raw_performers'].clear()
  result = create_template(api_key=target_api, template_info=source_template)
  print(result) 

Alternativement, vous pouvez également ajouter des exécutants de manière programmée et définir le modèle comme actif, mais cela dépasse le cadre de cet exemple simple.

L’exécution de notre exemple de code crée un modèle de workflow provisoire dans le compte cible qui a un propriétaire mais n’a aucun exécutant dans les tâches:

Brouillon du modèle de workflow de Développement de contenu

Vous pouvez utiliser le code dans le colab “tel quel” ou le modifier pour mieux correspondre à vos besoins.