---
sourceDocument: Gestion des services IT Australie
sourceDocumentLink: https://servicenow-prod.fluidtopics.net/r/fr-FR/it-service-management

 Release :

    - australia

ft:locale :

    - fr-FR

ft:publication_title :

    - Gestion des services IT Australie

ft:clusterId :

    - itsm

bundleId :

    - itsm

workflow :

    - Technology


---

# Ajouter des pièces jointes aux demandes de changement à l'aide de l'API de pièce jointe

# Ajouter des pièces jointes aux demandes de changement à l'aide de l'API de pièce jointe {#ariaid-title1}

* Rversion finale: Australia
* 
* Mis à jour 12 mars 2026
* 
* ![](https://www.servicenow.com/docs/portal-asset/ico-clock) 3 minutes de lecture

Ajouter des rapports de test .xml en tant que pièces jointes aux demandes de changement DevOps en utilisant l'API de pièce jointe.
Pour plus d'informations sur l'API, consultez [Attachment - POST /now/attachment/file](https://www.servicenow.com/docs/access?context=c_AttachmentAPI&version=australia&pubname=australia-api-reference&section=attachment-POST-file&ft:locale=en-US).

L'URL de l'API de pièce jointe est la suivante :  
`https://<votre_instance>.service-now.com/api/now/attachment/file?table_name=change_request&table_sys_id=$(getServerChange.sys_id)&file_name=<nomdefichier_joint.xml>`, où

* table_name = 'change_request'
* table_sys_id = \<chg record sys_id\>
* file_name = n'importe quel nom pour la pièce jointe
{#attachment-api-chg__ul_eqs_jpn_lbc}

## Azure DevOps {#attachment-api-chg__section_q33_xyk_kbc}

Prérequis  
* Créez un utilisateur actif en sélectionnant l'option Accès au service Web uniquement. Pour plus d'informations sur le mode de création d'un utilisateur, consultez [Create a user](https://www.servicenow.com/docs/access?context=t_CreateAUser&version=australia&pubname=australia-platform-administration&ft:locale=en-US).
* Affectez le rôle sn_change_write à l'utilisateur. Pour plus d'informations sur le mode d'affectation de rôles, consultez [Assign a role to a user](https://www.servicenow.com/docs/access?context=t_AssignARoleToAUser&version=australia&pubname=australia-platform-administration&ft:locale=en-US).

* La propriété système sn_devops.enable_ado_generic_connection doit être activée.
* Lorsque vous configurez votre projet Azure DevOps pour le charger dans la table chg., la connexion générique utilisée doit avoir un utilisateur disposant du rôle sn_change_write.
{#attachment-api-chg__ul_hnf_srn_lbc}

Pour les pipelines Azure DevOps, utilisez le format indiqué ici pour ajouter des pièces jointes aux demandes de changement.  
Exemple de pipeline :

    stage: PostDeploy
        jobs:
          - job: 'pd1'
            pool: server
            steps:
               - task: ServiceNow-DevOps-Server-Get-Change@1
                 inputs:
                   connectedServiceName: 'v01-Software Quality Scans-ServiceNow DevOps Service Connection'
                   projectName: '$(system.teamProject)'
                   pipelineName: '$(build.definitionName)'
                   stageName: 'Deploy'
                   jobName: 'd1'
                   buildNumber: '$(build.buildId)'
                   branchName: '$(Build.SourceBranchName)'
                 name: getServerChange  
               - task: InvokeRESTAPI@1
                 inputs:
                   connectionType: 'connectedServiceName'
                   serviceConnection: 'v01 - new'
                   method: 'POST'
                   body: '<root><name>john2</name><age>34</age></root>'
                   urlSuffix: 'api/now/attachment/file?table_name=change_request&table_sys_id=$(getServerChange.changeSysId)&file_name=test3.xml'
                   waitForCompletion: 'false'

## GitHub {#attachment-api-chg__section_agm_wyk_kbc}

Pour les pipelines GitHub, utilisez le format indiqué ici pour ajouter des pièces jointes aux demandes de changement.

Exemple de pipeline :

Pièce jointe dans le formulaire de demande de changement dans l'instance Now :

## Jenkins {#attachment-api-chg__section_pfd_5yk_kbc}

Pour les pipelines Jenkins, utilisez le format indiqué ici pour ajouter des pièces jointes aux demandes de changement.  
Exemple de pipeline :

    pipeline {
        agent any
        
        stages {
            stage('POST API Call') {
                steps {
                    script {
                        def apiUrl = 'https://<your_instance>.service-now.com/api/sn_devops/v1/devops/tool/test?toolId=<devops_ToolId>&testType=Smoke'
                        def requestBody = [
                            name: "Smoke tests",
                            duration: 0.0,
                            passedTests: 1,
                            failedTests: 1,
                            skippedTests: 1,
                            blockedTests: 1,
                            totalTests: 4,
                            startTime: "2023-12-14T23:31:31z",
    	                    finishTime: "2023-12-15T23:31:31z",
                            buildNumber: env.BUILD_NUMBER,
                            stageName: "POST API Call",
                            pipelineName: "TestPipelineKL"
                        ]
                        
                        def auth = "<password>" // devops.integration.user:<password> in base64 encoded.
                        def authHeader = "Basic " + auth
                        
                        def response = httpRequest(
                            contentType: 'APPLICATION_JSON',
                            httpMode: 'POST',
                            requestBody: groovy.json.JsonOutput.toJson(requestBody),
                            url: apiUrl,
                            customHeaders: [[name: 'Authorization', value: authHeader]]
                        )
                        
                        if (response.status == 200 || response.status == 201) {
                            echo "API call successful!"
                            echo "Response: ${response.content}"
                        } else {
                            error "API call failed with status ${response.status}"
                        }
                    }
                }
            }
            stage('UAT deploy') {
                        steps {
                            script {
                                def chg_output = snDevOpsChange()
                                def changeRequestNumber = snDevOpsGetChangeNumber(changeDetails: """{"build_number":"${env.BUILD_NUMBER}", "pipeline_name": "TestPipelineKL", "stage_name": "UAT deploy"}""")
                                echo "${changeRequestNumber}"
                                echo "Output of snDevOpsChange(): ${chg_output}"
                        }
                    }
            }
            stage('Example') {
                steps {
                    script {
                        def API_URL = 'https://<your_instance>.service-now.com/api/sn_devops/devops/orchestration/changeInfo?pipelineName=TestPipelineKL&toolId=<devops_ToolId>&buildNumber=' + env.BUILD_NUMBER + '&stageName=UAT%20deploy'
                        def AUTH = 'Basic <password>'
                        // Call the API
                        def response = sh(script: "curl -X GET -H 'Authorization: ${AUTH}' -H 'Content-Type: application/json' '${API_URL}'", returnStdout: true).trim()
                        echo "Response: ${response}"
                        
                        // Store the JSON response into a variable
                        def slurper = new groovy.json.JsonSlurper()
                        def jsonResponse = slurper.parseText(response)
                        echo "Stored JSON Response: ${jsonResponse}"
                        
                        // Store the specific field value from JSON response into a variable
                        def changeId = jsonResponse.result.sys_id
                        echo "Change ID: ${changeId}"
                        
                        // Call the second API to post attachment
                        def xmlData = '<root><name>john2</name><age>34</age></root>'
                        def AUTH2 = 'Basic <password>='
                        def postResponse = sh(script: "curl -X POST -H 'Authorization: ${AUTH2}' -H 'Content-Type: application/xml' -d '${xmlData}' 'https://<your_instance>.service-now.com/api/now/attachment/file?table_name=change_request&table_sys_id=${changeId}&file_name=test10111.xml'", returnStdout: true).trim()
                    }
                }
            }
        }
    }

## Limitations de l'API de pièce jointe {#attachment-api-chg__section_k1v_shp_kbc}

* La taille du texte du fichier xml de pièce jointe doit être acceptable pour l'outil d'orchestration.
* Pour Azure DevOps, le rôle sn_change_write est nécessaire pour l'authentification de l'API de pièce jointe, afin de charger le fichier dans l'enregistrement d'un changement.
{#attachment-api-chg__ul_zlf_thp_kbc}

