Project Portfolio Management API

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 4 minutes de lecture
  • L’API Project and Portfolio Management fournit des points de terminaison pour importer en bloc des plans de coûts et des tâches de projet.

    Le module d’extension PPM Standard (com.snc.financial_planning_pmo) est requis pour accéder à cette API. L’utilisateur appelant doit avoir le rôle it_project_manager.

    Cette API est fournie dans l’espace de noms now .

    Gestion du portefeuille de projets : POST /now/ppm/insert_cost_plans

    Crée des plans de coûts dans la table Plan de coût [cost_plan].

    Format d'URL

    URL par défaut : /api/now/ppm/insert_cost_plans

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    Aucun
    Tableau 2. Paramètres de requête
    Nom Description
    Néant
    Tableau 3. Paramètres du corps de la demande (JSON)
    Nom Description
    end_fiscal_period Requis. Sys_id de la période fiscale qui se termine pour le plan de coûts.

    Type de données : chaîne

    Tableau : Période fiscale [fiscal_period]

    nom Requis. Nom du plan de coûts.

    Type de données : chaîne

    resource_type Requis. Sys_id du type de ressource.

    Type de données : chaîne

    Table : Définition du type de ressource [resource_type_definition]

    start_fiscal_period Requis. Sys_id de la période fiscale de début du plan de coûts.

    Type de données : chaîne

    Tableau : Période fiscale [fiscal_period]

    tâche Requis. Sys_id du projet ou de la demande pour le plan de coûts.

    Type de données : chaîne

    Table : Projet [pm_project] ou Demande [dmn_demand]

    unit_cost Requis. Coût unitaire pour le plan de coûts.

    Type de données : chaîne

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Prend uniquement en charge application/json.
    Content-Type Format de données du corps de la demande. Prend uniquement en charge application/json.
    Tableau 5. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 6. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    401 Non autorisé. Les informations d'identification de l'utilisateur sont incorrectes ou n'ont pas été transmises.

    Paramètres de corps de réponse (JSON)

    Nom Description
    résultat Objet contenant des informations sur l’état de la demande d’API.

    Type de données : objet

    "result": {
       "status": "String"
    }
    résultat.état État de la demande d’API.

    Type de données : chaîne

    Demande cURL

    Cet exemple importe deux plans de coûts.

    curl "https://instance.servicenow.com/api/now/ppm/insert_cost_plans" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "[
       {
          "name": "Cost plan 1",
          "resource_type": "3d16eaf79330120064f572edb67ffb04",
          "start_fiscal_period": "ed47e5d90b3010108d9ac74363673a98",
          "end_fiscal_period": "0a47e5d90b3010108d9ac74363673afd",
          "task": "0fc9f992db601810852ca6dc13961951",
          "unit_cost": 1200
       },
       {
          "name": "Cost plan 2",
          "resource_type": "3d16eaf79330120064f572edb67ffb04",
          "start_fiscal_period": "ed47e5d90b3010108d9ac74363673a98",
          "end_fiscal_period": "7947e5d90b3010108d9ac74363673ac9",
          "task": "0fc9f992db601810852ca6dc13961951",
          "unit_cost": 3600
       }
    ]" \
    --user 'username':'password'

    Corps de la réponse.

    {
       "result": {
          "status": "success"
       }
    }

    Gestion des portefeuilles de projets : POST /now/ppm/insert_project_tasks

    Crée un projet et les tâches de projet associées.

    Les projets sont créés dans la table Projet [pm_project] et les tâches de projet sont créées dans la table Tâche de projet [pm_project_task].

    Format d'URL

    URL par défaut : /api/now/ppm/insert_project_tasks

    Paramètres de demande pris en charge

    Tableau 7. Paramètres de chemin d'accès
    Nom Description
    Aucun
    Tableau 8. Paramètres de requête
    Nom Description
    Néant
    Tableau 9. Paramètres du corps de la demande (JSON)
    Nom Description
    child_tasks Tableau de tâches pour le projet. Chaque tâche est un objet dans le tableau.

    Type de données : tableau

    "child_tasks": [
       {
          "child_tasks": [Array],
          "external_id": "String",
          "short_description": "String" 
       }
    ]
    child_tasks.tâches_enfants Tableau des tâches enfants de la tâche parente. Chaque tâche enfant est un objet dans le tableau. Chaque tâche enfant peut avoir son propre tableau de tâches enfants.

    Type de données : tableau

    "child_tasks": [
       {
          "child_tasks": [Array],
          "external_id": "String",
          "short_description": "String" 
       }
    ]
    child_tasks.identifiant_externe. Identificateur unique de la tâche provenant du système externe.

    Type de données : chaîne

    child_tasks.description_courte Brève description de la phase.

    Type de données : chaîne

    end_date Date de fin du projet.

    Type de données : chaîne

    external_id Identificateur unique du projet provenant du système externe.

    Type de données : chaîne

    short_description Brève description du projet.

    Type de données : chaîne

    start_date Date de début du projet.

    Type de données : chaîne

    En-têtes

    Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l’API REST, consultez En-têtes d’API REST pris en charge.

    Tableau 10. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Prend uniquement en charge application/json.
    Content-Type Format de données du corps de la demande. Prend uniquement en charge application/json.
    Tableau 11. En-têtes de réponses
    En-tête Description
    Aucun

    Codes d'état

    Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d’état possibles utilisés dans l’API REST, consultez Codes de réponse HTTP de l’API REST.

    Tableau 12. Codes d'état
    Code d'état Description
    200 Réussi. La demande a été correctement traitée.
    401 Non autorisé. Les informations d'identification de l'utilisateur sont incorrectes ou n'ont pas été transmises.

    Paramètres de corps de réponse (JSON)

    Nom Description
    résultat Objet contenant des informations sur l’état de la demande d’API.

    Type de données : objet

    "result": {
       "status": "String"
    }
    résultat.état État de la demande d’API.

    Type de données : chaîne

    Demande cURL

    Cet exemple importe un projet avec deux tâches (zpq_T1 et zpq_T2). La première tâche contient plusieurs tâches enfants, et la seconde tâche a des dépendances sur les tâches enfants de la première tâche.

    curl "https://instance.servicenow.com/api/now/ppm/insert_project_tasks" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "start_date": "2022-05-18 08:00:00",
       "end_date": "2022-05-18 17:00:00",
       "short_description": "zpq_Project",
       "external_id": "0",
       "child_tasks": [
          {
             "short_description": "zpq_T1",
             "external_id": "1",
             "child_tasks": [
                {
                   "external_id": "1.1",
                   "short_description": "zpq_T11",
                   "child_tasks": [
                      {
                         "external_id": "1.1.1",
                         "short_description": "zpq_T111"
                      }
                   ]
                },
                {
                   "external_id": "1.2",
                   "short_description": "zpq_T12"
                }
             ]
          },
          {
             "short_description": "zpq_T2",
             "external_id": "2",
             "dependencies": [
                {
                   "external_id": "1.1",
                   "lag": -1,
                   "type": "fs"
                },
                {
                   "external_id": "1.2",
                   "lag": 2,
                   "type": "fs"
                }
             ]
          }
       ]
    }" \
    --user 'username':'password'

    Corps de la réponse.

    {
       "result": {
          "status": "success"
       }
    }