---
sourceDocument: Référence de l’API Xanadu
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/xanadu/api-reference

 Release :

    - xanadu

ft:locale :

    - fr-FR

ft:publication_title :

    - Référence de l’API Xanadu

ft:clusterId :

    - crapiref

bundleId :

    - crapiref

workflow :

    - Creator


---

# API Spendint

# API Spendint {#ariaid-title1}

* Rversion finale: Xanadu
* 
* Mis à jour 1 août 2024
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 34 minutes de lecture

L'API Spendint fournit des points de terminaison qui envoient les informations sur le catalogue, les prix, les disponibilités, les commandes, les expéditions et les factures 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 Cadre de travail d'intégration d'Approvisionnement (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](https://www.servicenow.com/docs/access?context=procurement-file-transfer-framework&version=xanadu&pubname=xanadu-source-to-pay-operations&ft:locale=en-US)) ;

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

## API Spendint - POST /sn_spend_intg/spendint/catalog {#ariaid-title2}

Permettez aux fournisseurs de publier plusieurs catalogues et de créer des produits du fournisseur, des produits de modèle, 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 effectuer les opérations suivantes :

1. Créer toutes les nouvelles catégories tierces et les mapper vers des catégories de modèle.
   * S'il est disponible, utilisez le Code des produits et services standard des Nations Unies (UNSPSC), puis le nom de la catégorie.
   * Si l'UNSPSC n'est pas disponible, utilisez uniquement le nom de la catégorie.
   {#spendint-POST-catalog__ul_jds_5yl_kmb}
2. Après le mappage d'une catégorie tierce à une catégorie de modèle, utiliser 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 MPN, mettez-le à jour avec les changements requis, puis créez ou mettez à jour les produits du fournisseur associés au modèle de produit.
   2. Si aucun modèle de produit n'existe pour le MPN, procédez comme suit :
      1. En général, une classe de modèle de produit est 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 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 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 être mappé vers le fabricant sur le modèle de produit.
         * Le nom du produit de l'API doit être mappé vers le nom sur le modèle de produit.
         * Le MPN de l'API doit mettre à jour le numéro de modèle.
         * La description du produit 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 la 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 la catégorie tierce.
         * Si des valeurs existent dans les produits de remplacement de l'API, créez les enregistrements de produits de remplacement entre le modèle de produit actuel et les autres modèles de produits.
         * Si des valeurs existent dans les produits compatibles de 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.
         {#spendint-POST-catalog__ul_wvr_jdk_mnb}
      {#spendint-POST-catalog__ol_trv_qck_mnb}
   {#spendint-POST-catalog__ol_rtb_hck_mnb}
3. Si un modèle de produit est disponible, utilisez le numéro de référence du fournisseur pour créer ou mettre à jour les produits du fournisseur qui y sont associés.
{#spendint-POST-catalog__ol_oqw_3dd_dmb}

### Mappage tiers {#spendint-POST-catalog__section_w4v_nfn_n4b}

Utilisez les tables suivantes pour effectuer les mappages de catégorie, de modèle et d'unité tiers :

* Catégories tierces : stocke tous les enregistrements de catégories tierces que l'administrateur ShoppingHub doit mapper avec les catégories de modèles existantes internes.
* 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 que l'administrateur ShoppingHub doit mapper 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 catégories d'unités tierces.

{#spendint-POST-catalog__ul_mgg_dbt_knb}  
Remarque :  
Un produit d'intégration tiers est automatiquement publié lorsque la catégorie tierce et l'unité tierce sont correctement mappées.

### Dates de vente de produits du fournisseur {#spendint-POST-catalog__section_mxc_phn_n4b}

Un produit du 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 de produit du fournisseur sont renseignés via l'intégration tierce à partir de l'API de catalogue.

### Tables d'états {#spendint-POST-catalog__section_hrm_qts_knb}

Pour connaitre l'état de la demande d'importation de produits en bloc, effectuez un appel REST dans la base de données ServiceNow à l'aide de l'API REST table. La réponse de l'API répertorie les enregistrements dans lesquels la demande d'importation de produits en bloc a échoué. Pour obtenir la réponse d'importation de produits en bloc, interrogez la table d'erreurs de catalogue à l'aide du paramètre suivant :

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

Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation 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

{#spendint-POST-catalog__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 1. Paramètres de chemin d'accès]

{#spendint-POST-catalog__entry__6}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-catalog__ul_hdr_tkg_ymb} Valeur par défaut : async |
[Tableau 2. Paramètres de requête]

{#spendint-POST-catalog__entry__10}

| Nom | Description |
|-|-|
| customer_id | Identificateur du client. Type de données : chaîne Longueur maximale : 100 |
| catalog_id | Identificateur du contenu de catalogue qu'un client peut acheter. Type de données : chaîne Longueur maximale : 100 |
| products | Liste d'objets qui définissent les produits à créer ou à mettre à jour. Chaque transaction a une limite de 1 000 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 conservés 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 de pays dans lesquels le produit du fournisseur peut être acheté. Si aucun pays n'est indiqué, le produit peut être acheté par un utilisateur dans tous les pays. Type de données : tableau "available_for_country": ["US","IN","GB"] |
| products.bundled_components | Valide uniquement pour les scénarios d'envoi d'un groupe de produits avec la charge utile du catalogue et applicable uniquement aux charges utiles du groupe parent. Cette valeur contient la référence aux composants des groupes enfants. La liste du MPN et les quantités des composants des groupes enfants sont conservées ici. Remarque : Le même composant de groupe enfant pouvant être ajouté plusieurs fois à un groupe, la quantité saisie est ce qui différencie les différents composants identiques dans les groupes enfants. Les composants des groupes enfants et leurs détails (MPN et quantités) doivent être mappés vers le même fournisseur. Type de données : tableau "bundled_components": [ { "mpn": "String", "quantity": "String" } ] |
| products.contract_agreement | Détails du contrat d'un produit. Remarque : Cela n'est pas requis 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.contract_end_date | Date de fin du contrat. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| products.contract_agreement.contract_number | Requis. Numéro du contrat actif associé au produit. Type de données : chaîne Longueur maximale : 100 |
| products.contract_agreement.contract_start_date | Date de début du contrat. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| products.contract_agreement.negotiated_currency | Requis. Devise du prix négocié. Type de données : chaîne Longueur maximale : 40 |
| products.contract_agreement.négocier_price | Requis. Prix unitaire d'un produit négocié via 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écessaire pour envoyer un produit au client. Cette valeur doit représenter le nombre de jours et être un nombre entier. Type de données : chaîne Longueur maximale : 40 |
| products.images | Liste de chaînes qui spécifient les URL des images pour le produit du fournisseur. Type de données : tableau |
| products.manufacturer | Requis. Société qui fabrique, publie ou fournit le produit. Il ne s'agit pas du fournisseur ni du revendeur du produit. Type de données : chaîne Longueur maximale : 100 |
| products.mpn | Requis. Identificateur d'un produit fourni par le fabricant, l'éditeur ou le fournisseur. Remarque : Celui-ci n'est pas requis pour les groupes parents de revendeurs lorsque la valeur UGS est disponible. Type de données : chaîne Longueur maximale : 100 |
| products.parent_bundle | Valide uniquement pour les scénarios d'envoi d'un groupe de produits avec la charge utile du catalogue et applicable uniquement aux charges utiles de composants des groupes enfants. Dans le cas d'un composant de groupe enfant, la référence au parent est conservée ici. Les valeurs MPN et UGS parentes sont également définies ici. Type de données : chaîne Longueur maximale : 100 |
| products.product_attributes | Liste de paires clé-valeur qui définissent les attributs du produit ; par exemple, `<< Couleur >> : << Espace gris >>`. Un produit peut avoir plusieurs attributs. Toutefois, seuls les attributs ayant une incidence sur la tarification ou la disponibilité du stock 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 propriété unspsc. Il s'agit de 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 rallonge électrique peut appartenir à la 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 dans une expérience de vente pour un acheteur. Remarque : Ici, il est recommandé que le fournisseur soit aussi descriptif que possible, notamment pour ce qui concerne les éléments de catalogue de lots de produits pour lesquels des composants de groupes enfants existent. Type de données : chaîne Longueur maximale : 65 000 |
| products.product_name | Requis. Nom du produit. Type de données : chaîne Longueur maximale : 1 000 |
| products.sku | Requis. Nombre généré par un fournisseur qui identifie de manière unique un produit qu'il vend. Type de données : chaîne Longueur maximale : 100 |
| products.unit | Requis. Unité ou taux appliqué à ce produit lors de sa vente par le fournisseur. Par exemple, éléments, heures, etc. Type de données : chaîne Longueur maximale : 40 |
| products.unspsc | Requis. Identificateur que vous saisissez si vous ne définissez pas la propriété product_category_name. Il s'agit de 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 permettant à 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 |
[Tableau 3. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-catalog__entry__64}{#spendint-POST-catalog__accept-RESTAPI}

| 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 |
[Tableau 4. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-catalog__entry__68}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 5. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-catalog__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 6. Codes d'état]

{#spendint-POST-catalog__table_lml_1qg_ymb}

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

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-catalog__entry__78}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par référence UGS, MPN et message d'erreur. Type de données : tableau |
| error_response_body.error_message | 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 {#ariaid-title3}

Met à jour la tarification d'enregistrements de produits du fournisseur.
Lorsqu'une tarification est disponible pour des enregistrements de produits du fournisseur, l'API utilise la UGS des produits pour rechercher un produit du fournisseur existant. Si un produit du fournisseur correspondant existe, le prix du contrat correspondant est mis à jour. Si la recherche de produit du fournisseur correspondant échoue, un message d'erreur est généré et indique que le produit pour lequel vous essayez de mettre à jour la tarification n'existe pas.

### Tables d'états {#spendint-POST-price__section_hrm_qts_knb}

Pour connaitre l'état de la demande d'importation de prix, effectuez un appel REST dans la base de données ServiceNow à l'aide de l'API REST Table. La réponse de l'API répertorie les enregistrements dans lesquels la demande d'importation de prix a échoué. Pour obtenir la réponse d'importation de prix, interrogez la table d'erreurs de facture à l'aide du paramètre suivant :

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

Vous trouverez les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état dans la table État sortant, qui est la table d'erreurs parente.

### Format d'URL {#spendint-POST-price__section_dtb_zd2_dmb}

/api/sn_spend_intg/spendint/price

### Paramètres de demande pris en charge

{#spendint-POST-price__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 7. Paramètres de chemin d'accès]

{#spendint-POST-price__table_bdb_dck_ymb__entry__2}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-price__ul_hdr_tkg_ymb} Valeur par défaut : async |
[Tableau 8. Paramètres de requête]

{#spendint-POST-price__table_bdb_dck_ymb} {#spendint-POST-price__entry__10}

| Nom | Description |
|-|-|
| catalog_id | Requis. Identificateur du contenu de catalogue qu'un client peut acheter. Type de données : chaîne Longueur maximale : 100 |
| customer_id | Requis. Identificateur du client. Type de données : chaîne Longueur maximale : 100 |
| products | Liste d'objets qui définissent les produits à créer ou à mettre à jour. Chaque transaction a une limite de 1 000 produits. Type de données : tableau "products": [ { "contract_agreement": {Array}, "sku": "String" } ] |
| products.contract_agreement | Détails du contrat d'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.contract_end_date | Date de fin du contrat. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| products.contract_agreement.contract_number | Requis. Numéro du contrat actif associé au produit. Type de données : chaîne Longueur maximale : 100 |
| products.contract_agreement.contract_start_date | Date de début du contrat. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| products.contract_agreement.negotiated_currency | Requis. Devise du prix négocié. Type de données : chaîne Longueur maximale : 40 |
| products.contract_agreement.négocier_price | Requis. Prix unitaire d'un produit négocié via un contrat avec le fournisseur ou le revendeur. Type de données : chaîne Longueur maximale : 40 |
| products.sku | Requis. Nombre généré par un fournisseur qui identifie de manière unique un produit qu'il vend. 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 permettant à 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 |
[Tableau 9. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-price__entry__36}{#spendint-POST-price__accept-RESTAPI}

| 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 |
[Tableau 10. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-price__entry__40}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 11. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-price__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 12. Codes d'état]

{#spendint-POST-price__table_lml_1qg_ymb}

### Paramètres de corps de réponse (JSON) {#spendint-POST-price__section_iy2_1hk_ymb}

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-price__table_jy2_1hk_ymb__entry__2}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par référence UGS et message d'erreur. Type de données : tableau |
| error_response_body.error_message | 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 |
[ ]

{#spendint-POST-price__table_jy2_1hk_ymb}  

### 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 {#ariaid-title4}

Met à jour la disponibilité des enregistrements de produits du fournisseur.
Lorsque des enregistrements de produits du fournisseur sont disponibles, l'API utilise la UGS des produits pour rechercher un produit du fournisseur existant. Si un produit du fournisseur correspondant existe, le champ available_units correspondant est mis à jour. Si la recherche de produit du fournisseur correspondant échoue, un message d'erreur est généré et indique que le produit pour lequel vous essayez de mettre à jour la disponibilité n'existe pas.

### Tables d'états {#spendint-POST-availability__section_hrm_qts_knb}

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

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

Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état se trouvent dans la table État sortant, qui est la table d'erreurs parente.

### Format d'URL {#spendint-POST-availability__section_alq_xd2_dmb}

/api/sn_spend_intg/spendint/availability

### Paramètres de demande pris en charge

{#spendint-POST-availability__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 13. Paramètres de chemin d'accès]

{#spendint-POST-availability__table_rdf_2ck_ymb__entry__2}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-availability__ul_hdr_tkg_ymb} Valeur par défaut : async |
[Tableau 14. Paramètres de requête]

{#spendint-POST-availability__table_rdf_2ck_ymb} {#spendint-POST-availability__entry__10}

| Nom | Description |
|-|-|
| catalog_id | Requis. Identificateur du contenu de catalogue qu'un client peut acheter. Type de données : chaîne Longueur maximale : 100 |
| customer_id | Requis. Identificateur du client. Type de données : chaîne Longueur maximale : 100 |
| products | Liste d'objets qui définissent les produits à mettre à jour. Chaque transaction a une limite de 1 000 produits. Type de données : tableau "products": [ { "available_units": "String", "sku": "String", "unit": "String" } ] |
| products.available_units | Requis pour les produits conservés en stock. Nombre d'unités disponibles pour ce produit. Type de données : chaîne Longueur maximale : 40 |
| products.sku | Requis. Nombre généré par un fournisseur qui identifie de manière unique un produit qu'il vend. Type de données : chaîne Longueur maximale : 100 |
| products.unit | Requis. Unité ou taux appliqué à ce produit lors de sa vente par le fournisseur. Par exemple, éléments, 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 |
[Tableau 15. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-availability__entry__28}{#spendint-POST-availability__accept-RESTAPI}

| 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 |
[Tableau 16. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-availability__entry__32}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 17. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-availability__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 18. Codes d'état]

{#spendint-POST-availability__table_lml_1qg_ymb}

### Paramètres de corps de réponse (JSON) {#spendint-POST-availability__section_usm_1hk_ymb}

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-availability__table_vsm_1hk_ymb__entry__2}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par référence UGS et message d'erreur. Type de données : tableau |
| error_response_body.error_message | 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 |
[ ]

{#spendint-POST-availability__table_vsm_1hk_ymb}  

### 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 {#ariaid-title5}

Met à jour les informations de commande lorsqu'un utilisateur achète un produit à partir d'un catalogue tiers. Lorsque l'utilisateur valide son achat, une ligne d'achat est créée pour lui permettre d'effectuer les approbations ou d'autres tâches pour l'achat.
Lorsqu'un bon de commande est généré dans la base de données ServiceNow, la commande est transmise aux tables suivantes :

* Commande sortante : contient l'en-tête de la commande.
* Ligne de commande sortante : contient les lignes de la commande.
{#spendint-POST-orderack__ul_cvl_3cs_knb}

Les fournisseurs doivent interroger ces tables et récupérer les commandes en attente qui leur sont adressées. Les fournisseurs doivent créer une application incluse dans le périmètre pour les actions Studio de workflow pour l'intégration à la base de données ServiceNow.  
Interrogez les tables à l'aide des paramètres suivants :

* `sysparm_query=supplier_id=<supplier_id>^purchase_order.status=20 for header`
* `sysparm_query=purchase_order.supplier_id=<supplier_id>^purchase_order.status=20 for header`
{#spendint-POST-orderack__ul_owg_sfs_knb} 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 à la planification des ressources de l'entreprise (ERP), le cas échéant.
2. Le bon de commande et la ligne de bon de commande sont transférés via l'intégration au tiers avec l'ID client, l'ID du fournisseur, le numéro de bon de commande, la date de la 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 l'intégration du catalogue tiers et l'ERP reçoivent les messages de confirmation. 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 par l'intégration tierce.
{#spendint-POST-orderack__ol_bzv_51p_znb}

### Tables d'états {#spendint-POST-orderack__section_hrm_qts_knb}

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

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

Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état se trouvent dans la table État sortant, qui est la table d'erreurs parente.

### Format d'URL {#spendint-POST-orderack__section_vkd_122_dmb}

/api/sn_spend_intg/spendint/orderack

### Paramètres de demande pris en charge

{#spendint-POST-orderack__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 19. Paramètres de chemin d'accès]

{#spendint-POST-orderack__table_sd3_lck_ymb__entry__2}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-orderack__ul_td3_lck_ymb} Valeur par défaut : async |
[Tableau 20. Paramètres de requête]

{#spendint-POST-orderack__table_sd3_lck_ymb} {#spendint-POST-orderack__entry__10}

| 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 d'objets qui définissent les lignes de commande client avec des mises à jour uniques pour les achats dans 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.estimated_arrival_date | Date d'arrivée prévue de la commande. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| sales_order_lines.line_number | Requis. Numéro de 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.sales_order_line_number | Numéro de ligne de commande client généré par le fournisseur. Ce numéro n'est requis que pour les révisions apportées à cet achat. Type de données : chaîne Longueur maximale : 40 |
| sales_order_number | Numéro 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. {#spendint-POST-orderack__ul_hdr_tkg_ymb} |
| 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 différée. Type de données : chaîne Longueur maximale : 1 000 |
| 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 permettant à 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 |
[Tableau 21. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-orderack__entry__34}{#spendint-POST-orderack__accept-RESTAPI}

| 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 |
[Tableau 22. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-orderack__entry__38}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 23. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-orderack__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 24. Codes d'état]

{#spendint-POST-orderack__table_lml_1qg_ymb}

### Paramètres de corps de réponse (JSON) {#spendint-POST-orderack__section_cq5_1hk_ymb}

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-orderack__table_dq5_1hk_ymb__entry__2}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par numéro de commande client, numéro de ligne de commande client et message d'erreur. Type de données : tableau |
| error_response_body.error_message | 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 |
[ ]

{#spendint-POST-orderack__table_dq5_1hk_ymb}  

### 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 {#ariaid-title6}

Utilisez ce point de terminaison pour accepter les mises à jour des achats effectués auprès de tiers.
Lorsque vous recevez des données, vous devez associer 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étails d'expédition existant associé à la ligne du 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 aucun bon de commande ou aucune ligne de bon de commande pour les données d'expédition, un message d'erreur indique que le bon de commande pour cette expédition n'existe pas.  
Remarque :  
Si le bon de commande et les lignes qu'il comprend sont dans l'état Soumission en attente et que la commande client et les lignes qu'elle comprend ne sont pas renseignées, la validation de l'expédition et de la facture du revendeur tiers ne sera pas autorisée. Elle n'est autorisée que lorsque l'état du bon de commande et des lignes qu'il comprend sont dans l'état Commandé. En outre, il n'existe aucune restriction séquentielle sur la validation de l'expédition et de la facture.

### Tables d'états {#spendint-POST-shipment__section_hrm_qts_knb}

Pour connaitre l'état de la demande d'expédition, effectuez un appel REST dans la base de données ServiceNow à l'aide de l'API REST 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 d'expédition, interrogez la table d'erreurs d'expédition à l'aide du paramètre suivant :

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

Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état se trouvent dans la table État sortant, qui est la table d'erreurs parente.

### Format d'URL {#spendint-POST-shipment__section_ejb_b22_dmb}

/api/sn_spend_intg/spendint/shipment

### Paramètres de demande pris en charge

{#spendint-POST-shipment__table_hqb_pfp_gmb__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 25. Paramètres de chemin d'accès]

{#spendint-POST-shipment__table_hqb_pfp_gmb} {#spendint-POST-shipment__table_igy_fck_ymb__entry__2}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-shipment__ul_hdr_tkg_ymb} Valeur par défaut : async |
[Tableau 26. Paramètres de requête]

{#spendint-POST-shipment__table_igy_fck_ymb} {#spendint-POST-shipment__entry__10}

| 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. Numéro 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 le numéro de série, le numéro IMDI et les détails des balises d'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.actual_shipment_date | 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.estimated_arrival_date | Date à laquelle l'expédition doit arriver à l'emplacement spécifié. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| shipment_lines.line_number | Requis. Numéro de 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.planned_shipment_date | Date à laquelle l'expédition doit quitter l'emplacement du fournisseur. Type de données : chaîne Longueur maximale : 40 Format : AAAA-MM-JJ |
| shipment_lines.product_details | Liste d'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 des balises d'actifs. 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.sales_order_line_number | Numéro de ligne de commande client généré par le fournisseur. Ce numéro n'est requis que pour les révisions apportées à cet achat. Type de données : chaîne Longueur maximale : 40 |
| shipment_lines.shipping_address | 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 : 1 000 |
| shipment_lines.shipping_address.country | Pays où les produits sont expédiés. Type de données : chaîne Longueur maximale : 40 |
| shipment_lines.shipping_address.name | Nom du client à qui les produits sont expédiés. Type de données : chaîne Longueur maximale : 1 000 |
| shipment_lines.shipping_address.state | État où les produits sont expédiés. Type de données : chaîne Longueur maximale : 1 000 |
| shipment_lines.shipping_address.street | Nom de la rue où les produits sont expédiés. Type de données : chaîne Longueur maximale : 1 000 |
| shipment_lines.shipping_address.zip_code | Code postal ou PIN où les produits sont expédiés. Type de données : chaîne Longueur maximale : 40 |
| shipment_lines.shipment_quantity | Requis. Nombre de produits expédiés en tant que biens physiques. Ce nombre doit contenir la quantité des produits qui figurent dans l'expédition. Type de données : chaîne Longueur maximale : 40 |
| shipment_lines.shipping_carrier | Transporteur qui livre le produit à l'emplacement spécifié (par exemple, FedEx, UPS, USPS, etc.). Type de données : chaîne Longueur maximale : 100 |
| shipment_lines.ship_to | Nom du destinataire à qui les produits sont expédiés. Type de données : chaîne Longueur maximale : 100 |
| shipment_lines.tracking_number | Numéro de suivi fourni par le transporteur pour la totalité ou une 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 cette expédition. En règle générale, ce numéro est généré par un système de planification des ressources d'entreprise (ERP) ou de suivi des commandes. Type de données : chaîne Longueur maximale : 100 |
| third_party_import_id | Identificateur permettant à 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 |
[Tableau 27. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-shipment__entry__66}{#spendint-POST-shipment__accept-RESTAPI}

| 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 |
[Tableau 28. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-shipment__entry__70}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 29. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-shipment__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 30. Codes d'état]

{#spendint-POST-shipment__table_lml_1qg_ymb}

### Paramètres de corps de réponse (JSON) {#spendint-POST-shipment__section_hgg_bhk_ymb}

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-shipment__table_igg_bhk_ymb__entry__2}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par numéro de ligne de commande client, numéro de commande client, numéro d'expédition du fournisseur et message d'erreur. Type de données : tableau |
| error_response_body.error_message | 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 |
[ ]

{#spendint-POST-shipment__table_igg_bhk_ymb}  

### 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 {#ariaid-title7}

Accepte les factures de fournisseurs tiers.
Si le bon de commande et les lignes qu'il comprend sont dans l'état Soumission en attente et que la commande client et les lignes qu'elle comprend ne sont pas renseignées, la validation de l'expédition et de la facture du revendeur tiers ne sera pas autorisée. Elle n'est autorisée que lorsque l'état du bon de commande et des lignes qu'il comprend sont dans l'état Commandé. En outre, il n'existe aucune restriction séquentielle sur la validation de l'expédition et de la facture.  
Lors de son envoi, une facture (et les lignes qu'elle comprend) est mappée vers un bon de commande. Lorsqu'un mappage est réussi, l'état de la facture est défini comme suit :

* Livraison en attente : lorsqu'aucun reçu n'existe, la commande est partiellement livrée ou la facture requiert une approbation.
* Facture confirmée : lorsque le bon de commande est livré et que le montant facturé correspond au montant total du bon de commande.
* Revue nécessaire : lorsque le bon de commande est livré et que le montant facturé ne correspond pas au montant total du bon de commande.
{#spendint-POST-invoice__ul_mqv_3c2_dmb}

Une facture valide publiée pour un élément de ligne ne peut pas être mise à jour.

Si la facture fournie ne comporte aucun numéro de bon de commande, elle est rejetée et un message d'erreur indique qu'une ou plusieurs des factures fournies ne comportent pas de numéro de bon de commande. Si la facture fournie comporte un numéro de bon de commande, mais que le bon de commande ne correspond pas ou n'existe pas, un message d'erreur s'affiche. Le message indique le numéro du bon de commande spécifié sur une ou plusieurs factures ne correspond pas. En outre, si le montant facturé envoyé par le revendeur tiers ne correspond pas au montant facturé, la facture est rejetée.

### Tables d'états {#spendint-POST-invoice__section_hrm_qts_knb}

Pour connaitre l'état de la demande de facture, effectuez un appel REST dans la base de données ServiceNow à l'aide de l'API REST Table. La réponse de l'API répertorie les enregistrements dans lesquels la demande de création de facture a échoué. Pour obtenir la réponse de facture, interrogez la table d'erreurs de facture à l'aide du paramètre suivant :

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

Les informations sur l'ID client, l'ID du fournisseur, le type d'erreur, l'ID de jeu d'importation unique et l'état se trouvent dans la table État sortant, qui est la table d'erreurs parente.

### Format d'URL {#spendint-POST-invoice__section_lxx_b22_dmb}

/api/sn_spend_intg/spendint/invoice

### Paramètres de demande pris en charge

{#spendint-POST-invoice__entry__2}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 31. Paramètres de chemin d'accès]

{#spendint-POST-invoice__table_jhz_gck_ymb__entry__2}

| Nom | Description |
|-|-|
| mode | Prise en charge des modes asynchrones et synchrones pour les intégrations tierces. Type de données : chaîne Valeurs valides : * async : mode asynchrone * sync : mode synchrone {#spendint-POST-invoice__ul_hdr_tkg_ymb} Valeur par défaut : async |
[Tableau 32. Paramètres de requête]

{#spendint-POST-invoice__table_jhz_gck_ymb} {#spendint-POST-invoice__entry__10}

| Nom | Description |
|-|-|
| devise | Requis. Devise du sous-total, des taxes et des coûts d'expédition. Le sous-total, les taxes et les coûts d'expédition doivent être exprimés 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 |
| discounts | Remises appliquées à la facture. Ce champ est 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 d'objets qui définissent les lignes facturées pour les achats dans 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.invoiced_line_amount | Requis. Coût total, hors taxes et coûts 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.invoiced_quantity | Requis. Quantité de biens ou de services pour lesquels un client est facturé. Type de données : chaîne Longueur maximale : 40 |
| invoice_lines.line_number | Requis. Numéro de 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.sales_order_line_number | 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.supplier_invoice_line_number | 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. Ce champ est 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 : 1 000 |
| sales_order_number | Requis. Numéro ou valeur généré(e) par le fournisseur pour cette commande. Type de données : chaîne Longueur maximale : 40 |
| shipping | Requis. Coût total d'expédition pour l'ensemble de l'achat. Type de données : chaîne Longueur maximale : 40 |
| subtotal | Requis. Montant total à payer au fournisseur, hors taxes et 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. Ce champ est modifiable. Type de données : chaîne Longueur maximale : 100 |
| tax | 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. Ce champ est modifiable. Type de données : chaîne Longueur maximale : 100 |
| third_party_import_id | Identificateur permettant à 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 |
[Tableau 33. Paramètres de corps de demande (XML ou JSON)]

### 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.
{#spendint-POST-invoice__entry__58}{#spendint-POST-invoice__accept-RESTAPI}

| 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 |
[Tableau 34. En-têtes de demandes]

Remarque :  
Seul le format de données application/json est pris en charge pour Procurement Integration Framework.
{#spendint-POST-invoice__entry__62}

| En-tête | Description |
|-|-|
| Aucun |   |
[Tableau 35. En-têtes de réponses]

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP.
{#spendint-POST-invoice__table_lml_1qg_ymb__entry__2}

| Code d'état | Description |
|-|-|
| réussite | Réussi. La demande a été correctement traitée. |
| échec | En échec. La demande présente des erreurs de traitement. |
[Tableau 36. Codes d'état]

{#spendint-POST-invoice__table_lml_1qg_ymb}

### Paramètres de corps de réponse (JSON) {#spendint-POST-invoice__section_ih4_bhk_ymb}

Les paramètres de corps de réponse suivants sont reçus lors d'une interrogation en mode synchrone.{#spendint-POST-invoice__table_jh4_bhk_ymb__entry__2}

| Nom | Description |
|-|-|
| error_response_body | Description des erreurs, répertoriées par numéro de ligne de commande client, numéro de bon 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.error_message | 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 |
[ ]

{#spendint-POST-invoice__table_jh4_bhk_ymb}  

### 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"
                        }
                    ]
                }
            ]
        }
    }


