Spendint API

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 36 minutes de lecture
  • L’API Spendint fournit des points de terminaison qui transmettent les informations de catalogue, de prix, de disponibilité, de commande, d’expédition et de facture d’un tiers à l’instance ServiceNow . Cette API fait partie de l’application Infrastructure pour l'intégration de Source-to-Pay .

    Cette API nécessite l’application de stockage Procurement Integration Framework (com.glide.sn_spend_intg) et est fournie dans l’espace de noms sn_spend_intg . (pour en savoir plus, consultez Procurement File Transfer Framework) ;

    Pour accéder à cette API, vous devez disposer du rôle sn_spend_intg.procurement_integrator.

    API Spendint : POST /sn_spend_intg/spendint/catalog

    Permet aux fournisseurs de publier plusieurs catalogues pour créer des produits fournisseur, des produits modèles, des contrats et des enregistrements de tarification.

    Dans l’intégration de l’API de catalogue , lorsque vous recevez des données d’un catalogue tiers, vous pouvez :
    1. Créez de nouvelles catégories tierces et mappez ces catégories aux catégories de modèle.
      • Le cas échéant, utilisez le Code UNSPSC (United Nations Standard Products and Services), puis le nom de la catégorie.
      • Si UNSPSC n’est pas disponible, utilisez uniquement le nom de la catégorie.
    2. Après avoir mappé une catégorie tierce à une catégorie de modèle, utilisez le numéro de pièce du fabricant (MPN) pour rechercher un modèle de produit existant, le cas échéant.
      1. Si un modèle de produit est trouvé pour le NPP, mettez à jour le modèle de produit avec les modifications, puis créez ou mettez à jour tous les produits du fournisseur qui sont liés au modèle de produit.
      2. Si aucun modèle de produit n’existe pour le NPP, procédez comme suit :
        1. Une classe de modèle de produit est généralement disponible dans la catégorie de modèle référencée par la catégorie tierce pour le produit. Utilisez cette classe de modèle de produit pour obtenir la table du modèle de produit dans laquelle le modèle de produit doit être créé, par exemple, matériel, logiciel, consommable, etc. Si aucune classe de modèle de produit n’est disponible, créez le modèle de produit dans la table du modèle de produit de base.
        2. Une fois la classe de modèle de produit correcte identifiée, créez un nouveau modèle de produit dans la classe appropriée comme suit :
          • Le fabricant, l’éditeur ou le fournisseur doit mapper au fabricant sur le modèle de produit.
          • Le nom de produit de l’API doit correspondre au nom du modèle de produit.
          • MPN de l’API doit mettre à jour le numéro de modèle.
          • La description du produit provenant de l’API doit mettre à jour la description sur le modèle de produit.
          • La catégorie de modèle doit être mise à jour avec la catégorie de produit référencée sur l’enregistrement de catégorie tierce.
          • La catégorie de produit doit être mise à jour avec la catégorie de produit référencée sur l’enregistrement de catégorie tierce.
          • Si les produits de substitution contiennent des valeurs dans l’API, créez les enregistrements de produits de substitution entre le modèle de produit actuel et les autres modèles de produits.
          • S’il existe des valeurs dans les produits compatibles dans l’API, créez les enregistrements de produits compatibles entre le modèle de produit actuel et les autres modèles de produits.
          • Les attributs de produit de l’API doivent être créés ou mis à jour dans la liste connexe des attributs de produit pour le modèle de produit.
    3. Si un modèle de produit est disponible, utilisez le numéro de pièce du fournisseur pour créer ou mettre à jour les produits du fournisseur qui sont associés au modèle de produit.

    Mappage tiers

    Utilisez les tables suivantes pour effectuer les mappages de catégories, de modèles et d’unités tiers :
    • Catégories tierces : stocke tous les enregistrements de catégories tierces que l’administrateur ShoppingHub doit mapper aux catégories de modèles internes existantes.
    • Mappages de modèles tiers : stocke toutes les informations de mappage entre les modèles de produits et les catégories de modèles tiers.
    • Unités tierces : stocke tous les enregistrements d’unités tierces pour que l’administrateur ShoppingHub les mappe avec les unités de produits du fournisseur.
    • Mappages d’unités tierces : stocke toutes les informations de mappage entre les modèles de produits et les unités tierces.
    Remarque :
    Un produit d’intégration tiers est publié automatiquement lorsque la catégorie tierce et l’unité tierce sont mappées de manière appropriée.

    Dates de vente du produit du fournisseur

    Un produit fournisseur est interrompu et n’est plus publié dans le catalogue lorsqu’il a atteint sa date de fin de vente. Les champs Date de début de vente et Date de fin de vente du formulaire Produit du fournisseur sont renseignésvia une intégration tierce à partir de l’API de catalogue.

    Tables d’état

    Pour connaître l’état de la demande d’importation de produits en bloc, effectuez un appel REST dans la base de données à l’aide ServiceNow de l’API REST de la table . La réponse de l’API répertorie les enregistrements dans lesquels la demande d’importation en bloc a échoué. Pour la réponse d’importation de produits en bloc, interrogez la table Catalog Error (Erreur de catalogue) avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Les détails sur l’ID de client, l’ID de fournisseur, le type d’erreur, l’ID d’ensemble de données à importer unique et l’état se trouvent dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/catalog

    Paramètres de demande pris en charge

    Tableau 1. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 2. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 3. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    customer_id Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    catalog_id Identificateur du contenu de catalogue qui peut être acheté par un client.

    Type de données : chaîne

    Longueur maximale : 100

    produits Liste des objets qui définissent les produits à créer ou à mettre à jour. Chaque transaction a une limite de 1000 produits.

    Type de données : tableau

    "products": [
      {
        "available_units": "String",
        "available_for_country": [Array],
        "bundled_components": [Array],
        "contract_agreement": {Object},
        "delivery_time": "String",
        "images": [Array],
        "manufacturer": "String",
        "mpn": "String",
        "parent_bundle": "String",
        "product_attributes": {Object},
        "product_category_name": "String",
        "product_description": "String",
        "product_name": "String",
        "sku": "String",
        "unit": "String",
        "unspsc": "String",
      }
    ]
    products.available_units Requis pour les produits qui sont en stock. Cette valeur indique la quantité d’unités disponibles pour ce produit.

    Type de données : chaîne

    Longueur maximale : 40

    products.available_for_country Liste des codes des pays dans lesquels le produit du fournisseur peut être acheté. Si aucun pays n’est indiqué, un utilisateur de n’importe quel pays peut acheter le produit.

    Type de données : tableau

    "available_for_country": ["US","IN","GB"]
    products.bundled_components Valide uniquement pour les scénarios lors de l’envoi d’un lot de produits dans le cadre de la charge utile du catalogue et applicable uniquement pour les charges utiles du groupe parent. Cette valeur contient la référence aux composants du groupe d’enfants. La liste du NPP et les quantités pour les composants du groupe enfant sont mises à jour ici.
    Remarque :
    Étant donné que le même composant de groupe enfant peut être ajouté plusieurs fois dans un groupe, la quantité saisie est l’élément de différenciation entre les mêmes composants de groupe enfant.
    Les composants du groupe enfant et leurs détails (MPN et quantités) doivent être mappés au même fournisseur.

    Type de données : tableau

    "bundled_components": [
      {
        "mpn": "String",
        "quantity": "String"
      }
    ]
    products.contract_agreement Détails du contrat pour un produit.
    Remarque :
    Cela n’est pas nécessaire pour les composants de groupe enfant.

    Type de données : objet

    "contract_agreement": {
      "contract_end_date": "String",
      "contract_number": "String",
      "contract_start_date": "String",
      "negotiated_currency ": "String",
      "negotiated_price": "String"
    }
    products.contract_agreement. date_de_fin_contrat Date à laquelle la durée du contrat prend fin.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    products.contract_agreement.numéro_contrat Requis. Numéro du contrat actif associé au produit.

    Type de données : chaîne

    Longueur maximale : 100

    products.contract_agreement.date_début_contrat Date à laquelle la durée du contrat commence.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    products.contract_agreement.devise_négociée Requis. Devise du prix négocié.

    Type de données : chaîne

    Longueur maximale : 40

    products.contract_agreement.prix_négocié Requis. Prix unitaire d’un produit tel que négocié dans le cadre d’un contrat avec le fournisseur ou le revendeur.

    Type de données : chaîne

    Longueur maximale : 40

    products.delivery_time Estimation du nombre de jours nécessaires à l’expédition d’un produit au client. Cette valeur doit représenter le nombre de jours et être un entier entier.

    Type de données : chaîne

    Longueur maximale : 40

    produits.images Liste des chaînes qui spécifient les URL des images pour le produit du fournisseur.

    Type de données : tableau

    produits.fabricant Requis. Société qui fabrique, publie ou fournit le produit. Il ne s’agit pas du fournisseur ou du revendeur du produit.

    Type de données : chaîne

    Longueur maximale : 100

    produits.mpn Requis. Identificateur d’un produit fourni par le fabricant, l’éditeur ou le fournisseur.
    Remarque :
    Cette valeur n’est pas requise pour les groupes parents des revendeurs si la valeur SKU est disponible.

    Type de données : chaîne

    Longueur maximale : 100

    products.parent_bundle Valide uniquement pour les scénarios lors de l’envoi d’un lot de produits dans le cadre de la charge utile du catalogue, et applicable uniquement pour les charges utiles des composants du groupe enfant. Dans le cas d’un composant de groupe enfant, la référence au parent est conservée ici. Les valeurs MPN et SKU parents sont également définies ici.

    Type de données : chaîne

    Longueur maximale : 100

    products.product_attributes Liste des paires clé-valeur qui définissent les attributs du produit, par exemple, « Couleur » : « Gris sidéral ». Plusieurs attributs pour un produit sont autorisés. Toutefois, seuls les attributs qui ont un impact sur le prix ou la disponibilité des stocks doivent être fournis via l’API.

    Type de données : objet

    products.product_category_name Requis. Nom que vous saisissez si vous ne définissez pas la unspsc propriété. Ce nom est la catégorie à laquelle un produit appartient. Ce nom de catégorie peut être utilisé dans un scénario commercial pour acheter le produit. Par exemple, une multiprise peut appartenir à une catégorie Matériel de bureau.

    Type de données : chaîne

    Longueur maximale : 100

    products.product_description Description complète du produit qui apparaît à un acheteur dans une expérience commerciale.
    Remarque :
    Il est recommandé au fournisseur d’être aussi descriptif que possible ici, en particulier pour les éléments de catalogue de groupe de produits où il existe des composants de groupe enfants.

    Type de données : chaîne

    Longueur maximale : 65000

    products.product_name Requis. Nom du produit.

    Type de données : chaîne

    Longueur maximale : 1000

    produits.sku Requis. Numéro généré par un fournisseur qui identifie de manière unique un produit vendu par ce fournisseur.

    Type de données : chaîne

    Longueur maximale : 100

    produits.unité Requis. Unité ou taux auquel le produit est vendu par le fournisseur. Par exemple, les pièces, les heures, etc.

    Type de données : chaîne

    Longueur maximale : 40

    Produits.UNSPSC Requis. Identificateur que vous devez entrer si vous ne définissez pas la product_category_name propriété. Cet identificateur est l’UNSPSC de la catégorie à laquelle un produit appartient. Par exemple, le code UNSPSC 43210000 est l’identificateur de la catégorie de produits Ordinateurs.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur qui permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 4. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 5. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 6. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par SKU, mpn et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/catalog" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "AB-1234323",
      "catalog_id": "ACME CORP-12347898",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "DELL1234567",
      "products": [
        {
          "product_name": "Apple MacBook Pro 13 Core i7",
          "mpn": "Z0WQ-20004301931",
          "sku": "55788741",
          "manufacturer": "Apple",
          "product_category_name": "Computer",
          "parent_bundle": "920-0045362002",
          "bundled_components": {
            "mpn": "Z0WQ-20004301931",
            "quantity": "4",
           },
          "unspsc": "43211500",
          "product_description": "Apple MacBook Pro 13 Core i7 2.8GHz 16GB 512GB - Touch Bar - Space Gray",
          "product_attributes": {
            "Color": "Space Grey",
            "RAM": "16GB",
            "Screen Size": "13inch"
          },
          "images": ["http://test123.image1.png", "http://test123.image2.jpeg"],
          "unit": "Each",
          "available_units": "4",
          "available_for_country": ["US","IN","GB"],
          "delivery_time": "4",
          "contract_agreement": {
            "contract_number": "34567892",
            "contract_start_date": "YYYY-MM-DD",
            "contract_end_date": "YYYY-MM-DD",
            "negotiated_price": "456",
            "negotiated_currency ": "USD"
          }
        }
      ]
    }
    ]}
    

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "AB-1234323",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DELL1234567",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sku": "55788741",
                            "mpn": "Z0WQ-20004301931",
                            "error_message": "Field Value empty/Formatting issue Negotiated currency \n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint : POST /sn_spend_intg/spendint/price

    Met à jour toute tarification pour les enregistrements de produits du fournisseur.

    Lorsque la tarification est disponible pour les enregistrements de produits du fournisseur, l’API utilise l’UGS du produit pour trouver un produit de fournisseur existant. Si un produit fournisseur correspondant existe, le prix du contrat correspondant est mis à jour. Si aucun produit fournisseur correspondant n’est trouvé, un message d’erreur est généré, indiquant que le produit pour lequel vous essayez de mettre à jour la tarification n’existe pas.

    Tables d’état

    Pour connaître l’état de la demande d’importation de prix, effectuez un appel REST dans la base de données à l’aide ServiceNow de l’API REST de table . La réponse de l’API répertorie les enregistrements dans lesquels la demande d’importation du prix a échoué. Pour obtenir une réponse d’importation de prix, interrogez la table Erreur de prix avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Vous pouvez trouver les détails sur l’ID client, l’ID fournisseur, le type d’erreur, l’ID unique de jeu d’importation et la boîte d’état dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/prix

    Paramètres de demande pris en charge

    Tableau 7. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 8. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 9. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    catalog_id Requis. Identificateur du contenu de catalogue qui peut être acheté par un client.

    Type de données : chaîne

    Longueur maximale : 100

    customer_id Requis. Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    produits Liste des objets qui définissent les produits à créer ou à mettre à jour. Chaque transaction a une limite de 1000 produits.

    Type de données : tableau

    "products": [
      {
        "contract_agreement": {Array},
        "sku": "String"
      }
    ]
    products.contract_agreement Détails du contrat pour un produit.

    Type de données : objet

    "contract_agreement": {
      "contract_end_date": "String",
      "contract_number": "String",
      "contract_start_date": "String",
      "negotiated_currency ": "String",
      "negotiated_price": "String"
    }
    products.contract_agreement. date_de_fin_contrat Date à laquelle la durée du contrat prend fin.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    products.contract_agreement.numéro_contrat Requis. Numéro du contrat actif associé au produit.

    Type de données : chaîne

    Longueur maximale : 100

    products.contract_agreement.date_début_contrat Date à laquelle la durée du contrat commence.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    products.contract_agreement.devise_négociée Requis. Devise du prix négocié.

    Type de données : chaîne

    Longueur maximale : 40

    products.contract_agreement.prix_négocié Requis. Prix unitaire d’un produit tel que négocié dans le cadre d’un contrat avec le fournisseur ou le revendeur.

    Type de données : chaîne

    Longueur maximale : 40

    produits.sku Requis. Numéro généré par un fournisseur qui identifie de manière unique un produit vendu par ce fournisseur.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur qui permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 10. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 11. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 12. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de référence et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/price" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "ACME CORP",
      "catalog_id": "AB-1234323",
      "supplier_id": "SUP-123456",
      “third_party_import_id”: “DEL789876",
      "products": [
        {
          "sku": "5578874",
          "contract_agreement": {
            "contract_number": "34567892",
            "contract_start_date": "YYYY-MM-DD",
            "contract_end_date": "YYYY-MM-DD",
            "negotiated_price": "456",
            "negotiated_currency ": "USD"
          }
        }
      ]
    }
    ]}
    

    Réponses possibles :

    // Success response:
    {
        “result”: {
            “response”: “success”
        }
    }
    
    // Error response:
    {
        “result”: {
            “response”: [
                {
                    “customer_id”: “ACME CORP”,
                    “supplier_id”: “SUP-123456”,
                    “third_party_import_id”: “DEL789876",
                    “status_code”: “failure”,
                    “error_response_body”: [
                        {
                            “sku”: “5578874”,
                            “error_message”: “The product for which you are trying to update pricing does not exist\nField Value empty/Formatting issue Negotiated currency\nField Value empty/Formatting issue Contract start date\nField Value empty/Formatting issue Contract end date\n”
                        }
                    ]
                }
            ]
        }
    }

    API Spendint : POST /sn_spend_intg/spendint/availability

    Met à jour la disponibilité des enregistrements de produits du fournisseur.

    Lorsque des enregistrements de produit de fournisseur sont disponibles, l’API utilise l’UGS du produit pour trouver un produit de fournisseur existant. Si un produit fournisseur correspondant existe, le champ available_units correspondant est mis à jour. Si aucun produit fournisseur correspondant n’est trouvé, un message d’erreur est généré indiquant que le produit pour lequel vous essayez de mettre à jour la disponibilité n’existe pas.

    Tables d’état

    Pour connaître l’état de la demande de disponibilité de la mise à jour, effectuez un appel REST dans la base de données à l’aide ServiceNow de l’API REST de la table . La réponse de l’API répertorie les enregistrements pour lesquels la demande de disponibilité de mise à jour a échoué. Pour mettre à jour la réponse de disponibilité, interrogez la table d’erreurs de disponibilité avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Les détails sur l’ID client, l’ID du fournisseur, le type d’erreur, l’ID unique de l’ensemble de données à importer et l’état se trouvent dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/availability

    Paramètres de demande pris en charge

    Tableau 13. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 14. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 15. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    catalog_id Requis. Identificateur du contenu de catalogue qui peut être acheté par un client.

    Type de données : chaîne

    Longueur maximale : 100

    customer_id Requis. Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    produits Liste des objets qui définissent les produits à mettre à jour. Chaque transaction a une limite de 1000 produits.

    Type de données : tableau

    "products": [
      {
        "available_units": "String",
        "sku": "String",
        "unit": "String"
      }
    ]
    products.available_units Requis pour les produits qui sont en stock. Nombre d’unités disponibles pour ce produit.

    Type de données : chaîne

    Longueur maximale : 40

    produits.sku Requis. Numéro généré par un fournisseur qui identifie de manière unique un produit vendu par ce fournisseur.

    Type de données : chaîne

    Longueur maximale : 100

    produits.unité Requis. Unité ou taux auquel le produit est vendu par le fournisseur. Par exemple, les pièces, les heures, etc.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_id Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 16. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 17. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 18. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de référence et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.servicenow.com/api/sn_spend_intg/spendint/availability" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root": [{
      "customer_id": "AB-1234323",
      "catalog_id": "ACME CORP",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "DEL6789876",
      "products": [
        {
          "sku": "5578874",
          "unit": "Each",
          "available_units": "20"
        }
      ]
    }
    ]}
    

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    Error response: 
    {
        "result": {
            "response": [
                {
                    "customer_id": "AB-1234323",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DEL6789876",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sku": "5578874",
                            "error_message": "The product for which you are trying to update availability does not exist\nField Value empty/Formatting issue Unit\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint : POST /sn_spend_intg/spendint/orderack

    Met à jour les informations de commande lorsqu’un utilisateur achète un produit d’un catalogue tiers. Lorsque l’utilisateur passe à la caisse, une ligne d’achat est créée afin que les approbations ou d’autres tâches relatives à l’achat puissent être effectuées.

    Lorsqu’un bon de commande est généré dans la ServiceNow base de données, il est transmis par push dans les tables suivantes :
    • Commande sortante : contient l’en-tête de la commande.
    • Ligne de commande sortante : contient les lignes de commande.

    Les fournisseurs doivent interroger ces tables et extraire les commandes en attente par rapport à eux. Les fournisseurs doivent créer une application incluse dans le périmètre pour Studio de workflow les actions d’intégration à la base de ServiceNow données.

    Interrogez les tables avec les paramètres suivants :
    • sysparm_query=supplier_id=<supplier_id>^purchase_order.status=20 pour l’en-tête
    • sysparm_query=purchase_order.supplier_id=<supplier_id>^purchase_order.status=20 pour l’en-tête
    Lorsqu’une ligne d’achat est convertie en ligne de bon de commande, les processus suivants sont exécutés :
    1. Le bon de commande et la ligne de bon de commande sont soumis au progiciel de gestion intégré (ERP), le cas échéant.
    2. Le bon de commande et la ligne de bon de commande sont transférés via intégration au tiers avec l’ID client, l’ID du fournisseur, le numéro de bon de commande, la date de commande, le montant du bon de commande, la devise du montant du bon de commande et les lignes de bon de commande.
    3. Le bon de commande et la ligne de bon de commande restent à l’état Soumission en attente jusqu’à ce que les messages de confirmation soient reçus par l’intégration de catalogue tierce et l’ERP. Une fois la confirmation reçue, l’état est mis à jour sur Commandé. Si aucune intégration ERP n’est impliquée, un message de confirmation est requis uniquement auprès de l’intégration tierce.

    Tables d’état

    Pour connaître l’état de la demande de confirmation de commande, effectuez un appel REST dans la base de données à l’aide ServiceNow de l’API REST de table. La réponse de l’API répertorie les enregistrements dans lesquels la demande de confirmation de commande a échoué. Pour obtenir une réponse de confirmation de commande, interrogez la table d’erreurs de confirmation de commande avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Les détails sur l’ID client, l’ID du fournisseur, le type d’erreur, l’ID unique de l’ensemble de données à importer et l’état se trouvent dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/orderack

    Paramètres de demande pris en charge

    Tableau 19. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 20. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 21. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    customer_id Requis. Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    order_number Requis. Numéro de bon de commande fourni par le client pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    sales_order_lines Liste des objets qui définissent les lignes de commande client avec des mises à jour uniques pour les achats de cette commande.

    Type de données : tableau

    "sales_order_lines":[
      {
        "estimated_arrival_date": "String",
        "line_number": "String",
        "sales_order_line_number": "String"
      }
    ]
    sales_order_lines.date_arrivée_estimée Date d’arrivée estimée de la commande.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    sales_order_lines.numéro_ligne Requis. Numéro de la ligne de bon de commande généré par le client pour un achat particulier.

    Type de données : chaîne

    Longueur maximale : 40

    sales_order_lines. numéro_ligne_commande_ventes Numéro de ligne de commande client généré par le fournisseur. Ce numéro est requis uniquement pour les révisions de cet achat.

    Type de données : chaîne

    Longueur maximale : 40

    sales_order_number Nombre ou valeur générée par le fournisseur pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    status_code Requis. État de la commande soumise qui confirme si la commande a été passée avec succès.

    Type de données : chaîne

    Valeurs valides :
    • confirmé : commande passée avec succès.
    • rejeté : commande non passée.
    status_message Message joint à un code d’état. Par exemple, le message peut indiquer que la commande a été passée avec succès et qu’elle est en rupture de stock.

    Type de données : chaîne

    Longueur maximale : 1000

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur qui permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 22. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 23. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 24. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de commande, numéro de ligne de commande et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/orderack" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id": "ACME CORP",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "undefined",
      "order_number": "PO08903323",
      "sales_order_number": "SO03323212",
      "status_code": "CONFIRMED",
      "status_message": "BACKORDERED",
      "sales_order_lines":[
        {
          "line_number": "POL6789876",
          "sales_order_line_number": "SOL5678909",
          "estimated_arrival_date": "YYYY-MM-DD"
        }
      ]
    }
    ]}
    

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "ACME CORP",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "undefined",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_number": "SO03323212",
                            "sales_order_line_number": "SOL5678909",
                            "error_message": "Field Value empty/Formatting issue Purchase order number\nField Value empty/Formatting issue Purchase order line number\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint : POST /sn_spend_intg/spendint/shipment

    Utilisez ce point de terminaison pour accepter les mises à jour sur les achats auprès de tiers.

    Lorsque vous recevez des données, vous devez faire correspondre les données d’expédition à une ligne de bon de commande à l’aide du numéro de ligne de commande client. Vous pouvez utiliser le numéro de suivi pour rechercher un enregistrement de détail d’expédition existant associé à la ligne de bon de commande. Si aucun enregistrement de ce type n’est trouvé, créez un nouvel enregistrement de détails d’expédition. S’il n’existe pas de bon de commande ou de ligne de bon de commande pour les données d’expédition, un message d’erreur s’affiche indiquant que le bon de commande pour cette expédition n’existe pas.
    Remarque :
    Si le bon de commande et les lignes de bon de commande sont à l’état Soumission en attente et que les lignes de commande client et de commande client ne sont pas renseignées, l’expédition et la validation de facture du revendeur tiers ne sont pas autorisées. Cela n’est autorisé que lorsque l’état du bon de commande et des lignes de bon de commande sont Commandé. De plus, il n’y a pas de restriction séquentielle sur l’expédition et la publication des factures.

    Tables d’état

    Pour connaître l’état de la demande d’expédition, effectuez un appel REST dans la base de données à l’aide ServiceNow de l’API REST de table. La réponse de l’API répertorie les enregistrements dans lesquels la mise à jour de l’expédition a échoué. Pour obtenir une réponse à l’expédition, interrogez la table Erreur d’expédition avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Les détails sur l’ID client, l’ID du fournisseur, le type d’erreur, l’ID unique de l’ensemble de données à importer et l’état se trouvent dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/shipment

    Paramètres de demande pris en charge

    Tableau 25. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 26. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 27. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    customer_id Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    order_number Requis. Numéro de bon de commande fourni par le client pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    sales_order_number Requis. Nombre ou valeur générée par le fournisseur pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines Liste des lignes d’expédition qui peuvent contenir les détails du numéro de série, du numéro IMEI et de la balise d’actif des actifs.

    Type de données : tableau

    "shipment_lines": [
      {
        "actual_shipment_date": "String",
        "estimated_arrival_date": "String",
        "line_number": "String",
        "planned_shipment_date": "String",
        "product_details": [Array],
        "sales_order_line_number": "String",
        "shipping_address": {Object},
        "shipping_carrier": "String",
        "shipment_quantity": "String",
        "ship_to": "String",
        "tracking_number": "String"
      }
    ]
    shipment_lines.date_envoi_réelle Date à laquelle l’expédition quitte l’emplacement du fournisseur.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines.date_arrivée_estimée Date à laquelle l’expédition devrait arriver à l’emplacement spécifié.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines.numéro_ligne Requis. Numéro de la ligne de bon de commande généré par le client pour un achat particulier.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines. date_expédition_planifiée Date à laquelle l’expédition devrait quitter l’emplacement du fournisseur.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    shipment_lines. détails_du_produit Liste des objets qui définissent les détails sur les produits expédiés. Les options incluent le numéro de série, le numéro IMEI et les détails de la balise d’actif.

    Type de données : tableau

    "product_details": [
      {
        "asset_tag": "String",
        "imei": "String",
        "serial_number": "String"
      }
    ]
    shipment_lines.product_details.asset_tag Balise d’actif du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.product_details.imei Numéro IMEI du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.product_details.serial_number Requis. Numéro de série du produit expédié.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.numéro_ligne_commande_ventes Numéro de ligne de commande client généré par le fournisseur. Ce numéro est requis uniquement pour les révisions de cet achat.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines. adresse_livraison Adresse à laquelle les produits sont expédiés.

    Type de données : objet

    "shipping_address":
      {
        "city": "String",
        "country": "String",
        "name": "String",
        "state": "String",
        "street": "String",
        "zip_code": "String"
      }
    shipment_lines.shipping_address.city Nom de la ville où les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1000

    shipment_lines.shipping_address.country Pays vers lequel les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.shipping_address.name Nom du client auquel les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1000

    shipment_lines.adresse_livraison.état État d’origine de l’expédition des produits.

    Type de données : chaîne

    Longueur maximale : 1000

    shipment_lines.adresse_livraison.rue Nom de la rue vers laquelle les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 1000

    shipment_lines.shipping_address.zip_code Code postal ou code PIN vers lequel les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines. quantité_expédition Requis. Nombre de produits expédiés en tant que biens physiques. Le nombre doit contenir la quantité de produits qui se trouvent dans l’envoi.

    Type de données : chaîne

    Longueur maximale : 40

    shipment_lines.transporteur_d’expédition Transporteur qui livre le produit à l’emplacement spécifié, tel que FedEx, UPS, USPS, etc.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.ship_to Nom du destinataire vers lequel les produits sont expédiés.

    Type de données : chaîne

    Longueur maximale : 100

    shipment_lines.numéro_suivi Numéro de suivi fourni par le transporteur pour tout ou partie de l’achat.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_shipment_number Requis. Numéro d’identification généré pour cet envoi. En règle générale, ce numéro est généré par un progiciel de gestion intégré (ERP) ou un système de suivi des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur qui permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 28. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 29. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 30. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de ligne de commande, numéro de commande client, numéro d’expédition du fournisseur et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/shipment" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id" : "ACME CORP",
      "supplier_id" : "SUP-123456",
      "third_party_import_id": "DEL2134324",
      "supplier_shipment_number" : "TN-YU67898723",
      "order_number": "PO0001002",
      "sales_order_number": "SO00223002",
      "shipment_lines": [
        {
          "line_number": "POL0001005",
          "sales_order_line_number": "SOL0231325",
          "shipment_quantity": "4",
          "shipping_carrier": "FedEx",
          "tracking_number": "E-901290092",
          "shipping_address":
            {
              "name" : "1640 Camino Del Rio North #202, San Diego,CA",
              "street" : "1640 Camino Del Rio North",
              "city" : "San Diego",
              "state" : "CA",
              "zip_code" : "92108-1512",
              "country" : "US"
            },
          "ship_to": "John doe",
          "planned_shipment_date": "YYYY-MM-DD",
          "actual_shipment_date": "YYYY-MM-DD",
          "estimated_arrival_date": "YYYY-MM-DD",
          "product_details": [
            {
              "serial_number": "FL1234-23242319001",
              "imei": "2134890294",
              "asset_tag": ""
            },{
              "serial_number": "FL1234-23242319110",
              "imei": "245499003",
              "asset_tag": ""
            }
          ]
        }
      ]
    }
    ]}

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "ACME CORP",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "DEL2134324",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL0231325",
                            "sales_order_number": "SO00223002",
                            "supplier_shipment_number": "TN-YU67898723",
                            "error_message": "The purchase order for this shipment does not exist\nThe purchase order line for this shipment does not exist\n"
                        }
                    ]
                }
            ]
        }
    }

    API Spendint : POST /sn_spend_intg/spendint/invoice

    Accepte les factures de fournisseurs tiers.

    Si le bon de commande et les lignes de bon de commande sont à l’état Soumission en attente et que les lignes de commande client et de commande client ne sont pas renseignées, l’expédition et la validation de facture du revendeur tiers ne sont pas autorisées. Cela n’est autorisé que lorsque l’état du bon de commande et des lignes de bon de commande sont Commandé. De plus, il n’y a pas de restriction séquentielle sur l’expédition et la publication des factures.

    Une fois qu’une facture est soumise, la facture et ses lignes de facture sont mappées à un bon de commande. Lors d’un mappage réussi, l’état de la facture est défini comme suit :
    • En attente de livraison : lorsqu’il n’existe aucun reçu, la commande est partiellement livrée ou la facture doit être approuvée.
    • Facture confirmée : lorsque le bon de commande est livré et que le montant facturé correspond au montant total du bon de commande.
    • Nécessite une révision : lorsque le bon de commande est livré et que le montant facturé ne correspond pas au montant total du bon de commande.

    Lorsqu’une facture valide est publiée pour un élément de ligne, la même facture ne peut pas être mise à jour.

    Si la facture fournie n’a pas de numéro de bon de commande, la facture est rejetée et un message d’erreur s’affiche indiquant qu’une ou plusieurs des factures fournies n’ont pas de numéro de bon de commande. Si la facture fournie comporte un numéro de bon de commande, mais qu’elle ne correspond pas au bon de commande ou qu’aucun bon de commande n’existe, un message d’erreur s’affiche. Le message indique qu’une ou plusieurs factures n’ont pas de bon de commande correspondant qui correspond au numéro de bon de commande de la facture. De même, si le montant facturé envoyé par le revendeur tiers ne correspond pas au montant facturé, la facture est rejetée.

    Tables d’état

    Pour connaître l’état de la demande de facture, effectuez un appel REST dans la base de données à l’aide de l’API REST de tableServiceNow. La réponse de l’API répertorie les enregistrements pour lesquels la création de la facture a échoué. Pour une réponse de facture, interrogez la table d’erreurs de facturation avec le paramètre suivant :

    sysparm_query=outbound_error.supplier_id=<supplier_id>^outbound_error.state=20

    Les détails sur l’ID client, l’ID du fournisseur, le type d’erreur, l’ID unique de l’ensemble de données à importer et l’état se trouvent dans la table État sortant, qui est la table d’erreurs parente.

    Format d'URL

    /api/sn_spend_intg/spendint/invoice

    Paramètres de demande pris en charge

    Tableau 31. Paramètres de chemin d'accès
    Nom Description
    Néant
    Tableau 32. Paramètres de requête
    Nom Description
    Mode Prise en charge des modes asynchrone et synchrone pour l’intégration tierce.

    Type de données : chaîne

    Valeurs valides :
    • async : mode asynchrone.
    • sync : mode synchrone.

    Valeur par défaut : asynchrone

    Tableau 33. Paramètres de corps de demande (XML ou JSON)
    Nom Description
    currency Requis. Devise pour le sous-total, les taxes et l’expédition. Le sous-total, les taxes et les frais d’expédition doivent être dans la même devise.

    Type de données : chaîne

    Longueur maximale : 40

    customer_id Identificateur du client.

    Type de données : chaîne

    Longueur maximale : 100

    Réductions Remises appliquées à la facture. Il s’agit d’un champ modifiable.

    Type de données : chaîne

    Longueur maximale : 100

    invoice_date Requis. Date à laquelle le client a été facturé.

    Type de données : chaîne

    Longueur maximale : 40

    Format : AAAA-MM-JJ

    invoice_lines Liste des objets qui définissent les lignes qui sont facturées pour les achats au sein de cette commande.

    Type de données : tableau

    "invoice_lines": [
      {
        "invoiced_line_amount": "String",
        "invoiced_quantity": "String",
        "line_number": "String",
        "supplier_invoice_line_number": "String",
        "sales_order_line_number": "String"
      }
    ]
    invoice_lines.montant_ligne_facturé Requis. Coût total, hors taxes et frais d’expédition, facturé à un client pour une ligne de bon de commande donnée.

    Type de données : chaîne

    Longueur maximale : 40

    invoice_lines.quantité_facturée Requis. Quantité de biens ou de services qui sont facturés à un client.

    Type de données : chaîne

    Longueur maximale : 40

    invoice_lines.numéro_ligne Requis. Numéro de la ligne de bon de commande généré par le client pour un achat particulier.

    Type de données : chaîne

    Longueur maximale : 40

    invoice_lines. numéro_ligne_commande_ventes Requis. Numéro de ligne de commande client généré par le fournisseur.

    Type de données : chaîne

    Longueur maximale : 40

    invoice_lines. numéro_ligne_facture_fournisseur Requis. Numéro d’identification généré par un fournisseur pour cette ligne de facture.

    Type de données : chaîne

    Longueur maximale : 100

    other_charges Autres frais supplémentaires associés à la facture. Il s’agit d’un champ modifiable.

    Type de données : chaîne

    Longueur maximale : 100

    order_number Requis. Numéro de bon de commande fourni par le client pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    remit_to_address Requis. Emplacement auquel un paiement est effectué.

    Type de données : chaîne

    Longueur maximale : 1000

    sales_order_number Requis. Nombre ou valeur générée par le fournisseur pour cette commande.

    Type de données : chaîne

    Longueur maximale : 40

    expédition Requis. Coût d’expédition total pour l’achat complet.

    Type de données : chaîne

    Longueur maximale : 40

    Sous-total Requis. Montant total à payer au fournisseur, à l’exclusion des taxes et des frais d’expédition.

    Type de données : chaîne

    Longueur maximale : 40

    supplier_id Requis. Identificateur du revendeur ou du fournisseur auprès duquel le client peut passer des commandes.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_invoice_number Requis. Numéro d’identification généré par un fournisseur pour cette facture.

    Type de données : chaîne

    Longueur maximale : 100

    supplier_tax_id Identificateur fiscal associé au revendeur tiers. Il s’agit d’un champ modifiable.

    Type de données : chaîne

    Longueur maximale : 100

    taxe Requis. Montant total des taxes facturées pour l’achat.

    Type de données : chaîne

    Longueur maximale : 40

    tax_rate Pourcentage du taux d’imposition appliqué à la commande. Il s’agit d’un champ modifiable.

    Type de données : chaîne

    Longueur maximale : 100

    third_party_import_id Identificateur qui permet à un tiers de transmettre une valeur de chaîne pour identifier de manière unique un ensemble de données importées.

    Type de données : chaîne

    Longueur maximale : 100

    total_amount_invoiced Requis. Montant total à payer au fournisseur, y compris les taxes et les frais d’expédition.

    Type de données : chaîne

    Longueur maximale : 40

    En-têtes

    Les en-têtes de demande et de réponse suivants s’appliquent uniquement à cette action HTTP ou s’appliquent à cette action d’une manière distincte.

    Tableau 34. En-têtes de demandes
    En-tête Description
    Accepter Format de données du corps de la réponse. Types pris en charge : application/json ou application/xml.

    Valeur par défaut : application/json

    Remarque :
    Seul le format de données est pris en charge pour Procurement application/json Integration Framework.
    Tableau 35. En-têtes de réponses
    En-tête Description
    Néant

    Codes d'état

    Les codes d’état suivants s’appliquent à cette action HTTP.

    Tableau 36. Codes d'état
    Code d'état Description
    réussite Réussi. La demande a été traitée avec succès.
    échec En échec. La demande a été traitée avec des erreurs.

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

    Ces paramètres de corps de réponse sont reçus lorsqu’ils sont interrogés en mode synchrone.
    Nom Description
    error_response_body Description des erreurs, répertoriées par numéro de ligne de commande, numéro de commande, numéro de facture du fournisseur, numéro de ligne de facture du fournisseur et message d’erreur.

    Type de données : tableau

    error_response_body.message_erreur Message d’erreur détaillé.

    Type de données : chaîne

    status_code État de la réponse tel que « réussite » ou « échec ».

    Type de données : chaîne

    Demande cURL

    curl "https://instance.service-now.com/api/sn_spend_intg/spendint/invoice" \
    --request POST \
    --header "Accept:application/json" \
    --user 'username':'password'
    {"root":[{
      "customer_id": "Customer - A",
      "supplier_id": "SUP-123456",
      "third_party_import_id": "undefined",
      "supplier_invoice_number": "QAAP89873220071",
      "supplier_tax_id": "TIN000000",
      "order_number": "POL7987633",
      "sales_order_number": "SO0000000081",
      "invoice_date": "YYYY-MM-DD",
      "subtotal": "6000",
      "tax_rate": "10%",
      "tax": "600",
      "shipping": "120",
      "other_charges": "100",
      "discounts": "200",
      "total_amount_invoiced": "6620",
      "remit_to_address": "1640 Camino Del Rio North #202, San Diego,CA",
      "currency": "USD",
      "invoice_lines": [
        {
          "supplier_invoice_line_number": "QA789A867877ABN32251",
          "line_number": "POL587667",
          "sales_order_line_number": "SOL00000081",
          "invoiced_quantity": "45",
          "invoiced_line_amount": "4000"
        },
        {
          "line_number": "POL587668",
          "supplier_invoice_line_number": "78987323",
          "sales_order_line_number": "SOL98769",
          "invoiced_quantity": "12",
          "invoiced_line_amount": "2000"
        }
      ]
    }
    ]}

    Réponses possibles :

    // Success response:
    {
        "result": {
            "response": "success"
        }
    }
    
    // Error response:
    {
        "result": {
            "response": [
                {
                    "customer_id": "Customer - A",
                    "supplier_id": "SUP-123456",
                    "third_party_import_id": "undefined",
                    "status_code": "failure",
                    "error_response_body": [
                        {
                            "sales_order_line_number": "SOL00000081",
                            "sales_order_number": "SO0000000081",
                            "supplier_invoice_number": "QAAP89873220071",
                            "supplier_invoice_line_number": "QA789A867877ABN32251",
                            "error_message": "The invoice do not have a corresponding purchase order which matches the purchase order number of the invoice provided\n"
                        }
                    ]
                }
            ]
        }
    }