---
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


---

# DevOps API

# DevOps API {#ariaid-title1}

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

L'API DevOps fournit des points de terminaison qui permettent l'interaction avec des outils externes DevOps .
Cette API REST permet aux intégrateurs de :  
* Récupérez les outils disponibles DevOps associés à une instance.
* Récupérez l'objet de schéma d'une ressource de code, d'un plan ou d'une ressource d'orchestration.
* Vérifiez si une tâche d'orchestration est sous contrôle des changements et vérifiez son état de contrôle des changements.
* Créez des rappels à associer aux exécutions de tâches sous contrôle des changements.
* Envoyez diverses charges utiles d'événements, qui sont transformées en objets normalisés et stockées sous forme d'objets de code, d'orchestration et de plan.
* Recherchez une validation, une branche ou un référentiel à l'aide de requêtes codées et de critères de recherche/tri spécifiques.
* Enregistrez les versions et les packages d'artefacts, ainsi que l'exécution et les validations de pipeline qui leur sont associées.
* Créez et gérez les événements d'application et d'outil d'intégration.
{#devops-api__ul_tkj_h4x_qjb}

Pour en savoir plus, consultez [DevOps Config](https://www.servicenow.com/docs/access?context=devops-config-landing-page&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).  
À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`.  
Remarque :  
Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire.

Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ;

## DevOps - GET /devops/code/schéma {#ariaid-title2}

Renvoie l'objet de schéma pour une ressource de code spécifiée : validation, référentiel ou branche.
Une fois que vous avez l'objet de schéma requis, utilisez-le pour créer le corps de la requête pour votre appel POST correspondant ; POST /code/commit, POST /code/référentiel ou POST /code/branche.  
Remarque :  
Ce point de terminaison renvoie uniquement les éléments de corps de la demande qui sont requis.

### Format d'URL {#devops-GET-code-schema__section_rk3_tdh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/code/schema

URL par défaut : /api/sn_devops/devops/code/schema

### Paramètres de demande pris en charge

{#devops-GET-code-schema__entry__2}{#devops-GET-code-schema__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 1. Paramètres de chemin d'accès]

{#devops-GET-code-schema__entry__6}

| Nom | Description |
|-|-|
| resource | Requis. Type de schéma de ressources à renvoyer. Valeurs valides (insensibles à la casse) : * commit * repository * branch {#devops-GET-code-schema__ul_jqn_d4p_33b} Type de données : chaîne |
[Tableau 2. Paramètres de requête]

{#devops-GET-code-schema__entry__10}

| Nom | Description |
|-|-|
| Aucun |   |
[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. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-code-schema__entry__14}{#devops-GET-code-schema__accept-row-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
[Tableau 4. En-têtes de demandes]

{#devops-GET-code-schema__entry__18}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-code-schema__entry__22}{#devops-GET-code-schema__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Demande terminée avec succès. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 6. Codes d'état]

### Paramètres du corps de réponse

{#devops-GET-code-schema__entry__30}

| Nom | Description |
|-|-|
| branch | Description de la branche dans laquelle la validation du code a été effectuée. Type de données : objet "branch": { "name": "String", "path": "String" } |
| branch.name | Nom de la branche dans laquelle la validation du code a été effectuée. Type de données : chaîne |
| chemin.branche | Chemin d'accès relatif de la branche. Type de données : chaîne |
| validations | Description des validations. Type de données : tableau "commits": [ { "committedDate": "String", "committer": Object, "details": Array, "id": "String", "url": "String" } ] |
| commits.committedDate | Date/heure de validation du code dans l'outil source DevOps . Type de données : chaîne Format : ISO 8601 avec décalage de fuseau horaire Par exemple : 1970-01-01T08:15:30-05:00 |
| commits.committer | Description de la personne/de l'entité qui a demandé la validation. Type de données : objet "committer": { "email": "String" } |
| commits.committer.email | Adresse e-mail de la personne ayant demandé la validation. Type de données : chaîne |
| commits.details | Détails de la validation. Remarque : Il n'est pas obligatoire d'inclure des détails dans une validation. Ce point de terminaison renvoie un tableau vide pour les détails s'ils ne sont pas inclus dans la validation. Type de données : tableau "details": [ { "action": "String", "additions": Number, "changes": Number, "deletions": Number, "file": "String", "totalChanges": Number } ] |
| validations.détails.action | Action exécutée sur le fichier. Type de données : chaîne |
| commits.details.additions | Nombre total d'ajouts dans le fichier. Type de données : nombre |
| Validations.Détails.Changements | Nombre total de changements qui ont été apportés. Type de données : nombre |
| validations.détails.suppressions | Nombre total de suppressions dans le fichier. Type de données : nombre |
| commits.details.file | Chemin du fichier qui a été modifié par rapport à la branche. Type de données : chaîne |
| commits.details.totalChanges | Nombre total d'ajouts et de suppressions. Type de données : nombre |
| commits.id | Identificateur de plateforme source ou SHA de validation. Type de données : chaîne |
| commits.url | URL de la validation, telle que \<\< https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6 \>\>. Type de données : chaîne |
| nom | Nom de la branche ou du référentiel, par exemple \<\< Master \>\> ou \<\< Platform-Mobile \>\>. Type de données : chaîne |
| chemin d'accès | Chemin d'accès relatif de la branche. Type de données : chaîne |
| repository | Description du référentiel dans lequel la validation a été effectuée. Type de données : objet "repository": { "name": "String", "url": "String" } |
| repository.name | Nom du référentiel. Type de données : chaîne |
| repository.url | URL du référentiel dans l'outil source DevOps . Type de données : chaîne |
| URL | URL du référentiel, telle que \<\< https://github.com/mycompany/mobileplatform \>\>. Type de données : chaîne |
[ ]

### Exemple de demande cURL pour resource=branch

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=branch" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
       "result": {
          "name": "Master",
          "path": "refs/heads/master",
          "repository": {
             "name": "Platform-Mobile",
             "url": "https://github.com/mycompany/mobileplatform"
          }
       }
    }

### Exemple de demande cURL pour resource=commit

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=commit" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
       "result": {
          "repository": {
             "name": "Platform-Mobile",
             "url": "https://github.com/mycompany/mobileplatform"
          },
          "branch": {
             "name": "refs/heads/master"
          },
          "commits": [
             {
                "committer": {
                   "email": "name@email.com"
                },
                "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
                "url": "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6",
                "committedDate": "2022-01-01T08:15:30-05:00",
                "details": [
                   {
                      "action": "edit",
                      "changes": "",
                      "file": "/azure-pipelines.yml",
                      "additions": 1,
                      "deletions": 0,
                      "totalChanges": 1
                   }
                ]
             }
          ]
       }
    }

### Exemple de demande cURL pour resource=repository

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/code/schema?resource=repository" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
        "result": {
            "name": "Platform-Mobile",
            "url": "https://github.com/mycompany/mobileplatform"
        }
    }

## DevOps - GET /devops/onboarding/status {#ariaid-title3}

Renvoie l'état actuel de l'événement d'intégration spécifié qui est traité ou est traité de manière asynchrone par le DevOps service.

### Format d'URL {#devops-GET-onboarding-status__section_tpc_lym_h4b}

URL versionnée : /api/sn_devops/{api_version}/devops/onboarding/status

URL par défaut : /api/sn_devops/devops/onboarding/status

### Paramètres de demande pris en charge

{#devops-GET-onboarding-status__entry__2}{#devops-GET-onboarding-status__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 7. Paramètres de chemin d'accès]

{#devops-GET-onboarding-status__entry__6}

| Nom | Description |
|-|-|
| id | Identificateur unique de l'événement d'intégration dont l'état doit être renvoyé. Cette valeur est fournie dans les résultats de retour du point de terminaison qui a appelé la demande d'événement, comme /devops/onboarding/app ou /devops/onboarding/tool. Type de données : chaîne |
[Tableau 8. Paramètres de requête]

{#devops-GET-onboarding-status__entry__10}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 9. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-onboarding-status__entry__14}{#devops-GET-onboarding-status__accept-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
[Tableau 10. En-têtes de demandes]

{#devops-GET-onboarding-status__entry__18}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-onboarding-status__entry__22}{#devops-GET-onboarding-status__entry-200-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 202 | En attente : la demande d'intégration a été créée et le DevOps service traite la demande. |
| 207 | Réussite partielle : la demande d'intégration a été créée et le DevOps service la traitera. |
| 400 | Échec : l'événement d'intégration a échoué. |
| 404 | Échec : le point de terminaison n'a trouvé aucune demande correspondant à l'ID d'événement spécifié. |
[Tableau 12. Codes d'état]

### Paramètres du corps de réponse

{#devops-GET-onboarding-status__table_rrm_t1n_h4b__entry__2}

| Nom | Description |
|-|-|
| résultat | Résultats de la demande d'intégration. Type de données : objet "result": { "code": "String", "importRequestsSysIds": "[Array], "messageDetails": {Object], "onboardingRequestID": "String", "status": "String" } |
| code.résultat | Code d'état HTTP. Type de données : chaîne |
| result.importRequestsSysIds | Liste des demandes d'importation qui ont été créées dans le cadre de la demande d'intégration. Type de données : tableau de chaînes |
| result.messageDetails | Détails sur la progression de l'événement d'intégration. Type de données : objet "messageDetails": { "apps": [Array], "pipelines": [Array], "plans": [Array], "repositories": [Array], "status": "String", "toolResponse": [Array] } |
| result.messageDetails.apps | Tableau d'objets qui définissent les applications à créer dans l'instance associée ServiceNow . Type de données : tableau "apps": [{ "appId": "String", "message": "String", "name": "String", "status": "String", }] |
| result.messageDetails.apps.appId | Sys_id de l'application qui a été générée lors de l'intégration de l'application. Situé dans la table Applications \[sn_devops_app\]. Type de données : chaîne |
| résultat.messageDétails.applications.message | Message décrivant l'état de l'application d'intégration. Type de données : chaîne |
| result.messageDetails.apps.name | Nom de l'application intégrée. Type de données : chaîne |
| résultat.messageDetails.apps.status | État actuel de l'intégration de l'application. Valeurs possibles : * Échoué * Réussite partielle * Réussite {#devops-GET-onboarding-status__ul_dxj_1sn_h4b} Type de données : chaîne |
| result.messageDetails.pipelines | Liste des pipelines associés à l'événement d'intégration et leurs détails correspondants. Type de données : tableau "pipelines": [{ "changeStepAssociation": [Array], "errors": "String", "message": "String", "name": "String", "status": "String", }] |
| result.messageDetails.pipelines.changeStepAssociation | Tableau d'objets qui décrivent toutes les étapes de changement associées à l'intégration. Type de données : tableau "changeStepAssociation": [{ "changeStepName": "String", "status": "String", "summary": "String", }] |
| result.messageDetails.pipelines.changeStepAssociation.changeStepName | Nom de l'étape de changement. Type de données : chaîne |
| result.messageDetails.pipelines.changeStepAssociation.status | État de l'association d'étapes de changement au pipeline. Valeurs possibles : * Échoué * Réussite {#devops-GET-onboarding-status__ul_dwg_mtn_h4b} Type de données : chaîne |
| result.messageDetails.pipelines.changeStepAssociation.summary | Résumé de l'état de l'association d'étapes de changement. Type de données : chaîne |
| résultat.messageDétails.pipelines.erreurs | Liste des erreurs détectées lors de l'association du pipeline. Type de données : tableau |
| résultat.messageDétails.pipelines.message | Message décrivant l'état de l'association de pipelines. Type de données : chaîne |
| result.messageDetails.pipelines.name | Nom du pipeline. Type de données : chaîne |
| result.messageDetails.pipelines.status | État de l'association de pipelines. Type de données : chaîne |
| résultat.détailsmessage.plans | Liste des plans associés à l'événement d'intégration et leurs détails correspondants. Type de données : tableau "plans": [{ "errors": "String", "message": "String", "name": "String", "status": "String", }] |
| result.messageDetails.plans.errors | Liste des erreurs détectées lors de l'association du plan. Type de données : tableau |
| résultat.messageDétails.plans.message | Message décrivant l'état de l'association de pipelines. Type de données : chaîne |
| result.messageDetails.plans.name | Nom du plan. Type de données : chaîne |
| result.messageDetails.plans.status | État de l'association au régime. Type de données : chaîne |
| result.messageDetails.repositories | Liste des référentiels associés à l'événement d'intégration et leurs détails correspondants. Type de données : tableau "repositories": [{ "configureStatus": {Object}, "name": "String", "status": "String", }] |
| result.messageDetails.repositories.configureStatus | Détails de l'état de configuration du webhook pour le référentiel. Type de données : objet "configureStatus": { "message": "String", "status": "String", } |
| result.messageDetails.repositories.configureStatus.message | Message décrivant l'état actuel de la configuration du webhook. Type de données : chaîne |
| result.messageDetails.repositories.configureStatus.status | État de la configuration du webhook. Type de données : chaîne |
| result.messageDetails.repositories.message | Message décrivant l'état actuel de l'association de référentiels. Type de données : chaîne |
| result.messageDetails.repositories.name | Nom du référentiel. Type de données : chaîne |
| result.messageDetails.repositories.status | État de l'association de référentiels. Type de données : chaîne |
| result.messageDetails.status | État de la demande d'intégration. Valeurs possibles : * Échoué * Réussite partielle * Réussite {#devops-GET-onboarding-status__ul_xtg_3pn_h4b} Type de données : chaîne |
| result.messageDetails.toolResponse | Tableau d'objets qui définissent les outils à intégrer dans l'instance associée ServiceNow . Type de données : tableau "toolResponse": [{ "configureStatus": {Object}, "connectStatus": {Object}, "createStatus": {Object}, "discoveryStatus": {Object}, "name": "String", "status": "String", "type": "String" }] |
| result.messageDetails.toolResponse.configureStatus | Décrit l'état de configuration de l'outil. En cas de succès, il renvoie le status et message. En cas d'erreur, elle renvoie le et error.status Type de données : objet "configureStatus": { "error": "String", "message": "String", "status": "String" } |
| result.messageDetails.toolResponse.configureStatus.error | Erreurs détectées lors de la configuration de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.configureStatus.message | Message qui décrit l'état correct de la configuration de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.configureStatus.status | État de la configuration de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.connectStatus | Décrit l'état de connexion de l'outil. En cas de succès, il renvoie le status et message. En cas d'erreur, elle renvoie le et error.status Type de données : objet "connectStatus": { "error": "String", "message": "String", "status": "String" } |
| result.messageDetails.toolResponse.connectStatus.error | Erreurs détectées lors de la connexion de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.connectStatus.message | Message décrivant l'état réussi de la connexion de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.connectStatus.status | État de la connexion de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.createStatus | Décrit l'état de création de l'outil. En cas de succès, il renvoie le status et message. En cas d'erreur, elle renvoie le et error.status Type de données : objet "createStatus": { "error": "String", "message": "String", "status": "String" } |
| result.messageDetails.toolResponse.createStatus.error | Erreurs détectées lors de la création de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.createStatus.message | Message qui décrit l'état réussi de la création de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.createStatus.status | État de la création de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus | Décrit le statut de détection de l'outil. En cas de succès, il renvoie le status et message. En cas d'erreur, elle renvoie le et error.status Type de données : objet "discoveryStatus": { "error": "String", "imports: [Array], "message": "String", "status": "String" } |
| result.messageDetails.toolResponse.discoveryStatus.error | Erreurs détectées lors de la détection d'outils. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus.imports | Tableau d'objets qui décrivent chaque entité détectée. Type de données : tableau "imports": [{ "details": "String", "id": "String", "status": "String" }] |
| result.messageDetails.toolResponse.discoveryStatus.imports.details | Détails décrivant l'importation effectuée. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus.imports.id | Sys_id de la demande d'importation. Situé dans la table sn_devops_m2m_inbound_event_import_request. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus.imports.status | État de l'importation. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus.message | Message décrivant l'état de la détection d'outils. Type de données : chaîne |
| result.messageDetails.toolResponse.discoveryStatus.status | Statut de la détection d'outils. Type de données : chaîne |
| result.messageDetails.toolResponse.name | Nom de l'outil en cours d'intégration. Type de données : chaîne |
| result.messageDetails.toolResponse.status | État de l'intégration de l'outil. Type de données : chaîne |
| result.messageDetails.toolResponse.type | Type d'outil, par exemple Jira ou Jenkins. Type de données : chaîne |
| result.onboardingRequestID | Identificateur unique de la demande d'intégration. Utilisez cette valeur lors de l'appel du point de terminaison /devops/onboarding/status pour obtenir l'état du processus d'intégration de l'outil associé. Type de données : chaîne |
| Résultat.État | État de la demande d'intégration. Valeurs possibles : * Échoué * Réussite partielle * Réussite {#devops-GET-onboarding-status__ul_o2l_dzn_h4b} Type de données : chaîne |
[ ]

{#devops-GET-onboarding-status__table_rrm_t1n_h4b}  

### Demande cURL

L'exemple suivant montre la demande d'état de l'intégration d'un outil.

    curl -X GET "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?id=IBE0001603" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -u "username":"password" \

<br />

    {
        "result": {
            "code": "207",
            "onboardingRequestID": "IBE0001603",
            "status": "partial-success",
            "messageDetails": {
                "status": "Partial Success",
                "toolResponse": [
                    {
                        "name": "Primary Azure",
                        "type": "Azure DevOps",
                        "status": "Partial Success",
                        "createStatus": {
                            "status": "Success",
                            "message": "Created successfully"
                        },
                        "connectStatus": {
                            "status": "Failed",
                            "error": "Method failed: (/testFirst/_apis/work/boards) with code: 401 - Invalid username/password combo"
                        }
                    },
                    {
                        "name": "Primary Jenkins",
                        "type": "Jenkins",
                        "status": "Success",
                        "createStatus": {
                            "status": "Success",
                            "message": "Created successfully"
                        },
                        "connectStatus": {
                            "status": "Success",
                            "message": "Connected successfully"
                        },
                        "discoveryStatus": {
                            "status": "Success",
                            "message": "Discovered successfully",
                            "imports": [
                                {
                                    "status": "completed",
                                    "id": "2a4d216bdb2d2450fe4fd6a75e9619c3",
                                    "details": "Discovered 1 new job(s) and 3 new pipeline(s)\n"
                                }
                            ]
                        }
                    },
                    {
                        "name": "Primary GitHub",
                        "type": "GitHub",
                        "status": "Success",
                        "createStatus": {
                            "status": "Success",
                            "message": "Created successfully"
                        },
                        "connectStatus": {
                            "status": "Success",
                            "message": "Connected successfully"
                        },
                        "discoveryStatus": {
                            "status": "Success",
                            "message": "Discovered successfully",
                            "imports": [
                                {
                                    "status": "completed",
                                    "id": "7f4d616bdb2d2450fe4fd6a75e9619c2",
                                    "details": "Discovered 5 new repositories. "
                                }
                            ]
                        }
                    },
                    {
                        "name": "Primary Bitbucket",
                        "type": "BitBucket",
                        "status": "Success",
                        "createStatus": {
                            "status": "Success",
                            "message": "Created successfully"
                        },
                        "connectStatus": {
                            "status": "Success",
                            "message": "Connected successfully"
                        },
                        "discoveryStatus": {
                            "status": "Success",
                            "message": "Discovered successfully",
                            "imports": [
                                {
                                    "status": "completed",
                                    "id": "815da16bdb2d2450fe4fd6a75e9619d0",
                                    "details": "Discovered 11 new repositories. "
                                }
                            ]
                        }
                    },
                    {
                        "name": "Primary Gitlab",
                        "type": "GitLab",
                        "status": "Partial Success",
                        "createStatus": {
                            "status": "Success",
                            "message": "Created successfully"
                        },
                        "connectStatus": {
                            "status": "Failed",
                            "error": "The current operation ended in state: ERROR"
                        }
                    }
                ],
                "importRequestsSysIds": [
                    "2a4d216bdb2d2450fe4fd6a75e9619c3",
                    "7f4d616bdb2d2450fe4fd6a75e9619c2",
                    "815da16bdb2d2450fe4fd6a75e9619d0"
                ]
            }
        }
    }

### Demande cURL {#devops-GET-onboarding-status__example_f2b_gzn_h4b}

L'exemple suivant montre l'état de la demande d'intégration d'une application.

    curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/status?onboardingRequestID=IBE0001604" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -u "username":"password" \

<br />

    {
        "result": {
            "code": "207",
            "onboardingRequestID": "IBE0001604",
            "status": "partial-success",
            "messageDetails": {
                "status": "Partial Success",
                "apps": [
                    {
                        "name": "Bike Rentals Service",
                        "status": "Success",
                        "appId": "c7fd696bdb2d2450fe4fd6a75e961993",
                        "message": "App by name 'Bike Rentals Service' has been successfully created"
                    }
                ],
                "pipelines": [
                    {
                        "name": "Bike Rentals",
                        "status": "Success",
                        "message": "Successfully associated with app 'Bike Rentals Service'",
                        "changeStepAssociation": [
                            {
                                "status": "Success",
                                "changeStepName": "Prod",
                                "summary": "Change step with name 'Prod' has been created"
                            }
                        ]
                    }
                ],
                "repositories": [
                    {
                        "name": "nowdevops01/BikeRentals",
                        "status": "Partial Success",
                        "message": "Successfully associated with app 'Bike Rentals Service'",
                        "configureStatus": {
                            "status": "Failed",
                            "message": "Webhook configuration failed due to empty credentials for repository by name nowdevops01/BikeRentals in tool Primary GitHub"
                        }
                    }
                ],
                "plans": [
                    {
                        "status": "Failed",
                        "name": "testFirst",
                        "errors": [
                            "Plan by name 'testFirst' does not exist in tool Primary Azure"
                        ]
                    }
                ]
            }
        }
    }

## DevOps - GET /devops/orchestration/changeControl {#ariaid-title4}

Vérifie si la tâche d'orchestration est sous contrôle de changement.

### Format d'URL {#devops-GET-orch-changeControl__section_eky_43h_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/changeControl

URL par défaut : /api/sn_devops/devops/orchestration/changeControl

### Paramètres de demande pris en charge

{#devops-GET-orch-changeControl__entry__2}{#devops-GET-orch-changeControl__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 13. Paramètres de chemin d'accès]

{#devops-GET-orch-changeControl__entry__6}

| Nom | Description |
|-|-|
| orchestrationTaskName | Nom de la tâche d'orchestration à vérifier. Type de données : chaîne |
| testConnection (en anglais seulement) | Marqueur indiquant s'il faut tester la connexion de bout en bout entre l'instance et l'outil DevOps . Valeurs valides : * vrai : teste la connexion de bout en bout. * faux : ne testez pas la connexion de bout en bout. {#devops-GET-orch-changeControl__ul_tkc_zgt_rkb} Type de données : booléennes Valeur par défaut : false |
| toolId | Requis. Sys_id de l'outil d'orchestration. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Type de données : chaîne |
| Type d'outil | Type d'outil. Valeurs valides : Jenkins Type de données : chaîne |
[Tableau 14. Paramètres de requête]

{#devops-GET-orch-changeControl__entry__16}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 15. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-changeControl__entry__20}{#devops-GET-orch-changeControl__accept-row-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
[Tableau 16. En-têtes de demandes]

{#devops-GET-orch-changeControl__entry__26}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-changeControl__entry__30}{#devops-GET-orch-changeControl__entry-200-status-code}{#devops-GET-orch-changeControl__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 18. Codes d'état]

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

{#devops-GET-orch-changeControl__entry__38}

| Nom | Description |
|-|-|
| changeControl | Marqueur indiquant si la tâche d'orchestration est sous contrôle de changement. Valeurs possibles : * true : sous contrôle de changement. * false : pas sous contrôle de changement {#devops-GET-orch-changeControl__ul_qj3_l1r_33b} Type de données : booléennes |
[ ]

### Sous contrôle des changements et à l'aide de l'API v2

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v2/devops/orchestration/changeControl?toolId=1c219f7e8708f1508ca933383cbb3543&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins" 
    -H "accept: application/json"\
    -H "Authorization: sn_devops.DevOpsToken 1c219f7e8708f1508ca933383cbb3543:FtN13dfDuahYEtdfDvhHorh0QPp9na3u"

Corps de réponse.

    {
    "result": {
      "changeControl": true,
      "status": "Success" 
      } 
    }

### Non sous contrôle des changements et utilisant l'API v1

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins" 
    -H "accept: application/json"\
    -u "username":"password"

Corps de réponse.

    {
        "result": {
            "changeControl": false
        }
    }

## DevOps - GET /devops/orchestration/changeInfo {#ariaid-title5}

Récupère les détails de la demande de changement pour une exécution de pipeline d'orchestration spécifiée.

### Format d'URL

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/changeInfo

URL par défaut : /api/sn_devops/devops/orchestration/changeInfo

### Paramètres de demande pris en charge

{#devops-GET-orch-changeInfo__entry__2}{#devops-GET-orch-changeInfo__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 19. Paramètres de chemin d'accès]

{#devops-GET-orch-changeInfo__entry__6}

| Nom | Description |
|-|-|
| branchName | Nom de la branche associée à la tâche d'orchestration. Remarque : Vous devez fournir ce paramètre lors de la référence à des pipelines à plusieurs branches, sinon la réponse peut inclure des détails de changement incorrects. Type de données : chaîne |
| buildNumber | Requis. Numéro de build du pipeline dans l'outil d'orchestration. Type de données : chaîne |
| pipelineName | Facultatif pour les projets Jenkins Freestyle ou Maven, requis pour tous les autres. Nom du pipeline d'orchestration. Type de données : chaîne |
| projectName | Requis pour les projets Jenkins Freestyle ou Maven, facultatif pour tous les autres. Nom du projet de l'outil d'orchestration. Type de données : chaîne |
| nom d'étape | Facultatif pour les projets Jenkins Freestyle ou Maven, requis pour tous les autres. Nom de l'étape d'orchestration. Type de données : chaîne Longueur maximale : 160 |
| toolId | Requis. Sys_id de l'outil d'orchestration. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Type de données : chaîne |
[Tableau 20. Paramètres de requête]

{#devops-GET-orch-changeInfo__entry__20}

| Nom | Description |
|-|-|
| Aucun |   |
[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. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-changeInfo__entry__24}{#devops-GET-orch-changeInfo__accept-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
[Tableau 22. En-têtes de demandes]

{#devops-GET-orch-changeInfo__entry__30}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-changeInfo__entry__34}{#devops-GET-orch-changeInfo__entry-200-status-code}{#devops-GET-orch-changeInfo__entry-400-status-code}{#devops-GET-orch-changeInfo__entry-404-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 404 | Introuvable. L'élément demandé est introuvable. |
[Tableau 24. Codes d'état]

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

{#devops-GET-orch-changeInfo__entry__42}

| Nom | Description |
|-|-|
| changeFound (Trouvé modifié) | Marqueur indiquant si la demande de changement a été localisée. Valeurs possibles : * true : la demande de changement a été trouvée. * faux : la demande de changement est introuvable. Type de données : booléennes |
| Numéro | Numéro de la demande de changement. Type de données : chaîne |
| phase | Phase actuelle. Type de données : chaîne |
| phase_state | État de la phase en cours. Type de données : chaîne |
| Priorité | Priorité de la demande de changement. La priorité est basée sur l'impact et l'urgence de la demande. Ce champ identifie la rapidité avec laquelle le Centre de services doit traiter la demande. Valeurs possibles : * 1 : critique * 2 : Élevé * 3 : Modéré * 4 : Faible Type de données : chaîne |
| risk | Niveau de risque du changement. Valeurs possibles : * Faible * Élevé * Modéré Type de données : chaîne |
| État | État de la demande de changement. Valeurs possibles : * Évaluer * Autoriser * Annulé * Fermé * Implémenter * Nouvelle * Revue * Planifié Type de données : chaîne Par défaut : Nouveau |
| sys_id | Sys_id de la demande de changement. Type de données : chaîne |
| type | Type de la demande de changement. Valeurs possibles : * Urgence * Normal * Standard Type de données : chaîne |
| URL | URL de la demande de changement dans l'instance associée ServiceNow . Type de données : chaîne |
[ ]

### Demande cURL

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?toolId=1487f457db642810765555535e9619d3&pipelineName=Automation/apps HR/family release&stageName=deployfamilyrelease&buildNumber=1639"  
    -H "accept: application/json"\ 
    -u "username":"password"

    {  
      "result": {  
        "changeFound": true,  
        "sys_id": "ee89341bdb642810765555535e96196e",  
        "number": "CHG0030001",  
        "type": "normal",  
        "state": "0",  
        "phase": "requested",  
        "phase_state": "open",  
        "priority": "4",  
        "risk": "4",  
        "url": "https://instance.servicenow.com/change_request.do?sys_id=ee89341bdb642810765555535e96196e",  
        "changeAssignmentGroup": "Change Management", 
        "changeApprovers": "Ron Kettering, Christen Mitchell, Howard Johnson, Luke Wilson", 
        "plannedStartDate": "2023-02-05 08:00:00", 
        "plannedEndDate": "2024-02-05 08:00:00" 
      }  
    }

## DevOps - GET /devops/orchestration/schema {#ariaid-title6}

Renvoie l'objet de schéma pour une ressource d'orchestration spécifiée.
Une fois que vous avez l'objet de schéma requis, utilisez-le pour créer le corps de la requête pour votre appel POST correspondant ; /orchestration/orchestrationTask ou /orchestration/taskExecution.  
Remarque :  
Ce point de terminaison renvoie uniquement les éléments de corps de la demande qui sont requis.

### Format d'URL {#devops-GET-orch-schema__section_bxk_zlh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/schema

URL par défaut : /api/sn_devops/devops/orchestration/schema

### Paramètres de demande pris en charge

{#devops-GET-orch-schema__entry__2}{#devops-GET-orch-schema__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 25. Paramètres de chemin d'accès]

{#devops-GET-orch-schema__entry__6}

| Nom | Description |
|-|-|
| resource | Type de schéma de ressources à renvoyer. Valeurs valides (insensibles à la casse) : * build_details * rappel * orchestration_task * task_execution {#devops-GET-orch-schema__ul_jqn_d4p_33b} Type de données : chaîne |
[Tableau 26. Paramètres de requête]

{#devops-GET-orch-schema__entry__10}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 27. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-schema__entry__14}{#devops-GET-orch-schema__accept-row-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
[Tableau 28. En-têtes de demandes]

{#devops-GET-orch-schema__entry__18}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-schema__entry__22}{#devops-GET-orch-schema__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Demande terminée avec succès. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 30. Codes d'état]

### Paramètres du corps de réponse

{#devops-GET-orch-schema__entry__30}

| Nom | Description |
|-|-|
| URL de rappel | URL du rappel. Type de données : chaîne |
| endDateTime | Date/heure de fin de l'exécution de la tâche. Type de données : chaîne |
| nom | Nom de la tâche d'orchestration. Type de données : chaîne |
| Numéro | Numéro d'exécution de la tâche. Identique à un numéro d'incident. Type de données : chaîne |
| orchestrationTaskDetails | Description de la tâche d'orchestration. Type de données : objet "orchestrationTaskDetails": { "message": "String", "name": "String", "triggerType": "String", "url": "String" } {#devops-GET-orch-schema__codeblock-orch-orchestrationTaskDetails-devops} |
| orchestrationTaskDetails.message | Message texte de forme libre. Type de données : chaîne |
| orchestrationTaskDetails.name | Nom de la tâche d'orchestration. Type de données : chaîne |
| orchestrationTaskDetails.triggerType | La façon dont la tâche d'orchestration a été démarrée. Type de données : chaîne |
| orchestrationTaskDetails.url | URL de la tâche d'orchestration de l'outil d'orchestration associé. Type de données : chaîne |
| orchestrationTaskURL | URL de la tâche d'orchestration. Type de données : chaîne |
| résultat | Résultat de l'exécution de la tâche. Valeurs valides : * Échoué * Réussite Type de données : chaîne |
| startDateTime | Date/heure auxquelles l'exécution de la tâche a commencé. Type de données : chaîne |
| taskExecutionURL | URL de la tâche à exécuter. Type de données : chaîne |
| Type de déclencheur | La façon dont la tâche d'orchestration a été démarrée. Valeurs valides : * scm : la validation du code de l'outil Git/scm a déclenché la tâche. * en amont : la tâche en amont a déclenché cette tâche. * user : l'utilisateur a démarré manuellement la tâche. {#devops-GET-orch-schema__ul_trr_3wp_j3b} Type de données : chaîne |
| URL | URL de la tâche d'orchestration de l'outil d'orchestration associé. Type de données : chaîne |
[ ]

### Exemple de requête cURL avec resource=task_execution

    curl -X GET \
    'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
    -H 'Accept: application/json'\
    -u 'username':'password'

    {
    "result": {
      "number": 40,
      "url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/40/",
      "startDateTime": "1970-01-01T08:15:30-05:00",
      "endDateTime": "1970-01-01T08:25:30-05:00",
      "triggerType": "upstream",
      "result": "Success",
      "orchestrationTaskDetails": {
        "name": "Mobile-Platform-CI",
        "url": "https://jenkins.mycompany.com:8080/job/Mobile-Platform-CI/"
        }
      }
    }

### Exemple de requête cURL avec resource=orchestration_task

    curl -X GET \ 
    'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=orchestration_task' \
    -H 'Accept: application/json'\
    -u 'username':'password' 

    { 
    "result": { 
      "name": "Mobile-Platform-CI", 
      "url": "https://jenkins.mycompnay.com:8080/job/Mobile-Platform-CI/" 
      } 
    } 

### Exemple de requête cURL avec resource=callback

    curl -X GET \
    'https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/schema?resource=task_execution' \
    -H 'Accept: application/json' \
    -u 'username':'password'

    { 
      "result": { 
        "callbackURL": "http://127.0.0.1:8090/jenkins/sn-devops/9b0feb79-f0b9-4661-83ef-2861b8924784", 
        "orchestrationTaskURL": "http://127.0.0.1:8090/jenkins/job/felipe-downstream/", 
        "orchestrationTaskDetails": { 
          "message": "Started by upstream project \"felipe-upstream\" build number 27", 
          "triggerType": "upstream" 
        } 
      } 
    } 

## DevOps - GET /devops/orchestration/stepMapping {#ariaid-title7}

Vérifie que les informations transmises sont valides pour la création d'une tâche d'orchestration et qu'elles sont valides pour être associées à une étape précédemment créée.

### Format d'URL {#devops-GET-orch-stepMapping__section_bly_3fh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/stepMapping

URL par défaut : /api/sn_devops/devops/orchestration/stepMapping

### Paramètres de demande pris en charge

{#devops-GET-orch-stepMapping__entry__2}{#devops-GET-orch-stepMapping__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 31. Paramètres de chemin d'accès]

{#devops-GET-orch-stepMapping__entry__6}{#devops-GET-orch-stepMapping__row-stepMap-branchName}{#devops-GET-orch-stepMapping__row-stepMap-isMultiBranch}{#devops-GET-orch-stepMapping__row-stepMap-parentStageName}{#devops-GET-orch-stepMapping__row-stepMap-parentStageURL}{#devops-GET-orch-stepMapping__row-stepMap-toolId}{#devops-GET-orch-stepMapping__row-stepMap-toolType}

| Nom | Description |
|-|-|
| branchName | Nom de la branche associée à la tâche d'orchestration. Type de données : chaîne |
| isMultiBranch (en anglais seulement) | Si l'outil d'orchestration est Jenkins, marqueur indiquant si le projet est de type Multibranche. Valeurs valides : * vrai : le projet est de type multibranche. * false : le projet n'est pas de type Multibranch. {#devops-GET-orch-stepMapping__ul_d2g_rht_rkb} Type de données : booléennes Valeur par défaut : false |
| parentStageName (en anglais seulement) | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, nom de la tâche d'orchestration parente. Type de données : chaîne |
| parentStageURL | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, il s'agit de l'URL de la tâche d'orchestration parente. Type de données : chaîne |
| orchestrationTaskName | Requis. Nom de la tâche d'orchestration. Type de données : chaîne |
| orchestrationTaskURL | Requis. URL de la tâche d'orchestration. Remarque : Doit être codé en pourcentage (%), par exemple https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F.Type de données : chaîne |
| testConnection (en anglais seulement) | Marqueur indiquant s'il faut tester la connexion de bout en bout entre l'instance et l'outil DevOps . Valeurs valides : * vrai : teste la connexion de bout en bout. * faux : ne testez pas la connexion de bout en bout. {#devops-GET-orch-stepMapping__ul_tkc_zgt_rkb} Type de données : booléennes Valeur par défaut : false |
| toolId | Requis. Sys_id de l'outil d'orchestration. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Type de données : chaîne |
| Type d'outil | Requis. Type d'outil. Valeurs valides : Jenkins Type de données : chaîne |
[Tableau 32. Paramètres de requête]

{#devops-GET-orch-stepMapping__entry__26}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 33. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-stepMapping__entry__30}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
[Tableau 34. En-têtes de demandes]

{#devops-GET-orch-stepMapping__entry__34}

| 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. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-orch-stepMapping__entry__38}{#devops-GET-orch-stepMapping__entry-200-status-code}{#devops-GET-orch-stepMapping__entry-401-status-code}{#devops-GET-orch-stepMapping__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 401 | Non autorisé. Les informations d'identification de l'utilisateur sont incorrectes ou n'ont pas été transmises. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 36. Codes d'état]

### Paramètres du corps de réponse

{#devops-GET-orch-stepMapping__table_xb5_513_bmb__entry__2}

| Élément | Description |
|-|-|
| statut | Marqueur indiquant si la vérification a réussi. Valeurs valides : * true : la vérification a réussi. * faux : échec de la vérification. {#devops-GET-orch-stepMapping__ul_ksj_tnz_dcc} Type de données : booléennes |
| Étape valide | Marqueur indiquant si les informations envoyées sont valides. Valeurs valides : * true : les informations envoyées sont valides. * false : les informations envoyées ne sont pas valides. {#devops-GET-orch-stepMapping__ul_sck_xnz_dcc} Type de données : booléennes |
[ ]

{#devops-GET-orch-stepMapping__table_xb5_513_bmb}  

### Exemple de demande cURL

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
     -H "Accept: application/json" \
     -u "username":"password"

Résultats si les informations sont valides.

    {
      "result": {
        "stepValid": true,
        "status": "Success"
      }
    }

### Exemple de demande cURL

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&orchestrationTaskName=Platform-Analytics-UAT-Deployment&orchestrationTaskURL=https%253A%252F%252Fjenkins.mycompany.com%253A8080%252Fjob%252FMobile-Platform-deploy%252F&toolType=jenkins "
     -H "Accept: application/json" \
     -u "username":"password"

Résultats si les informations ne sont pas valides.

    {
    "result": {
      "stepValid": false,
      "status": "Success"
    }

## DevOps - GET /devops/plan/schema {#ariaid-title8}

Renvoie l'objet de schéma pour un plan spécifique : application, version ou élément de travail.
Une fois que vous avez l'objet de schéma requis, utilisez-le pour créer le corps de la requête pour votre appel POST correspondant ; POST /plan/app, POST /plan/version ou POST /plan/workitem.  
Remarque :  
Ce point de terminaison renvoie uniquement les éléments de corps de la demande qui sont requis.

### Format d'URL {#devops-GET-plan-schema__section_bcs_ynh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/plan/schema

URL par défaut : /api/sn_devops/devops/plan/schema

### Paramètres de demande pris en charge

{#devops-GET-plan-schema__entry__2}{#devops-GET-plan-schema__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 37. Paramètres de chemin d'accès]

{#devops-GET-plan-schema__entry__6}

| Nom | Description |
|-|-|
| resource | Type de schéma de ressources à renvoyer. Valeurs valides (insensibles à la casse) : * application * version * work_item {#devops-GET-plan-schema__ul_s3s_24p_33b} Type de données : chaîne |
[Tableau 38. Paramètres de requête]

{#devops-GET-plan-schema__entry__10}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 39. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-plan-schema__entry__14}{#devops-GET-plan-schema__accept-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
[Tableau 40. En-têtes de demandes]

{#devops-GET-plan-schema__entry__18}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-GET-plan-schema__entry__22}{#devops-GET-plan-schema__entry-200-status-code}{#devops-GET-plan-schema__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 401 | Authentification non valide ou manquante. |
| 404 | Introuvable. L'enregistrement spécifié est introuvable. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 42. Codes d'état]

### Paramètres du corps de réponse

{#devops-GET-plan-schema__entry__32}

| Nom | Description |
|-|-|
| application | Description de l'application à associer à la version. Type de données : objet "app": { "createdDateTime": "String", "id": "String", "shortDescription": "String", "team": {Object}, "url": "String" } |
| app.createdDateTime | Date/heure de création de l'application dans l'outil source DevOps . Type de données : chaîne |
| app.id | Identificateur unique de l'application. Généré par l'outil de planification source. Type de données : chaîne |
| app.shortDescription | Brève description de l'application associée. Type de données : chaîne |
| app.équipe | Description de l'équipe associée à l'application. Type de données : objet "team": { "id": "String", "name": "String" } |
| app.team.id | Identificateur unique de l'équipe associée à l'application. Généré par l'outil de planification source. Type de données : chaîne |
| app.team.name | Nom de l'équipe associée à l'application. Type de données : chaîne |
| app.url | URL de l'application sur le site de l'outil de planification source. Type de données : chaîne |
| assignedTo | Description de la personne à laquelle l'élément de travail est affecté. Type de données : objet "assignedTo": { "email": "String", "id": "String", "name": "String", "userName": "String" } |
| assignedTo.email | Adresse e-mail de la personne affectée à l'élément de travail. Type de données : chaîne |
| assignedTo.id | Identificateur unique de la personne affectée à l'élément de travail. Type de données : chaîne |
| assignedTo.name | Nom de la personne affectée à l'élément de travail. Type de données : chaîne |
| assignedTo.userName | Nom d'utilisateur de la personne affectée à l'élément de travail. Type de données : chaîne |
| createDateTime (en anglais seulement) | Date et heure de création de l'application, de la version ou de l'élément de travail. Type de données : chaîne |
| id | Identificateur unique de l'application, de la version ou de l'élément de travail. Généré par l'outil de planification source. Type de données : chaîne |
| nom | Nom de l'application. Type de données : chaîne |
| chemin d'accès | Chemin d'accès relatif à l'application. Type de données : chaîne |
| shortDescription | Brève description de l'application, de la version ou de l'élément de travail. Type de données : chaîne |
| État | État de l'élément de travail. Généré par l'outil de planification source. Type de données : chaîne |
| équipe | Description de l'équipe associée à l'application. Type de données : objet "team": { "id": "String", "name": "String" } |
| team.id | Identificateur unique de l'équipe associée à l'application. Généré par l'outil de planification source. Type de données : chaîne |
| team.name | Nom de l'équipe associée à l'application. Type de données : chaîne |
| type | Type d'élément de travail. Généré par l'outil de planification. Type de données : chaîne |
| URL | URL à utiliser pour accéder à l'application, à la version ou à l'élément de travail. Type de données : chaîne |
| version | Tableau décrivant la version. Type de données : objet "version": { "app": {Object}, "createdDateTime": "String", "id": "String", "shortDescription": "String", "url": "String" } |
| version.app | Description de l'application à associer à la version. Type de données : objet "app": { "createdDateTime": "String", "id": "String", "shortDescription": "String", "team": {Object}, "url": "String" } |
| version.app.createdDateTime | Date/heure de création de la version sur l'outil source DevOps . Type de données : chaîne |
| version.app.id | Identificateur unique de l'application. Généré par l'outil de planification source. Type de données : chaîne |
| version.app.shortDescription | Brève description de l'application associée. Type de données : chaîne |
| version.app.team | Description de l'équipe associée à l'application. Type de données : objet "team": { "id": "String", "name": "String" } |
| version.app.team.id | Identificateur unique de l'équipe associée à l'application. Généré par l'outil de planification source. Type de données : chaîne |
| version.app.team.name | Nom de l'équipe associée à l'application. Type de données : chaîne |
| version.app.url | URL de l'application sur le site de l'outil de planification source. Type de données : chaîne |
| version.createdDateTime | Date/heure de création de la version sur l'outil source DevOps . Type de données : chaîne |
| version.id | Identificateur unique de la version. Généré par l'outil de planification source. Type de données : chaîne |
| version.shortDescription | Brève description de la version associée. Type de données : chaîne |
| version.url | URL de la version sur le site de l'outil de planification source. Type de données : chaîne |
[ ]

### Exemple de demande cURL pour resource=app

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=app" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
      "result": {
        "id": "PRODUCT1234",
        "shortDescription": "Mobile UI",
        "createdDateTime": "1970-01-01T08:15:30-05:00",
        "team": {
          "name": "Mobile UI",
          "id": "f0ca45679323008b52f3b457415ae6"
        },
        "url": "https://jira.com/mycompany/browse/PRODUCT-125"
      }
    }

### Exemple de demande cURL pour resource=version

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=version" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
      "result": {
        "id": "REL1234",
        "shortDescription": "APIs Release",
        "createdDateTime": "1970-01-01T08:15:30-05:00",
        "app": {
          "id": "PRODUCT1234",
          "shortDescription": "Mobile UI",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "team": {
            "name": "Mobile UI",
            "id": "f0ca45679323008b52f3b457415ae6"
          },
          "url": "https://jira.com/mycompany/browse/PRODUCT-125"
        },
        "url": "https://jira.com/mycompany/browse/REL-125"
      }
    }

### Exemple de demande cURL pour resource=work_item

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=work_item" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"

    {
      "result": {
        "id": "STR1234",
        "type": "Story",
        "shortDescription": "Planning API Spec",
        "state": "In-progress",
        "createdDateTime": "1970-01-01T08:15:30-05:00",
        "assignedTo": {
          "name": "Leo Neo",
          "userName": "lenn",
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "email": "lenn@smithworksinc.com"
        },
        "version": {
          "id": "REL1234",
          "shortDescription": "APIs Release",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "app": {
            "id": "PRODUCT1234",
            "shortDescription": "Mobile UI",
            "createdDateTime": "1970-01-01T08:15:30-05:00",
            "team": {
              "name": "Mobile UI",
              "id": "f0ca45679323008b52f3b457415ae6"
            },
            "url": "https://jira.com/mycompany/browse/PRODUCT-125"
            },
            "url": "https://jira.com/mycompany/browse/REL-125"
        },
        "app": {
          "id": "PRODUCT1234",
          "shortDescription": "Mobile UI",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "team": {
            "name": "Mobile UI",
            "id": "f0ca45679323008b52f3b457415ae6"
          },
          "url": "https://jira.com/mycompany/browse/PRODUCT-125"
        },
        "url": "https://jira.com/mycompany/browse/HALOKEY-25"
      }
    }

## DevOps - POST /devops/artifact/inscription {#ariaid-title9}

Permet aux outils d'orchestration d'enregistrer les artefacts dans une ServiceNow instance.
Ce point de terminaison crée de nouveaux artefacts et versions d'artefacts et les associe à des validations. Ce qui suit décrit le flux de processus de point de terminaison :

* Si le toolId est transmis dans la demande, le point de terminaison valide que l'outil existe au sein de l'instance. Il vérifie également si le référentiel d'artefacts spécifié existe et, dans artifacts.repositoryName le cas contraire, le crée sous l'outil d'artefact associé.
* Si le n'est toolId pas transmis dans la requête, un référentiel est créé, mais il n'est lié à aucun outil d'artefact.
* Il vérifie ensuite si l'artefact spécifié existe déjà, et si artifacts.name ce n'est pas le cas, le crée sous le référentiel associé.
* Si le artifact.version est transmis dans la demande :
  * S'il n'existe pas, un nouvel enregistrement de version d'artefact est créé dans la table Version d'artefact \[sn_devops_artifact_version\] associée.
  * Le point de terminaison recherche ensuite les exécutions de tâches associées en fonction des détails de build fournis (pipelineName ou projectName, taskExecutionNumber, branchNameet stageName) et du orchestrationToolId paramètre.
  * Si une exécution de tâche est trouvée et que son post-traitement est terminé, la version de l'artefact est liée à l'exécution de la tâche et stockée dans la table Artefact vers TaskExecution \[sn_devops_m2m_artifact_execution\]. Les validations liées à ces exécutions de tâches sont également associées à la version de l'artefact et stockées dans la table Version d'artefact à valider \[sn_devops_m2m_artifact_version_commit\]. Toutes les validations liées à des exécutions de tâches précédentes qui n'ont pas créé d'artefact sont également associées à la version de l'artefact.
  * Si une exécution de tâche est trouvée et que son post-traitement n'est pas terminé, la demande est conservée dans la table Demande intermédiaire d'artefact \[sn_devops_artifact_staging\]. La demande intermédiaire contient une référence à l'exécution de la tâche.
  * Si aucune exécution de tâche n'est trouvée, la demande est conservée dans la table intermédiaire. La demande intermédiaire contient les détails de la version.
  {#devops-POST-artifact-registration__ul_urn_t4g_nkb}
* Si le n'est artifact.version pas transmis, la version de l'artefact est récupérée en appelant le point de terminaison /devops/tool/artifact si votre outil artefact prend en charge les webhooks ou via un flux secondaire personnalisé qui récupère la version de l'artefact à partir de l'outil d'artefact.
{#devops-POST-artifact-registration__ul_cny_xqg_nkb}

Pour plus d'informations sur les artefacts, consultez [Utilisation de l'accélération du changement DevOps pour les versions](https://www.servicenow.com/docs/access?context=using-dev-ops-release-change&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).

### Format d'URL {#devops-POST-artifact-registration__section_ck2_ksh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/artifact/registration

URL par défaut : /api/sn_devops/devops/artifact/registration

### Paramètres de demande pris en charge

{#devops-POST-artifact-registration__entry__2}{#devops-POST-artifact-registration__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 43. Paramètres de chemin d'accès]

{#devops-POST-artifact-registration__entry__6}

| Nom | Description |
|-|-|
| orchestrationToolId | Requis. Sys_id de l'outil d'orchestration associé à l'artefact. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Le point de terminaison utilise ces informations pour localiser les informations sur l'exécution des tâches. Type de données : chaîne |
| toolId | Sys_id de l'outil d'artefact associé à l'artefact. Situé dans la table Outil d'artefact \[sn_devops_artifact_tool\]. Type de données : chaîne |
[Tableau 44. Paramètres de requête]

{#devops-POST-artifact-registration__entry__12}

| Nom | Description |
|-|-|
| Artefacts | Au moins une entrée est requise. Tableau d'objets dans lequel chaque objet identifie de manière unique une version d'artefact à enregistrer. Type de données : tableau "artifacts": [ { "name": "String", "repositoryName": "String", "semanticVersion": "String", "version": "String" } ] |
| artifacts.name | Requis. Nom du fichier de l'artefact. Type de données : chaîne Longueur maximale : 160 caractères |
| artifacts.repositoryName | Requis. Nom du référentiel de l'artefact. Si l'enregistrement de référentiel spécifié n'existe pas, il est créé. Type de données : chaîne Longueur maximale : 160 caractères |
| artefacts.semanticVersion | Version sémantique de l'artefact. Type de données : chaîne Format : MAJEUR. MINEUR. RAPIÉCER Exemples de valeurs possibles : * 2.0.0 * 2.0.0-rc.2 * 2.0.0-RC.1 * 1.0.0-bêta {#devops-POST-artifact-registration__ul_it5_3tx_nkb} Longueur maximale : 160 caractères Par défaut : null |
| artefacts.version | Obligatoire en cas toolId d'échec. Version de l'artefact. Type de données : chaîne Format : MAJEUR. MINEUR Longueur maximale : 160 caractères Par défaut : null |
| branchName | Obligatoire s'il s'agit d'un projet à plusieurs branches. Nom de la branche dans le référentiel où l'artefact est stocké. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| pipelineName | Obligatoire en cas projectName d'échec. Nom du pipeline. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| projectName | Obligatoire en cas pipelineName d'échec. Nom du projet au format libre. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| nom d'étape | Obligatoire en cas pipelineName de réussite. Nom de scène. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
[Tableau 45. 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. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-artifact-registration__entry__32}{#devops-POST-artifact-registration__accept-JSON-only-entry-RESTAPI}{#devops-POST-artifact-registration__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 46. En-têtes de demandes]

{#devops-POST-artifact-registration__entry__40}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-artifact-registration__entry__44}

| Code d'état | Description |
|-|-|
| 200 | Réussite. Réussite avec le corps de la réponse. |
| 201 | Créé. Réussite avec le corps de la réponse. |
| 400 | Demande incorrecte. L'URI de la demande ne correspond pas aux API du système ou l'opération a échoué pour des raisons inconnues. Des en-têtes non valides peuvent également être à l'origine de cette erreur. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 48. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-artifact-registration__entry__54}

| Nom | Description |
|-|-|
| réponse | Résultats de la demande d'enregistrement de l'artefact. Type de données : objet "response": { "artifact": {Object}, "artifact_register_requests": {Object}, "artifact_repository": {Object}, "artifact_version": {Object} } |
| artefact.réponse | Résultats pour chaque artefact traité. Type de données : objet "artifact": { "create": [Array], "found": [Array], "update": [Array] } |
| réponse.artefact.créer | Si la demande a créé des enregistrements d'artefacts, la liste des sys_ids des enregistrements créés dans la table Artefacts \[sn_devops_artifact\]. Type de données : tableau "create": [ { "id": "String" } ] |
| response.artifact.create.id | Sys_id de l'enregistrement d'artefact créé par la demande. Type de données : chaîne |
| Réponse.Artefact.Trouvé | Si un artefact existe déjà dans la table Artefacts, liste des sys_ids des enregistrements d'artefacts existants. Remarque : Aucune modification n'est apportée aux packages existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.artifact.found.id | Sys_id de l'enregistrement d'artefact existant. Type de données : chaîne |
| Réponse.Artefact.Mise à jour | Actuellement inutilisé |
| response.artifact.update.id | Actuellement inutilisé |
| response.artifact_register_requests | Résultats des demandes de registre d'artefacts qui n'ont pas terminé leur traitement et qui ont été stockées dans la table Demande intermédiaire d'artefact. Type de données : objet "artifact_register_requests": { "create": [Array], "found": [Array], "update": [Array] } |
| response.artifact_register_requests.créer | Si la demande a créé des enregistrements intermédiaires d'artefacts, la liste des sys_ids des enregistrements créés. Type de données : tableau "create": [ { "id": "String" } ] |
| response.artifact_register_requests.create.id | Sys_id de l'enregistrement intermédiaire de l'artefact créé par la demande. Type de données : chaîne |
| response.artifact_register_requests.trouvé | Si des artefacts ont déjà des enregistrements intermédiaires d'artefacts associés, la liste des sys_ids des enregistrements intermédiaires d'artefacts existants. Remarque : Aucune modification n'est apportée aux packages existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.artifact_register_requests.trouvé.id | Sys_id d'un enregistrement intermédiaire d'artefact existant. Type de données : chaîne |
| response.artifact_register_requests.mettre à jour | Actuellement inutilisé |
| response.artifact_register_requests.update.id | Actuellement inutilisé |
| response.artifact_repository | Résultats pour tous les enregistrements du référentiel d'artefacts qui ont été manipulés pendant le traitement de la demande. Type de données : objet "artifact_repository": { "create": [Array], "found": [Array], "update": [Array] } |
| response.artifact_repository.créer | Si des référentiels d'artefacts ont été créés par la demande, la liste des sys_ids des enregistrements créés. Type de données : tableau "create": [ { "id": "String" } ] |
| response.artifact_repository.create.id | Sys_id de l'enregistrement du référentiel de l'artefact créé par la demande. Type de données : chaîne |
| response.artifact_repository.trouvé | Si des enregistrements de référentiel d'artefacts utilisés dans la demande de registre existent déjà, la liste des sys_ids des enregistrements existants. Remarque : Aucune modification n'est apportée aux packages existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.artifact_repository.trouvé.id | Sys_id d'un enregistrement de référentiel d'artefact existant utilisé par la demande. Type de données : chaîne |
| response.artifact_repository.mettre à jour | Si le point de terminaison met à jour le marqueur de suivi sur un référentiel sur vrai (à partir de faux), il s'agit de la liste des sys_ids des enregistrements de référentiel qui ont été modifiés. Type de données : tableau "update": [ { "id": "String" } ] |
| response.artifact_repository.update.id | Sys_id de l'enregistrement du référentiel dont le marqueur de suivi a été modifié. Type de données : chaîne |
| response.artifact_version | Résultats pour tous les enregistrements de version d'artefact qui ont été manipulés pendant le traitement de la demande. Type de données : objet "artifact_version": { "create": [Array], "found": [Array], "update": [Array] } |
| response.artifact_version.create | Résultats pour tous les enregistrements de version d'artefact qui ont été créés pendant le traitement de la demande. Type de données : tableau "create": [ { "id": "String" } ] |
| response.artifact_version.create.id | Sys_id de l'enregistrement de version d'artefact créé par la demande. Type de données : chaîne |
| response.artifact_version.trouvé | Si des enregistrements de version d'artefact utilisés dans la demande de registre existent déjà, la liste des sys_ids des enregistrements existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.artifact_version.trouvé.id | Sys_id de l'enregistrement de version d'artefact existant utilisé par la demande. Type de données : chaîne |
| response.artifact_version.mettre à jour | Actuellement inutilisé |
| response.artifact_version.update.id | Actuellement inutilisé |
| statut | État de la demande d'enregistrement. Valeurs possibles : * Réussite : le corps de la réponse contient les résultats renvoyés. * Erreur : le corps de la réponse contient la liste de toutes les erreurs. {#devops-POST-artifact-registration__ul_utp_pdw_nkb} Type de données : chaîne |
[ ]

### Exemple de demande cURL

    curl -X POST \
    'https://instance.servicenow.com/api/sn_devops/devops/artifact/registration?toolId=391b4ff6dba24010bc8cdd384b96198f&orchestrationToolId=99d70b36dba24010bc8cdd384b961985' \
    -H 'Accept: application/json' \
    -H 'Content-Type: application/json' \
    -u 'username':'password' \
    -d ' {"artifacts": [\
     {\
     "name": "sa-web.jar",\
     "version": "3.1",\
     "semanticVersion": "3.1.0",\
     "repositoryName": "services-1031"\
     },\
     {\
     "name": "sa-frontend.jar",\
     "version": "3.2",\
     "semanticVersion": "3.2.0",\
     "repositoryName": "services-1031"\
     }\
     ],\
     "pipelineName": "spring-boot-app",\
     "taskExecutionNumber": "160",\
     "stageName": "Build",\
     "branchName": "primary"\
    }]'

    {
    "result": {
      "status": "Success",
      "response": {
        "artifact_repository": {
          "create": [
            {
              "id": "2e50ba8bdbaa4010bc8cdd384b961988"
            }
          ],
          "update": [],
          "found": [
            {
              "id": "2e50ba8bdbaa4010bc8cdd384b961988"
            }
          ]
        },
        "artifact": {
          "create": [
            {
              "id": "6a50f603dbea4010bc8cdd384b96193d"
            },
            {
              "id": "2e50f603dbea4010bc8cdd384b96193f"
            }
          ],
          "update": [],
          "found": []
        },
        "artifact_version": {
          "create": [
            {
              "id": "a650f603dbea4010bc8cdd384b96193e"
            },
            {
              "id": "6250f603dbea4010bc8cdd384b961940"
            }
          ],
          "update": [],
          "found": []
        },
        "artifact_register_requests": {
          "create": [
            {
              "id": "6250f603dbea4010bc8cdd384b96193f"
            },
            {
              "id": "6650f603dbea4010bc8cdd384b961940"
            }
          ],
          "update": [],
          "found": []
        }
      }
     }
    }

## DevOps - PUBLIER /devops/onboarding/app {#ariaid-title10}

Crée un événement d'application d'intégration qui est traité de manière asynchrone par le DevOps service.
Ce point de terminaison peut effectuer les actions suivantes :

* Créer des applications.
* Associez DevOps des objets tels que un plan, un référentiel et un pipeline à une application.
* Créez un enregistrement d'étape de changement et associez un processus d'approbation de changement à un pipeline.

Toutes ces actions sont spécifiques à l'outil et à la capacité. Le tableau suivant décrit les actions disponibles pour chaque outil pris en charge.

### Format d'URL

URL versionnée : /api/sn_devops/{api_version}/devops/onboarding/app

URL par défaut : /api/sn_devops/devops/onboarding/app

### Paramètres de demande pris en charge

{#devops-POST-onboarding-app__entry__2}{#devops-POST-onboarding-app__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 49. Paramètres de chemin d'accès]

{#devops-POST-onboarding-app__entry__6}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 50. Paramètres de requête]

{#devops-POST-onboarding-app__entry__10}

| Nom | Description |
|-|-|
| Apps | Tableau d'objets qui définissent les applications à créer dans l'instance associée ServiceNow . Type de données : tableau "apps": [{ "bussinessApp": "String", "name": "String" }] |
| apps.bussinessApp | Nom de la cmdb_ci_business_app à laquelle effectuer le mappage de l'application. Cela lie l'application DevOps à l'application CMDB spécifiée. Type de données : chaîne |
| apps.name | Requis. Nom convivial de l'application à créer pour créer. Une application est un objet de conteneur de DevOps produit qui relie des plans, des référentiels et des pipelines. Type de données : chaîne |
| credentials | Requis. Informations d'identification à utiliser pour la création du webhook. Le webhook créé est utilisé par l'outil pour envoyer des notifications. Type de données : objet "credentials": { "name": "String", "password": "String" } |
| credentials.name | Obligatoire. ServiceNow ID d'utilisateur de l'utilisateur effectuant la demande de point de terminaison. Situé dans la table Utilisateur \[sys_user\]. Cet utilisateur doit avoir le rôle devops.integration.user. À partir de la version 1.34.1, cet utilisateur doit avoir le rôle sn_devops.admin. Type de données : chaîne |
| informations d'identification.mot de passe | Requis. Mot de passe de l'utilisateur spécifié dans le credenitals.name paramètre. Type de données : chaîne |
| pipelines | Tableau d'objets qui définissent les pipelines à associer aux applications. Type de données : tableau "pipelines": [{ "app": "String", "name": "String", "tool": "String" }] |
| pipelines.app | Requis si un pipelines objet est spécifié. Nom de l'application à associer au plan indiqué dans le pipelines.name paramètre. L'application doit avoir déjà été créée ou être spécifiée dans l'objet apps de cette demande. Type de données : chaîne |
| pipelines.changeSteps | Tableau d'objets qui définissent les étapes de changement à créer pour le pipeline spécifié dans le pipelines.name champ. Type de données : tableau "changeSteps": [{ "changeApprovalGroup": "String", "changeControlledBranches": "String", "changeType": "String", "name": "String", "type": "String" }] Type de données : chaîne |
| pipelines.changeSteps.changeApprovalGroup | Requis si un changeSteps objet est spécifié. Nom du groupe d'approbation de changement à associer au pipeline. Situé dans la table Groupe \[sys_user_group\]. Ce groupe doit déjà exister sur l'instance ServiceNow . Type de données : chaîne |
| pipelines.changeSteps.changeControlledBranches | Liste séparée par des virgules des branches de code qui sont sous contrôle des changements. Cela ne s'applique qu'à l'assistance multi-succursales. Type de données : chaîne Par défaut : \* (toutes les branches) |
| pipelines.changeSteps.changeType | Requis si un changeSteps objet est spécifié. Type de demande de changement à créer. Les types disponibles sont définis dans le champ Type de la table Demande de changement \[change_request\]. Type de données : chaîne |
| pipelines.changeSteps.name | Requis si un changeSteps objet est spécifié. Nom de l'étape à créer. Le nom de l'étape doit correspondre au nom de l'étape correspondante dans le pipeline de l'outil d'orchestration. Type de données : chaîne |
| pipelines.changeSteps.type | Requis si un changeSteps objet est spécifié. Type d'étape à créer. Les types d'étapes disponibles sont définis dans le champ Type de la table Étapes \[sn_devops_step\]. Type de données : chaîne |
| pipelines.name | Requis si un pipelines objet est spécifié. Nom du pipeline à associer à l'application spécifiée dans pipelines.app le paramètre. Ce pipeline doit déjà être détecté sur l'instance ServiceNow . Type de données : chaîne |
| pipelines.outil | Requis si un pipelines objet est spécifié. Outil à associer au pipeline pour créer un identificateur de pipeline/outil unique. Type de données : chaîne |
| plans | Tableau d'objets qui définissent un plan à associer à une application. Type de données : tableau "plans": [{ "app": "String", "name": "String", "tool": "String" }] |
| plans.apps | Requis si un plans objet est spécifié. Noms des applications à associer au plan spécifié dans le plans.name paramètre. Ces applications doivent avoir déjà été créées ou être spécifiées dans l'objet apps de cette demande. Type de données : tableau de chaînes |
| plans.name | Requis si un plans objet est spécifié. Nom du plan à associer à l'application spécifiée dans plans.app le paramètre. Ce plan doit déjà être détecté sur l'instance ServiceNow . Type de données : chaîne |
| plans.outil | Requis si un plans objet est spécifié. Outil à associer au plan pour créer un identificateur de plan/d'outil unique. Type de données : chaîne |
| référentiels | Tableau d'objets qui définissent les référentiels associés à une application. Si l'objet référentiels contient un paramètre d'application, il mappe le référentiel à l'application. Type de données : tableau "repositories": [{ "app": "String", "name": "String", "tool": "String" }] |
| repositories.app | Requis si un repositories objet est spécifié. Nom de l'application à associer à ce référentiel. L'application doit avoir déjà été créée ou être spécifiée dans l'objet apps de cette demande. Type de données : chaîne |
| repositories.name | Requis si un repositories objet est spécifié. Nom du référentiel à associer à l'application spécifiée dans repositories.app le paramètre. Ce référentiel doit déjà être détecté sur l'instance ServiceNow . Type de données : chaîne |
| référentiels.outil | Requis si un repositories objet est spécifié. Nom d'outil convivial à associer au référentiel pour créer un identificateur de référentiel/outil unique. L'outil doit déjà être créé sur l'instance ServiceNow . Type de données : chaîne |
| artifactRepositories.app | Requis si l'objet `artifactRepositories` est spécifié. Nom de l'application à associer à cet artifactRepositories. L'application doit avoir déjà été créée ou être spécifiée dans l'objet `d'applications` de cette demande. Type de données : chaîne |
| artifactRepositories.name | Requis si l'objet `artifactRepositories` est spécifié. Nom des référentiels d'artefacts à associer à l'application spécifiée dans artifactRepositories.app paramètre. Cet artifactRepositories doit déjà être détecté sur l'instance ServiceNow. Type de données : chaîne |
| artifactRepositories.tool | Requis si l'objet `artifactRepositories` est spécifié. Nom d'outil convivial à associer aux référentiels d'artefacts pour créer un identificateur d'outils/référentiels d'artefact unique. L'outil doit déjà être créé sur l'instance ServiceNow. Type de données : chaîne |
[Tableau 51. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-onboarding-app__entry__66}{#devops-POST-onboarding-app__accept-JSON-only-entry-RESTAPI}{#devops-POST-onboarding-app__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 52. En-têtes de demandes]

{#devops-POST-onboarding-app__entry__72}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-onboarding-app__entry__76}{#devops-POST-onboarding-app__entry-200-status-code}

| Code d'état | Description |
|-|-|
| 202 | La demande d'intégration a été créée avec succès. |
[Tableau 54. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-onboarding-app__entry__80}

| Nom | Description |
|-|-|
| résultat | Résultats de la demande d'intégration. Type de données : objet "result": { "code": "String", "details": "String", "errors": {Object], "onboardingRequestID": "String", "status": "String" } |
| code.résultat | Code d'état HTTP. Type de données : chaîne |
| result.details | Détails sur la demande d'intégration. Type de données : chaîne |
| Résultat.Erreurs | Description de toute erreur qui s'est produite. Type de données : objet |
| résultat.erreur.message | Message d'erreur. Type de données : chaîne |
| result.onboardingRequestID | Identificateur unique de la demande d'intégration. Utilisez cette valeur lorsque vous appelez le point de terminaison /devops/onboarding/status pour obtenir l'état du processus d'intégration associé. Type de données : chaîne |
| Résultat.État | État de la demande d'intégration, Réussite ou Échec. Type de données : chaîne |
[ ]

### Demande cURL

Cet exemple crée l'application Service de location de vélos et l'associe au pipeline Jenkins Bike Rentals, au référentiel GitHub nowDevops01/CorpSite et au plan Azure testPlan_Bike_Rental.

    curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/app" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -u "username":"password" \
    -d "{
      "apps": [
        {
          "name": "Bike Rental Service"
        }
      ]
      "pipelines": [
        {
          "tool": "Primary Jenkins",
          "name": "Bike Rentals",
          "app": "Bike Rental Service",
          "changeSteps": [
            {
              "name": "Prod",
              "type": "deploy",
              "changeApprovalGroup": "Change Management",
              "changeType": "normal"
            }
          ]
        }
      ],
      "repositories": [
        {
          "tool": "Primary GitHub",
          "name": "nowDevops01/CorpSite",
          "app": "Bike Rental Service"
        }
      ]
      "plans": [
        {
          "tool": "Primary Azure",
          "name": "testPlan_Bike_Rental",
          "apps": [
            "Bike Rental Service"
          ]
        }
      ]
      "credentials" : {
        "name": "devops_user",
        "password": "devops_password"
      } 
    }

<br />

    {
      "result":{
        "status": "Success",
        "details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
        "onboardingRequestID": "IBE0001045",
        "code": "202"
      }
    }

## DevOps - POST /devops/onboarding/tool {#ariaid-title11}

Crée un événement d'outil d'intégration qui est traité de manière asynchrone par le DevOps service.
Selon le type d'outil pour lequel la demande est publiée, le point de terminaison effectue les actions suivantes :

* Crée l'outil dans l'instance associée ServiceNow
* Se connecte à l'outil
* Essaie de configurer l'outil (uniquement si la connexion réussit)
* Détecte l'outil (uniquement si la connexion est réussie)
Toutes ces actions sont spécifiques à l'outil et sont exécutées en fonction des options d'intégration de l'outil spécifié.

Les résultats de retour pour ce point de terminaison indiquent uniquement si la demande a été publiée, ils n'indiquent pas si les outils associés ont été créés. La création réelle de l'outil est traitée de manière asynchrone. Pour obtenir l'état de la création de l'outil et de toutes les autres actions, vous devez appeler le point de terminaison [/devops/onboarding/status](https://servicenow-prod.fluidtopics.net/9rUzpQvdymbgycDHCeINZw#devops-GET-onboarding-status "Renvoie l’état actuel de l’événement d’intégration spécifié qui est traité ou est traité de manière asynchrone par le DevOps service.") et transmettre le onboardingRequestID paramètre renvoyé par ce point de terminaison.

Avant de pouvoir accéder à ce point de terminaison, votre administrateur doit avoir configuré l'alias de connexion et d'informations d'identification DevOps (CreateDevOpsTool) pour configurer les outils dans l'instance. Pour plus [d'informations, consultez Installer la vélocité de changement DevOps](https://www.servicenow.com/docs/access?context=activate-dev-ops&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US). En outre, l'entité appelante doit avoir le rôle devops.integration.user.

### Format d'URL

URL versionnée : /api/sn_devops/{api_version}/devops/onboarding/tool

URL par défaut : /api/sn_devops/devops/onboarding/tool

### Paramètres de demande pris en charge

{#devops-POST-onboarding-tool__entry__2}{#devops-POST-onboarding-tool__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 55. Paramètres de chemin d'accès]

{#devops-POST-onboarding-tool__entry__6}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 56. Paramètres de requête]

{#devops-POST-onboarding-tool__entry__10}

| Nom | Description |
|-|-|
| credentials | Requis. Informations d'identification à utiliser pour la création du webhook. L'outil utilise le webhook créé pour envoyer des notifications. Type de données : objet "credentials": { "name": "String", "password": "String" } |
| credentials.name | Obligatoire. ServiceNow Identificateur de l'utilisateur effectuant la demande de point de terminaison. Situé dans la table Utilisateur \[sys_user\]. Cet utilisateur doit avoir le rôle devops.integration.user. À partir de la version 1.34.1, cet utilisateur doit avoir le rôle sn_devops.admin. Type de données : chaîne |
| informations d'identification.mot de passe | Requis. Mot de passe de l'utilisateur spécifié dans le credenitals.name paramètre. Type de données : chaîne |
| outils | Requis. Tableau d'objets qui définissent les outils à créer dans l'instance associée ServiceNow . Vous pouvez créer un ou plusieurs outils en une seule demande. Type de données : tableau "tools": [{ "name": "String", "password": "String", "type": "String", "useMidServer": Boolean, "username": "String", "url": "String" }] |
| tools.name | Requis. Nom ou étiquette convivial de l'outil à créer. Ce nom est utilisé pour identifier l'outil dans le DevOps service. Type de données : chaîne |
| outils.mot de passe | Requis à l'exception de l'outil Agile. Mot de passe à utiliser pour accéder à l'outil. Les authentifications prises en charge sont basiques et symboliques ; OAuth n'est pas pris en charge. Type de données : chaîne |
| outils.type | Requis. Type d'outil à créer, tel que GitHub ou BitBucket. La valeur spécifiée doit être l'une des étiquettes d'outil dans la table Intégrations d'outils \[sn_devops_tool_integration\]. Type de données : chaîne |
| tools.useMidServer | Marqueur indiquant si l'outil se connecte via un Serveur MIDfichier . Valeurs valides : * true : se connecte via un Serveur MIDfichier . * false : ne se connecte pas via un Serveur MIDfichier . {#devops-POST-onboarding-tool__ul_wxm_d5g_h4b} Type de données : booléennes |
| outils.nom d'utilisateur | Requis à l'exception de l'outil Agile. Nom d'utilisateur à utiliser pour accéder à l'outil via ce point de terminaison. Type de données : chaîne |
| outils.url | Requis à l'exception de l'outil Agile. URL de l'outil à créer. Le DevOps service utilise cette URL pour s'intégrer à l'outil. Type de données : chaîne |
[Tableau 57. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-onboarding-tool__entry__32}{#devops-POST-onboarding-tool__accept-JSON-only-entry-RESTAPI}{#devops-POST-onboarding-tool__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 58. En-têtes de demandes]

{#devops-POST-onboarding-tool__entry__38}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-onboarding-tool__entry__42}{#devops-POST-onboarding-tool__entry-200-status-code}

| Code d'état | Description |
|-|-|
| 202 | La demande d'intégration a été créée avec succès. |
[Tableau 60. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-onboarding-tool__entry__46}

| Nom | Description |
|-|-|
| résultat | Résultats de la demande d'intégration. Type de données : objet "result": { "code": "String", "details": "String", "errors": {Object}, "onboardingRequestID": "String", "status": "String" } |
| code.résultat | Code d'état HTTP. Type de données : chaîne |
| result.details | Message détaillé sur la demande d'intégration. Type de données : chaîne |
| Résultat.Erreurs | Description de toute erreur qui s'est produite. Type de données : objet |
| résultat.erreur.message | Message d'erreur. Type de données : chaîne |
| result.onboardingRequestID | Identificateur unique de la demande d'intégration. Utilisez cette valeur lors de l'appel du point de terminaison /devops/onboarding/status pour obtenir l'état du processus d'intégration de l'outil associé. Type de données : chaîne |
| Résultat.État | État de la demande d'intégration, Réussite ou Échec. Type de données : chaîne |
[ ]

### Demande cURL

L'exemple suivant montre comment intégrer GitHub.

    curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/tool" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -u "username":"password" \
    -d {
      "tool":[{
        "name": "Primary GitHub",
        "type": "GitHub",
        "url": "https"//api.github.com",
        "username": "username",
        "password": "password",
        "useMidServer": false 
      }]
      "credentials" : {
        "name": "devops_user",
        "password": "devops_password"
      }
    }

<br />

    {
      "result":{
        "status": "Success",
        "details": "Onboarding request has been created. Please use the /status api and the onboarding request number to get the status of the request",
        "onboardingRequestID": "IBE0001041",
        "code": "202"
      }
    }

## DevOps - POST /devops/orchestration/changeControl {#ariaid-title12}

Enregistre un rappel avec une ServiceNow instance pour une tâche d'orchestration sous contrôle de changement, qui peut être appelé une fois qu'une décision a été prise sur la demande de changement.
Avant d'appeler ce point de terminaison, une tâche d'orchestration doit être créée dans votre ServiceNow instance. Vous pouvez créer cette tâche via Détection ou en appelant le point de [DevOps - POST /devops/orchestration/stepMapping](https://servicenow-prod.fluidtopics.net/9rUzpQvdymbgycDHCeINZw#devops-POST-orch-stepMapping "Vérifie que les informations transmises sont valides pour la création d’une tâche d’orchestration et qu’elles sont valides pour être associées à une étape précédemment créée. Si les deux sont valides, la tâche d’orchestration est créée et l’association est créée.") terminaison. Vous devez également vous assurer que la tâche d'orchestration est associée à une étape de pipeline définie précédemment et que le contrôle des changements est activé (en sélectionnant l'option Contrôle des changements dans le formulaire Étape de l'application). Pour plus [d'informations, consultez Accélération du changement DevOps](https://www.servicenow.com/docs/access?context=dev-ops-change-acceleration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).

### Format d'URL {#devops-POST-orch-changeControl__section_cmb_hvh_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/changeControl

URL par défaut : /api/sn_devops/devops/orchestration/changeControl

### Paramètres de demande pris en charge

{#devops-POST-orch-changeControl__entry__2}{#devops-POST-orch-changeControl__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 61. Paramètres de chemin d'accès]

{#devops-POST-orch-changeControl__entry__6}

| Nom | Description |
|-|-|
| toolId | Requis. Sys_id de l'outil DevOps pour lequel placer la tâche spécifiée sous contrôle des changements. Situé dans la table des sn_devops_orchestration_tool de l'outil d'orchestration. Type de données : chaîne |
| Type d'outil | Type d'outil. Valeur valide : toute valeur qui identifie l'outil, telle que \<\< Jenkins \>\>. Type de données : chaîne |
[Tableau 62. Paramètres de requête]

{#devops-POST-orch-changeControl__entry__12}{#devops-POST-orch-changeControl__ph-orch-callBackURL-devops}{#devops-POST-orch-changeControl__row-stepMap-isMultiBranch}{#devops-POST-orch-changeControl__ph-orch-orchestrationTaskDetails-message-devops}{#devops-POST-orch-changeControl__ph-orch-orchestrationTaskDetails-triggerType-devops}{#devops-POST-orch-changeControl__ph-orch-orchestrationTaskDetails-upstreamTaskExecutionURL-devops}{#devops-POST-orch-changeControl__row-stepMap-parentStageName}{#devops-POST-orch-changeControl__row-stepMap-parentStageURL}

| Nom | Description |
|-|-|
| URL de rappel | Requis. URL que l'instance ServiceNow peut rappeler une fois le processus d'approbation de la demande de changement associé terminé. Ce rappel doit permettre à l'exécution du pipeline de se poursuivre ou non, en fonction du résultat d'approbation. Type de données : chaîne |
| changeRequestDetails (en anglais seulement) | Paires nom-valeur des champs à définir lors de la fermeture d'une demande de changement. Cet objet peut contenir tous les champs de l'enregistrement de demande de changement, à l'exception des champs suivants : * impact * Numéro * risk * risk_impact_analysis * sys_id Si ces champs sont inclus dans la demande, le point de terminaison renvoie une erreur 400 et la demande de changement n'est pas mise à jour. En outre, si vous incluez des champs qui nécessitent la définition d'autres champs obligatoires et que ces champs ne sont pas envoyés, la demande échouera lors du traitement ultérieur du pipeline. Cette défaillance est notée dans les notes de travail de la demande de changement, ainsi qu'un message d'erreur pour cette demande de changement particulière, par exemple : Échec de la mise à jour de la demande de changement avec le motif : \<Message d'erreur de la plateforme\>. Annulation de la demande de changement et de l'exécution de l'étape connexe. Vous pouvez également transmettre le paramètre setCloseCode booléen dans cet objet pour spécifier s'il faut définir des informations de fermeture sur l'enregistrement de demande de changement associé. * Si la valeur est définie sur vrai, le champ close_code est défini sur l'état de la tâche et le champ close_notes est défini sur un lien vers l'exécution de l'étape dans l'enregistrement de demande de changement associé. La valeur par défaut est vrai. * Si la valeur est définie sur faux, les champs close_code et close_notes ne sont pas définis et un lien vers l'exécution de l'étape est défini dans le champ work_notes. Type de données : objet |
| isMultiBranch (en anglais seulement) | Si l'outil d'orchestration est Jenkins, marqueur indiquant si le projet est de type Multibranche. Valeurs valides : * vrai : le projet est de type multibranche. * false : le projet n'est pas de type Multibranch. {#devops-POST-orch-changeControl__ul_d2g_rht_rkb} Type de données : booléennes Valeur par défaut : false |
| orchestrationTaskDetails | Requis. Description de la tâche d'orchestration. Type de données : objet "orchestrationTaskDetails": { "message": "String", "triggerType": "String", "upstreamTaskExecutionURL": "String" } |
| orchestrationTaskDetails.message | Message texte de forme libre. Type de données : chaîne |
| orchestrationTaskDetails.triggerType | Requis. La façon dont la tâche d'orchestration a été démarrée. Valeurs valides :{#devops-POST-orch-changeControl__p-orch-orchestrationTaskDetails-triggerType-devops} * scm : la validation du code de l'outil Git/scm a déclenché la tâche. * en amont : la tâche en amont a déclenché cette tâche. * user : l'utilisateur a démarré manuellement la tâche. {#devops-POST-orch-changeControl__ul-orch-orchestrationTaskDetails-triggerType-devops} Type de données : chaîne |
| orchestrationTaskDetails.upstreamTaskExecutionURL | Obligatoire si triggerType est défini sur <kbd class="ph userinput">l’amont</kbd>. URL d'exécution de la tâche en amont. Par exemple : https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ Type de données : chaîne |
| orchestrationTaskURL | Requis. URL de la tâche d'orchestration pour laquelle créer le rappel. Par exemple : https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ Type de données : chaîne |
| Nœud parent | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, cette valeur contient les détails du nœud parent. Type de données : objet "parentNode": { "id": "String", "name": "String", "upstreamStageName": "String", "upstreamTaskExecutionURL": "String" } |
| parentNode.id | ID unique pour le nœud parent. Dans Jenkins, cette valeur correspond à un ID d'étape de pipeline. Type de données : chaîne |
| parentNode.name | Nom du nœud parent. Dans Jenkins, cette valeur correspond au nom d'une étape du pipeline. Type de données : chaîne |
| parentNode.upstreamStageName | Nom de la tâche d'orchestration en amont du nœud parent. Dans Jenkins, cette valeur correspond au nom d'une étape du pipeline. Type de données : chaîne |
| parentNode.upstreamTaskExecutionURL | URL de l'exécution de la tâche en amont du nœud parent. Dans Jenkins, cette valeur correspond à une URL d'exécution d'étape de pipeline. Type de données : chaîne |
| parentStageName (en anglais seulement) | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, nom de la tâche d'orchestration parente. Type de données : chaîne |
| parentStageURL | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, il s'agit de l'URL de la tâche d'orchestration parente. Type de données : chaîne |
[Tableau 63. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-orch-changeControl__entry__44}{#devops-POST-orch-changeControl__accept-RESTAPI}{#devops-POST-orch-changeControl__content_type-JSON-only-entry-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 |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 64. En-têtes de demandes]

{#devops-POST-orch-changeControl__entry__52}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-orch-changeControl__entry__56}{#devops-POST-orch-changeControl__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 201 | Demande terminée avec succès. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 66. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-orch-changeControl__entry__66}

| Nom | Description |
|-|-|
| changeControl | Marqueur indiquant si la tâche d'orchestration est sous contrôle de changement. Valeurs possibles : * true : sous contrôle de changement. * false : pas sous contrôle de changement {#devops-POST-orch-changeControl__ul_xss_1vm_k3b} Type de données : booléennes |
[ ]

### Demande cURL

    curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{
      \"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/orchestration task/Mobile-Platform-deploy/\",
      \"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
      \"orchestrationTaskDetails\":{
        \"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
        \"triggerType\":\"upstream\",
        \"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
    }"

Corps de réponse.

    {
    "result": {
       "changeControl": true,
       "status": "Success"
       }
    }

### Demande cURL

Cet exemple montre comment transmettre des champs dans l'objet lors de la fermeture d'une changeRequestDetails demande de changement.

    curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeControl?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{
      "callbackURL":"http://192.168.0.4:3000/jenkins/sn-devops/pipeline_839b7605-b98d-4831-bc87-96829de7da37",
      "orchestrationTaskURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests#deploy/",
      "isMultiBranch":"false",
      "orchestrationTaskName":"java_sample_tests#deploy",
      "orchestrationTaskDetails":{
        "triggerType":"upstream",
        "upstreamTaskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/35/wfapi/describe",
        "taskExecutionURL":"http://192.168.0.4:3000/jenkins/job/java_sample_tests/129/execution/node/50/wfapi/describe"
      },
      "changeRequestDetails":{
        "setCloseCode":false,
        "attributes":{
          "sys_created_by":"1832fbe1d701120035ae23c7ce610369",
          "sys_updated_by":"56826bf03710200044e0bfc8bcbe5dca",
          "requested_by":{
             "name":"test user1"
          },
          "watch_list":[
            {
              "name":"test user1"
            },
            {
              "name":"test user2"
            },
            {
              "name":"Alejandra Prenatt"
            },
              "56826bf03710200044e0bfc8bcbe5dca"
          ],
          "work_notes_list":[
            "56826bf03710200044e0bfc8bcbe5dca",
            "46c6f9efa9fe198101ddf5eed9adf6e7",
            "d8f57f140b20220050192f15d6673a98"
          ],
          "assigned_to":"1832fbe1d701120035ae23c7ce610369",
          "category":"Service",
          "sys_created_on":"2021-02-09 18:58:41",
          "priority":"2",
        }
      }
    }"

Corps de réponse.

    {
    "result": {
       "changeControl": true,
       "status": "Success"
       }
    }

## DevOps - POST /devops/orchestration/stepMapping {#ariaid-title13}

Vérifie que les informations transmises sont valides pour la création d'une tâche d'orchestration et qu'elles sont valides pour être associées à une étape précédemment créée. Si les deux sont valides, la tâche d'orchestration est créée et l'association est créée.

### Format d'URL {#devops-POST-orch-stepMapping__section_ftr_gb3_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/stepMapping

URL par défaut : /api/sn_devops/devops/orchestration/stepMapping

### Paramètres de demande pris en charge

{#devops-POST-orch-stepMapping__entry__2}{#devops-POST-orch-stepMapping__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 67. Paramètres de chemin d'accès]

{#devops-POST-orch-stepMapping__entry__6}{#devops-POST-orch-stepMapping__entry-stepMap-toolId}{#devops-POST-orch-stepMapping__entry-stepMap-toolType}

| Nom | Description |
|-|-|
| toolId | Requis. Sys_id de l'outil d'orchestration. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Type de données : chaîne |
| Type d'outil | Requis. Type d'outil. Valeurs valides : Jenkins Type de données : chaîne |
[Tableau 68. Paramètres de requête]

{#devops-POST-orch-stepMapping__entry__12}{#devops-POST-orch-stepMapping__row-stepMap-branchName}{#devops-POST-orch-stepMapping__row-stepMap-isMultiBranch}{#devops-POST-orch-stepMapping__row-stepMap-parentStageName}{#devops-POST-orch-stepMapping__row-stepMap-parentStageURL}{#devops-POST-orch-stepMapping__ph-orch-orchestrationTaskURL-devops}

| Nom | Description |
|-|-|
| branchName | Nom de la branche associée à la tâche d'orchestration. Type de données : chaîne |
| isMultiBranch (en anglais seulement) | Si l'outil d'orchestration est Jenkins, marqueur indiquant si le projet est de type Multibranche. Valeurs valides : * vrai : le projet est de type multibranche. * false : le projet n'est pas de type Multibranch. {#devops-POST-orch-stepMapping__ul_d2g_rht_rkb} Type de données : booléennes Valeur par défaut : false |
| Nœud parent | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, cette valeur contient les détails du nœud parent. Type de données : objet "parentNode": { "id": "String", "name": "String", "upstreamStageName": "String", "upstreamTaskExecutionURL": "String" } |
| parentNode.id | ID unique pour le nœud parent. Dans Jenkins, cette valeur correspond à un ID d'étape de pipeline. Type de données : chaîne |
| parentNode.name | Nom du nœud parent. Dans Jenkins, cette valeur correspond au nom d'une étape du pipeline. Type de données : chaîne |
| parentNode.upstreamStageName | Nom de la tâche d'orchestration en amont du nœud parent. Dans Jenkins, cette valeur correspond au nom d'une étape du pipeline. Type de données : chaîne |
| parentNode.upstreamTaskExecutionURL | URL de l'exécution de la tâche en amont du nœud parent. Dans Jenkins, cette valeur correspond à une URL d'exécution d'étape de pipeline. Type de données : chaîne |
| parentStageName (en anglais seulement) | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, nom de la tâche d'orchestration parente. Type de données : chaîne |
| parentStageURL | Si la tâche d'orchestration est un enfant imbriqué à l'intérieur d'une tâche d'orchestration parente, il s'agit de l'URL de la tâche d'orchestration parente. Type de données : chaîne |
| orchestrationTaskName | Requis. Nom de la tâche d'orchestration. Il s'agit de la même tâche référencée dans le orchestrationTaskURL. Type de données : chaîne |
| orchestrationTaskURL | Requis. URL de la tâche d'orchestration. Par exemple : https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ Type de données : chaîne |
[Tableau 69. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-orch-stepMapping__entry__36}{#devops-POST-orch-stepMapping__accept-JSON-only-entry-RESTAPI}{#devops-POST-orch-stepMapping__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 70. En-têtes de demandes]

{#devops-POST-orch-stepMapping__entry__44}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-orch-stepMapping__entry__48}{#devops-POST-orch-stepMapping__entry-400-status-code}{#devops-POST-orch-stepMapping__entry-401-status-code}{#devops-POST-orch-stepMapping__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 201 | Réussi. La demande a été correctement traitée. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 401 | Non autorisé. Les informations d'identification de l'utilisateur sont incorrectes ou n'ont pas été transmises. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 72. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-orch-stepMapping__table_y32_sc3_bmb__entry__2}

| Élément | Description |
|-|-|
| statut | Marqueur indiquant si la vérification a réussi. Valeurs valides : * true : la vérification a réussi. * faux : échec de la vérification. {#devops-POST-orch-stepMapping__ul_ksj_tnz_dcc} Type de données : booléennes |
| Étape valide | Marqueur indiquant si les informations envoyées sont valides. Valeurs valides : * true : les informations envoyées sont valides. * false : les informations envoyées ne sont pas valides. {#devops-POST-orch-stepMapping__ul_sck_xnz_dcc} Type de données : booléennes |
[ ]

{#devops-POST-orch-stepMapping__table_y32_sc3_bmb}  

### Exemple de demande cURL

    curl -X POST "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/stepMapping?toolId=f0ca45679323008b52f3b457415ae6&toolType=jenkins"
    -H "Accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{
      \"orchestrationTaskURL\":\" http://127.0.0.1:8090/jenkins/job/CorpSite/job/primary#deploy PROD/\",
      \"orchestrationTaskName\":\" primary#deploy PROD\"
    }"

Résultats si les informations sont valides.

    {
      "result": {
        "stepValid": true,
        "status": "Success"
      }
    }

Résultats si les informations ne sont pas valides.

    {
      "result": {
        "stepValid": false,
        "status": "Success"
      }
    }

## DevOps - POST /devops/package/inscription {#ariaid-title14}

Permet aux outils d'orchestration de créer de nouveaux packages d'artefacts qui contiennent des versions d'artefacts spécifiées.
Les packages d'artefact sont utilisés pour afficher les validations des approbateurs de changement lorsqu'ils consultent une demande de changement. Pour que les validations s'affichent dans les demandes de changement, le package doit être créé dans l'étape précédant l'étape contenant l'approbation du changement.

Toutes les versions d'artefact incluses dans la demande d'enregistrement de package doivent déjà être enregistrées auprès de DevOps. Pour en savoir plus sur l'enregistrement des versions d'artefacts, reportez-vous à la section [DevOps - POST /devops/artifact/inscription](https://servicenow-prod.fluidtopics.net/9rUzpQvdymbgycDHCeINZw#devops-POST-artifact-registration "Permet aux outils d’orchestration d’enregistrer les artefacts dans une ServiceNow instance.").  
En règle générale, vous transmettrez les paramètres and artifacts.name lors de l'identification artifacts.version d'une version d'artefact à inclure dans un package. Vous pouvez également utiliser les fonctionnalités avancées de ce point de terminaison qui vous permettent de transmettre les détails de la version pour chaque version de l'artefact au lieu de la version elle-même. Les détails de construction spécifiques à l'artefact incluent les paramètres suivants :

* artifacts.pipelineName ou artifacts.projectName
* artifacts.taskExecutionNumber
* artifacts.stageName
* artifacts.branchName

{#devops-POST-package-registration__ul_azc_nfd_4kb}Le point de terminaison utilise ces détails de version spécifiques à l'artefact pour rechercher des informations sur l'exécution des tâches, puis copie les versions associées dans le package. Elle utilise des détails de version non spécifiques à l'artefact (pipelineName ou projectName, taskExecutionNumber, branchNameet stageName) pour associer le package créé à une exécution de pipeline.  
Remarque :  
Ce point de terminaison ne prend pas en charge les mises à jour. Il crée toujours un nouveau package, même s'il en existe déjà un avec le même nom.

Pour plus d'informations sur les packages d'artefacts, consultez [Utilisation de l'accélération du changement DevOps pour les versions](https://www.servicenow.com/docs/access?context=using-dev-ops-release-change&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).

### Format d'URL {#devops-POST-package-registration__section_snb_123_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/package/registration

URL par défaut : /api/sn_devops/devops/package/registration

### Paramètres de demande pris en charge

{#devops-POST-package-registration__entry__2}{#devops-POST-package-registration__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 73. Paramètres de chemin d'accès]

{#devops-POST-package-registration__entry__6}

| Nom | Description |
|-|-|
| orchestrationToolId | Requis. Sys_id de l'outil d'orchestration associé au package d'artefact. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Le point de terminaison utilise ces informations pour localiser les informations sur l'exécution des tâches. Type de données : chaîne |
| toolId | Sys_id de l'outil d'artefact associé au package d'artefact. Situé dans la table Outil d'artefact \[sn_devops_artifact_tool\]. Type de données : chaîne |
[Tableau 74. Paramètres de requête]

{#devops-POST-package-registration__entry__12}

| Nom | Description |
|-|-|
| Artefacts | Au moins une entrée est requise. Tableau d'objets dans lequel chaque objet identifie de manière unique une version d'artefact à inclure dans le package. Type de données : tableau "artifacts": [ { "branchName": "String", "name": "String", "pipelineName": "String", "projectName": "String", "repositoryName": "String", "stageName": "String", "taskExecutionNumber": "String", "version": "String" ] |
| artifacts.branchName | Requis s'il n'est pas réussi et s'il artifact.version s'agit d'une configuration à plusieurs branches. Nom de la branche dans laquelle les versions de l'artefact sont stockées. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| artifacts.name | Requis. Nom du fichier de l'artefact. Type de données : chaîne Longueur maximale : 160 caractères |
| artefacts.pipelineName | Requis si artifact.version et artifacts.projectName ne sont pas réussis. Nom du pipeline. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| artefacts.projectName | Requis si artifact.version et artifact.pipelineName ne sont pas réussis. Nom du projet au format libre. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| artifacts.repositoryName | Requis. Nom du référentiel de l'artefact. Type de données : chaîne Longueur maximale : 160 caractères |
| artefacts.stageName | Obligatoire en cas artifact.version d'échec. Nom de scène. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| artifacts.taskExecutionNumber | Obligatoire en cas artifact.version d'échec. Numéro d'exécution du pipeline. Type de données : chaîne Par défaut : null |
| artefacts.version | Requis si les détails de la version ne sont pas fournis. Version des artefacts. Type de données : chaîne Format : \<majeur\>.\<mineur\> Par défaut : null |
| branchName | Obligatoire s'il s'agit d'un projet à plusieurs branches. Nom de la branche dans le référentiel où les artefacts sont stockés. Type de données : chaîne Longueur maximale : 200 caractères Par défaut : null |
| nom | Requis. Nom du package. Type de données : chaîne Longueur maximale : 160 caractères |
| pipelineName | Obligatoire en cas projectName d'échec. Nom du pipeline. Type de données : chaîne Longueur maximale : 160 caractères Par défaut : null |
| projectName | Obligatoire en cas pipelineName d'échec. Nom du projet au format libre. Type de données : chaîne Longueur maximale : 160 Par défaut : null |
| nom d'étape | Obligatoire en cas pipelineName de réussite. Nom de scène. Type de données : chaîne Longueur maximale : 160 caractères Par défaut : null |
| taskExecutionNumber (en anglais seulement) | Requis. Numéro d'exécution du pipeline. Type de données : chaîne Longueur maximale : 128 caractères Par défaut : null |
[Tableau 75. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-package-registration__entry__44}{#devops-POST-package-registration__accept-JSON-only-entry-RESTAPI}{#devops-POST-package-registration__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 76. En-têtes de demandes]

{#devops-POST-package-registration__entry__52}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-package-registration__entry__56}

| Code d'état | Description |
|-|-|
| 200 | Réussite. Réussite avec le corps de la réponse. |
| 201 | Créé. Réussite avec le corps de la réponse. |
| 400 | Demande incorrecte. L'URI de la demande ne correspond pas aux API du système ou l'opération a échoué pour des raisons inconnues. Des en-têtes non valides peuvent également être à l'origine de cette erreur. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 78. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-package-registration__entry__66}

| Nom | Description |
|-|-|
| réponse | Résultats de la demande d'enregistrement du package. Type de données : objet "response": { "artifact_register_requests": {Object}, "sn_devops_m2m_artifact_version_package": {Object}, "sn_devops_package": {Object} } |
| response.artifact_register_requests | Résultats pour toutes les demandes de registre qui n'ont pas terminé leur traitement et qui ont été stockées dans la table Demande intermédiaire d'artefact \[sn_devops_artifact_staging\]. Type de données : objet "artifact_register_requests": { "create": [Array], "found": [Array], "update": [Array] } |
| response.artifact_register_requests.créer | Si la demande a créé des enregistrements de stockage intermédiaire de package, la liste de sys_ids des enregistrements de stockage intermédiaire créés. Type de données : tableau "create": [ { "id": "String" } ] |
| response.artifact_register_requests.create.id | Sys_id de l'enregistrement intermédiaire de package créé par la demande. Type de données : chaîne |
| response.artifact_register_requests.trouvé | Si les enregistrements intermédiaires de package associés existent déjà, liste des sys_ids des enregistrements existants. Remarque : Aucune modification n'est apportée aux packages existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.artifact_register_requests.trouvé.id | Sys_id d'un enregistrement intermédiaire de package existant. Type de données : chaîne |
| response.artifact_register_requests.mettre à jour | Actuellement inutilisé. |
| response.artifact_register_requests.update.id | Actuellement inutilisé. |
| response.sn_devops_m2m_artifact_version_package | Résultats pour chaque version d'artefact associée à un package. Type de données : objet "sn_devops_m2m_artifact_version_package": { "create": [Array], "found": [Array], "update": [Array] } |
| response.sn_devops_m2m_artifact_version_package.créer | Si la demande a créé des enregistrements liant les versions d'artefacts aux packages, la liste des sys_ids des enregistrements créés dans la table Version d'artefact vers package \[sn_devops_m2m_artifact_version_package\]. Type de données : tableau "create": [ { "id": "String" } ] |
| response.sn_devops_m2m_artifact_version_package.create.id | Sys_id de la version d'artefact de l'enregistrement de package créé par la demande. Type de données : chaîne |
| response.sn_devops_m2m_artifact_version_package.trouvé | Si un enregistrement de liaison existe déjà dans la table Version d'artefacts vers package, liste de sys_ids des enregistrements de liaison existants. Remarque : Aucune modification n'est apportée aux enregistrements existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.sn_devops_m2m_artifact_version_package.found.id | Sys_id de la version d'artefact existante vers l'enregistrement de package. Type de données : chaîne |
| response.sn_devops_m2m_artifact_version_package.mettre à jour | Actuellement inutilisé. |
| response.sn_devops_m2m_artifact_version_package.update.id | Actuellement inutilisé. |
| response.sn_devops_package | Résultats de tous les enregistrements de packages de la table Packages \[sn_devops_package\] qui ont été manipulés pendant le traitement de la demande. Type de données : objet "sn_devops_package": { "create": [Array], "found": [Array], "update": [Array] } |
| response.sn_devops_package.créer | Si des enregistrements de package ont été créés par la demande, liste de sys_ids des enregistrements créés. Type de données : tableau "create": [ { "id": "String" } ] |
| response.sn_devops_package.create.id | Sys_id de l'enregistrement de package créé par la demande. Type de données : chaîne |
| response.sn_devops_package.trouvé | Si des enregistrements de package utilisés dans la demande de registre existent déjà, la liste des sys_ids des enregistrements existants. Remarque : Aucune modification n'est apportée aux enregistrements existants. Type de données : tableau "found": [ { "id": "String" } ] |
| response.sn_devops_package.trouvé.id | Sys_id d'un enregistrement de package existant référencé par la demande. Type de données : chaîne |
| response.sn_devops_package.mettre à jour | Actuellement inutilisé. |
| response.sn_devops_package.update.id | Actuellement inutilisé. |
| statut | État de la demande d'enregistrement. Valeurs possibles : * Réussite : le corps de la réponse contient les résultats renvoyés. * Erreur : le corps de la réponse contient la liste de toutes les erreurs. {#devops-POST-package-registration__ul_utp_pdw_nkb} Type de données : chaîne |
[ ]

### Exemple de demande cURL

    # Example passing the artifact version
    curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"\
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{\
    "name": "sentimentpackage",\
    "artifacts": [\
    {\
    "name": "sa-web.jar",\
    "repositoryName": "services-1031",\
    "version": "3.1"\
    },\
    {\
    "name": "sa-frontend.jar",\
    "repositoryName": "services-1031",\
    "version": "9.2"\
    }\
    ],\
    "pipelineName": "spring-boot-app",\
    "taskExecutionNumber": "160",\
    "stageName": "Build",\
    "branchName": "primary"\
    }"

Réponse : package créé :

    "result": {
    "status": "Success",
    "response": {
      "sn_devops_package": {
        "create": [
            {
              "id": "0d57367a532e00107109ddeeff7b122a"
            } 
          ],
        "update": [],
        "found": []
      },
      "sn_devops_m2m_artifact_version_package": {
        "create": [
          {
            "id": "c957367a532e00107109ddeeff7b122b"
          },
          {
            "id": "8157367a532e00107109ddeeff7b122c"
          }
        ],
        "update": [],
        "found": []
        }
      },
      "responseCode": 201
      }
    }

### Exemple de demande cURL

    # Example passing the build details
    curl -X POST "https://instance.servicenow.com/api/sn_devops/devops/package/registration?toolId=f0ca45679323008b52f3b457415ae6"
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{\
    "name": "sentimentpackage",\
    "artifacts": [\
    {\
    "name": "sa-web.jar",\
    "repositoryName": "services-1031",\
    "pipelineName": "spring-boot-app",\
    "taskExecutionNumber": "160",\
    "stageName": "Build",\
    "branchName": "primary"\
    },\
    {\
    "name": "sa-frontend.jar",\
    "repositoryName": "services-1031",\
    "pipelineName": "spring-boot-fe",\
    "taskExecutionNumber": "991",\
    "stageName": "Build",\
    "branchName": "primary"\
    }\
    ],\
    "pipelineName": "spring-boot-app",\
    "taskExecutionNumber": "160",\
    "stageName": "Build",\
    "branchName": "primary"\
    }"

Réponse : la demande a créé un package intermédiaire :

    {
    "result": {
      "status": "Success",
      "response": {
        "artifact_register_requests": {
          "create": [
            { 
              "id": "4628f276532e00107109ddeeff7b1245"
            },
            {
              "id": "4e28f276532e00107109ddeeff7b1245"
            },
            {
              "id": "ce28f276532e00107109ddeeff7b1245"
            }
          ],
          "update": [],
          "found": []
        }
      }, 
      "responseCode": 201 
     }
    }

## DevOps - POST /devops/tool/{capability} {#ariaid-title15}

Publie la charge utile transmise dans la table Événement entrant \[sn_devops_inbound\] pour traitement par un flux secondaire personnalisé DevOps .
Appelez ce point de terminaison à partir du webhook associé dans votre outil, spécifié par le paramètre transmis capability . Un flux secondaire personnalisé doit déjà être défini dans votre ServiceNow instance pour traiter la charge utile transmise. En fonction d'une planification prédéfinie, le DevOps flux principal récupère les informations d'événement webhook à partir de la table Événement entrant et les transmet au flux secondaire personnalisé, qui traite ensuite la charge utile. Pour plus d'informations sur la création d'un flux secondaire personnalisé, consultez [Création de flux secondaires DevOps](https://www.servicenow.com/docs/access?context=creating-dev-ops-subflows&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).

Pour plus d'informations sur l'intégration des outils de test, consultez [Intégration des outils de test DevOps](https://www.servicenow.com/docs/access?context=dev-ops-test-tool-integration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US).

Avant d'appeler ce point de terminaison pour un outil personnalisé DevOps , vous devez implémenter les méthodes handleTool() et getNativeIdForOrchestrationTask() à partir de sn_devops. DevOpsOrchestrationToolIntegrationHandler. Pour plus d'informations, consultez [DevOpsOrchestrationToolIntegrationHandler : inclus dans le champ d'application](https://servicenow-prod.fluidtopics.net/xhNvfQxNZyV7J465gQheQg#DevOpsOrchToolIntHandlerScopedAPI "L’API DevOpsOrchestrationToolIntegrationHandler permet le traitement des charges utiles à partir d’outils personnalisés DevOps .")[DevOpsOrchestrationToolIntegrationHandler : dans le champ d'application](https://developer.servicenow.com/go_to_api.do?ID=DevOpsOrchToolIntHandlerScopedAPI&v=washingtondc).  
Remarque :  
À partir de la version 1.34.1, une nouvelle version de cette API a été introduite. Avec cette API, les politiques d'authentification adaptative peuvent ne pas s'exécuter comme prévu. Pour en savoir plus sur ces stratégies, reportez-vous à la section [Adaptive authentication](https://www.servicenow.com/docs/access?context=adaptive-authentication&version=xanadu&pubname=xanadu-platform-security&ft:locale=en-US).

### Format d'URL {#devops-POST-tool__section_wtz_jg3_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/tool/{capability}

URL par défaut : /api/sn_devops/devops/tool/{capability}

### Paramètres de demande pris en charge

{#devops-POST-tool__entry__2}{#devops-POST-tool__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
| aptitude | Type d'outil transmettant la charge utile à stocker dans la table Événement entrant. Valeurs valides (insensibles à la casse) : * Artefact * code * orchestration * plan * test {#devops-POST-tool__ul_hvp_4lq_xkb} Type de données : chaîne |
[Tableau 79. Paramètres de chemin d'accès]

{#devops-POST-tool__entry__8}

| Nom | Description |
|-|-|
| orchestrationToolId | Facultatif. La sys_id de l'outil d'orchestration auquel appartient le pipeline connexe. orchestrationToolId est requis si le paramètre de capability demande est défini sur `test` ou `softwarequality`. toolId est l'outil d'orchestration par défaut si orchestrationToolId n'est pas présent. |
| Type de test | Obligatoire si capability défini sur `test`. Type de test en cours d'exécution. Les valeurs valides pour ce paramètre sont celles de la colonne Type de test de la table Types de test \[sn_devops_test_type\]. |
| toolId | Requis. Sys_id de l'outil pour lequel le point de terminaison est appelé. |
[Tableau 80. Paramètres de requête]

{#devops-POST-tool__entry__16}

| Nom | Description |
|-|-|
| Dépendant de l'outil | L'outil détermine le contenu de la charge utile. |
[Tableau 81. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-tool__entry__20}{#devops-POST-tool__accept-JSON-only-entry-RESTAPI}{#devops-POST-tool__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 82. En-têtes de demandes]

{#devops-POST-tool__entry__28}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-tool__entry__32}

| Code d'état | Description |
|-|-|
| 201 | Demande terminée avec succès. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur de logique s'est produite sur le code côté serveur. |
[Tableau 84. Codes d'état]

### Paramètres du corps de réponse

{#devops-POST-tool__entry__42}{#devops-POST-tool__ph-details-devops}{#devops-POST-tool__ph-details-errors-devops}

| Nom | Description |
|-|-|
| Détails | Entrée pour toutes les conditions d'erreur. Type de données : objet "details": { "errors": [Array] } |
| Détails.Erreurs | Description d'une erreur unique. Type de données : tableau "errors": [ { "message": "String" } ] |
| Détails.Erreur.Message | Message d'erreur détaillé. * La demande n'a pas de paramètres de chemin d'accès : aucun paramètre de chemin d'accès n'est inclus dans l'appel. * La demande n'a pas de paramètre de chemin d'aptitude : le paramètre de chemin d'accès d'aptitude n'a pas été inclus dans l'appel. * Type d'aptitude non pris en charge : le paramètre d'aptitude spécifié n'est pas une valeur valide. {#devops-POST-tool__ul_yqw_qmq_xkb} Type de données : chaîne |
| statut | État de la réponse tel que \<\< Réussite \>\> ou \<\< Erreur de données \>\>. Type de données : chaîne |
| sys_id | Sys_id de l'enregistrement créé dans la table Événement entrant. Type de données : chaîne |
[ ]

### Exemple de demande cURL pour l'artefact

    curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a" 
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{
       "artifacts": [
          {
             "name": "sp-boot-app",
             "version": "1.320",
             "semanticVersion": "1.320.0",
             "repositoryName": "sp-boot-app-repo"
          }
       ],
       "pipelineName": "spring-boot-app-gitea",
       "taskExecutionNumber": "320",
       "stageName": "Build"
    }"

Réponse de réussite :

    {
       "result": {
          "status": "Success",
          "sysId": "33c57245dbf68410bc8cdd384b961966"
       }
    }

### Exemple de demande cURL pour l'artefact

    curl -X POST "https://instance.service-now.com/api/sn_devops/v1/tool/artifact?toolId=3b59043ee4ea556e6850d61bc1a77e8a" 
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\ 
    -d "{\
       "timestamp": "2020-01-11T00:52:01.541+0000",\
       "nodeId": "137BEECF-E1BF7BC1-90212D1C-0749A6D4-BC670F6B",\
       "initiator": "admin/172.17.0.1",\
       "repositoryName": "maven-releases29",\
       "action": "CREATED",\
       "component": {\
          "id": "2a59043ed2ea556e6850d61bc1a77c7b",\
          "componentId": "c3AtYm9vdC1hcHAtcmVwbzoyYTU5MDQzZWQyZWE1NTZlNjg1MGQ2MWJjMWE3N2M3Yg",\
          "format": "maven2",\
          "name": "sentiment-analysis-web",\
          "group": "com.spboot",\
          "version": "1.1"\
       }\
    }"

Réponse d'erreur :

    {
       "result": {
          "status": "Data Error",
          "details": {
             "errors": [
                {
                   "message": "Unsupported capability type"
                }
             ]
          }
       }
    }

### Exemple de demande de code cURL

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/code?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "commits": [
          {
             "totalFiles": 1,
             "nativeIdList": [
                "49",
                "50"
             ],
             "id": "f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
             "url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo/commit/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
             "apiURL": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_apis/git/repositories/8d7ba019-1739-431c-beb4-6025dd41f1ac/commits/f14732d0cc854ce3ec374b97ecd4ec3c383386cd",
             "message": "Fixes #49 and #50",
             "committedDate": "2022-03-23T11:59:46Z",
             "committer": {
                "email": "xyz.abcd@email.com"
             },
             "details": [
                {
                   "action": "edit",
                   "changes": "",
                   "file": "/LICENSE",
                   "additions": 0,
                   "deletions": 0,
                   "totalChanges": 0
                }
             ]
          }
       ],
       "repository": {
          "id": "8d7ba019-1739-431c-beb4-6025dd41f1ac",
          "name": "DeployableRepo",
          "url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo"
       },
       "branch": {
          "name": "refs/heads/master",
          "url": "https://dev.azure.com/xyzabcd/adoTests/_git/DeployableRepo?version=GBmaster"
       }
    }" \
    --user 'username':'passsword'

Réponse de réussite :

    {
       "result": {
          "status": "Success",
          "sysId: "1f8e586b879e85100f71cbfc0ebb3526"
       }
    }

### Exemple de demande cURL pour l'orchestration

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/orchestration?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
      "toolId": "d450f5c887e609100f71cbfc0ebb35e5",
      "buildNumber": 5676,
      "nativeId": "adoTests/DeployableRepo#deploy#5676",
      "pipelineId": "2",
      "name": "adoTests/DeployableRepo#deploy",
      "id": "adoTests/DeployableRepo#deploy#5676",
      "url": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676#deploy/",
      "previousAttemptUrl": "",
      "attemptNumber": 1,
      "pipelineExecutionUrl": "https://dev.azure.com/xyzabcd/_build/results?buildId=5676",
      "orchestrationTaskUrl": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
      "orchestrationTaskName": "adoTests/DeployableRepo #deploy",
      "orchestrationTask": {
        "orchestrationTaskName": "adoTests/DeployableRepo#deploy",
        "toolId": "d450f5c887e609100f71cbfc0ebb35e5",
        "orchestrationTaskURL": "https://dev.azure.com/xyzabcd/adoTests/_build?name=DeployableRepo#deploy",
        "stageName": "deploy"
      },
      "upstreamTaskUrl": [],
      "result": "building",
      "startDateTime": "2022-03-23 12:01:31",
      "log": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20",
      "logUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=5676&view=logs&j=5264e576-3c6f-51f6-f055-fab409685f20"
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": {
          "status": "Success",
          "sysId: "37dfd8a7879e85100f71cbfc0ebb35c0"
       }
    }

### Exemple de demande cURL pour le plan

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/plan?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "id": "1053",
       "type": "bug",
       "state": "planned",
       "shortDescription": "Title - Work Item test in 1.33.3",
       "createdDateTime": "2022-03-23T10:45:53.02Z",
       "parentId": "",
       "url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053",
       "version": {
          "id": "adoTests",
          "shortDescription": "adoTests",
          "createdDateTime": "2022-03-23T10:46:12.355Z",
          "url": "https://dev.azure.com/xyzabcd/adoTests",
          "app": {
             "id": "adoTests",
             "shortDescription": "adoTests",
             "createdDateTime": "2022-03-23T10:46:12.355Z",
             "url": "https://dev.azure.com/xyzabcd/9fe32a65-60a5-46fe-bc8d-11a92bf059f9/_workitems/edit/1053"
          }
       },
       "app": {
          "id": "adoTests",
          "shortDescription": "adoTests",
          "createdDateTime": "2022-03-23T10:46:12.355Z",
          "url": "https://dev.azure.com/xyzabcd/adoTests"
       },
       "native_type": "Issue",
       "native_state": "To Do",
       "assignedTo": {
          "name": "Xyz Abcd",
          "userName": "xyz.abcd@email.com",
          "id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
          "email": "xyz.abcd@email.com"
       },
       "createdBy": {
          "name": "Xyz Abcd",
          "userName": "xyz.abcd@email.com",
          "id": "84c92fcd-e08b-6a5f-a8a6-ccda27055560",
          "email": "xyz.abcd@email.com"
       }
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": {
          "status": "Success",
          "sysId: "533020eb879e85100f71cbfc0ebb3591"
       }
    }

### Exemple de demande cURL pour le test

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/test?toolId=8d4f56598702c510f894419d0ebb35aa&testType=junit" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "attemptNumber": 1,
       "blockedTests": 0,
       "buildNumber": 675,
       "duration": 0.079,
       "failedTests": 0,
       "finishTime": "2022-03-23T12:02:25.957Z",
       "name": "adoTests/DeployableRepo/Test #675-2982",
       "passedTests": 20,
       "pipelineName": "adoTests/DeployableRepo",
       "skippedTests": 0,
       "stageName": "Test",
       "startTime": "2022-03-23T12:02:24.36Z",
       "taskExecutionUrl": "https://dev.azure.com/xyzabcd/adoTests/_build/results?buildId=675#Test/{Job name}",
       "totalTests": 20,
       "url": "https://dev.azure.com/xyzabcd/adoTests/_TestManagement/Runs?runId=2982&_a=runCharts"
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": {
          "status": "Success",
          "sysId: "fd3fdc6b879e85100f71cbfc0ebb356a"
       }
    }

## DevOps - POST /devops/tool/event/{sn_tool_id} {#ariaid-title16}

Publie la charge utile transmise à partir de GitHub, Jiraou Bitbucket vers la table Événements \[sn_devops_event\] pour traitement par un flux secondaire prédéfini.
Avant d'appeler ce point de terminaison, vous devez créer une intégration avec l'outil que vous utilisez.

* [Intégration de GitHub à DevOps](https://www.servicenow.com/docs/access?context=github-integration-dev-ops&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)
* [Intégration de Jira à DevOps](https://www.servicenow.com/docs/access?context=jira-integration-dev-ops&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)
* [Intégration de Bitbucket à DevOps](https://www.servicenow.com/docs/access?context=bitbucket-integration-dev-ops&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)
{#devops-POST-tool-event__ul_omt_jyy_1tb}

Pour traiter les événements provenant de tout autre outil que GitHub, , ou Bitbucket, utilisez plutôt le [DevOps - POST /devops/tool/{capability}](https://servicenow-prod.fluidtopics.net/9rUzpQvdymbgycDHCeINZw#devops-POST-tool "Publie la charge utile transmise dans la table Événement entrant [sn_devops_inbound] pour traitement par un flux secondaire personnalisé DevOps .") point de Jiraterminaison.  
Remarque :  
À partir de la version 1.34.1, une nouvelle version de cette API a été introduite. Avec cette API, les politiques d'authentification adaptative peuvent ne pas s'exécuter comme prévu. Pour en savoir plus sur ces stratégies, reportez-vous à la section [Adaptive authentication](https://www.servicenow.com/docs/access?context=adaptive-authentication&version=xanadu&pubname=xanadu-platform-security&ft:locale=en-US).

### Format d'URL

URL versionnée : /api/sn_devops/{api_version}/devops/tool/event/{sn_tool_id}

URL par défaut : /api/sn_devops/devops/tool/event/{sn_tool_id}

### Paramètres de demande pris en charge

{#devops-POST-tool-event__entry__2}{#devops-POST-tool-event__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
| sn_tool_id | Sys_id de l'outil à utiliser pour la demande. Situé dans la table Outils DevOps \[sn_devops_tool\]. Type de données : chaîne |
[Tableau 85. Paramètres de chemin d'accès]

{#devops-POST-tool-event__entry__8}

| Nom | Description |
|-|-|
| Aucun |   |
[Tableau 86. Paramètres de requête]

{#devops-POST-tool-event__table_d2p_14y_1tb__entry__2}

| Nom | Description |
|-|-|
| Dépendant de l'outil | L'outil détermine le contenu de la charge utile. La charge utile peut être localisée dans l'outil sous les informations du webhook. |
[Tableau 87. Paramètres du corps de la demande]

{#devops-POST-tool-event__table_d2p_14y_1tb}

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-tool-event__table_zbt_c4y_1tb__entry__2}{#devops-POST-tool-event__accept-JSON-only-entry-RESTAPI}{#devops-POST-tool-event__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 88. En-têtes de demandes]

{#devops-POST-tool-event__table_zbt_c4y_1tb} {#devops-POST-tool-event__entry__24}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-POST-tool-event__entry__28}{#devops-POST-tool-event__entry-200-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 201 | Demande terminée avec succès. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 401 | Authentification non valide ou manquante. |
| 500 | Erreur interne du serveur. Une erreur de logique s'est produite sur le code côté serveur. |
[Tableau 90. Codes d'état]

### Paramètres du corps de réponse {#devops-POST-tool-event__section_x5g_vhc_btb}

{#devops-POST-tool-event__table_y5g_vhc_btb__entry__2}

| Nom | Description |
|-|-|
| résultat | État de la réponse. Valeurs possibles : * échec : ID d'outil incorrect. Événement non créé. * réussite : événement créé dans la table Événements \[sn_devops_event\]. Toutefois, l'état de l'événement peut être Erreur si une charge utile incorrecte a été fournie. {#devops-POST-tool-event__ul_czk_xlp_ctb} Type de données : chaîne |
[ ]

{#devops-POST-tool-event__table_y5g_vhc_btb}  

### Demande cURL

GitHub

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/46a07b2f471e011028c23a34846d43b2" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "ref": "refs/heads/master",
       "before": "59078a17cad1f4129754971c808d6c399b6141a5",
       "after": "b7957bab20835449c4d597fee24075a9a5a2c099",
       "repository": {
          "id": 252146476,
          "node_id": "MDEwOlJlcG9zaXRvcnkyNTIxNDY0NzY=",
          "name": "test",
          "full_name": "Xyz002/test",
          "private": false,
          "owner": {
             "name": "Xyz002",
             "email": "62993516+Xyz002@users.noreply.github.com",
             "login": "Xyz002",
             "id": 62993516,
             "node_id": "MDQ6VXNlcjYyOTkzNTE2",
             "avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
             "gravatar_id": "",
             "url": "https://api.github.com/users/Xyz002",
             "html_url": "https://github.com/Xyz002",
             "followers_url": "https://api.github.com/users/Xyz002/followers",
             "following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
             "gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
             "starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
             "subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
             "organizations_url": "https://api.github.com/users/Xyz002/orgs",
             "repos_url": "https://api.github.com/users/Xyz002/repos",
             "events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
             "received_events_url": "https://api.github.com/users/Xyz002/received_events",
             "type": "User",
             "site_admin": false
          },
          "html_url": "https://github.com/Xyz002/test",
          "description": null,
          "fork": false,
          "url": "https://github.com/Xyz002/test",
          "forks_url": "https://api.github.com/repos/Xyz002/test/forks",
          "keys_url": "https://api.github.com/repos/Xyz002/test/keys{/key_id}",
          "collaborators_url": "https://api.github.com/repos/Xyz002/test/collaborators{/collaborator}",
          "teams_url": "https://api.github.com/repos/Xyz002/test/teams",
          "hooks_url": "https://api.github.com/repos/Xyz002/test/hooks",
          "issue_events_url": "https://api.github.com/repos/Xyz002/test/issues/events{/number}",
          "events_url": "https://api.github.com/repos/Xyz002/test/events",
          "assignees_url": "https://api.github.com/repos/Xyz002/test/assignees{/user}",
          "branches_url": "https://api.github.com/repos/Xyz002/test/branches{/branch}",
          "tags_url": "https://api.github.com/repos/Xyz002/test/tags",
          "blobs_url": "https://api.github.com/repos/Xyz002/test/git/blobs{/sha}",
          "git_tags_url": "https://api.github.com/repos/Xyz002/test/git/tags{/sha}",
          "git_refs_url": "https://api.github.com/repos/Xyz002/test/git/refs{/sha}",
          "trees_url": "https://api.github.com/repos/Xyz002/test/git/trees{/sha}",
          "statuses_url": "https://api.github.com/repos/Xyz002/test/statuses/{sha}",
          "languages_url": "https://api.github.com/repos/Xyz002/test/languages",
          "stargazers_url": "https://api.github.com/repos/Xyz002/test/stargazers",
          "contributors_url": "https://api.github.com/repos/Xyz002/test/contributors",
          "subscribers_url": "https://api.github.com/repos/Xyz002/test/subscribers",
          "subscription_url": "https://api.github.com/repos/Xyz002/test/subscription",
          "commits_url": "https://api.github.com/repos/Xyz002/test/commits{/sha}",
          "git_commits_url": "https://api.github.com/repos/Xyz002/test/git/commits{/sha}",
          "comments_url": "https://api.github.com/repos/Xyz002/test/comments{/number}",
          "issue_comment_url": "https://api.github.com/repos/Xyz002/test/issues/comments{/number}",
          "contents_url": "https://api.github.com/repos/Xyz002/test/contents/{+path}",
          "compare_url": "https://api.github.com/repos/Xyz002/test/compare/{base}...{head}",
          "merges_url": "https://api.github.com/repos/Xyz002/test/merges",
          "archive_url": "https://api.github.com/repos/Xyz002/test/{archive_format}{/ref}",
          "downloads_url": "https://api.github.com/repos/Xyz002/test/downloads",
          "issues_url": "https://api.github.com/repos/Xyz002/test/issues{/number}",
          "pulls_url": "https://api.github.com/repos/Xyz002/test/pulls{/number}",
          "milestones_url": "https://api.github.com/repos/Xyz002/test/milestones{/number}",
          "notifications_url": "https://api.github.com/repos/Xyz002/test/notifications{?since,all,participating}",
          "labels_url": "https://api.github.com/repos/Xyz002/test/labels{/name}",
          "releases_url": "https://api.github.com/repos/Xyz002/test/releases{/id}",
          "deployments_url": "https://api.github.com/repos/Xyz002/test/deployments",
          "created_at": 1585737871,
          "updated_at": "2022-01-04T14:37:36Z",
          "pushed_at": 1648103939,
          "git_url": "git://github.com/Xyz002/test.git",
          "ssh_url": "git@github.com:Xyz002/test.git",
          "clone_url": "https://github.com/Xyz002/test.git",
          "svn_url": "https://github.com/Xyz002/test",
          "homepage": null,
          "size": 1378,
          "stargazers_count": 0,
          "watchers_count": 0,
          "language": "Java",
          "has_issues": true,
          "has_projects": true,
          "has_downloads": true,
          "has_wiki": true,
          "has_pages": false,
          "forks_count": 0,
          "mirror_url": null,
          "archived": false,
          "disabled": false,
          "open_issues_count": 2,
          "license": null,
          "allow_forking": true,
          "is_template": false,
          "topics": [],
          "visibility": "public",
          "forks": 0,
          "open_issues": 2,
          "watchers": 0,
          "default_branch": "master",
          "stargazers": 0,
          "master_branch": "master"
       },
       "pusher": {
          "name": "Xyz002",
          "email": "62993516+Xyz002@users.noreply.github.com"
       },
       "sender": {
          "login": "Xyz002",
          "id": 62993516,
          "node_id": "MDQ6VXNlcjYyOTkzNTE2",
          "avatar_url": "https://avatars.githubusercontent.com/u/62993516?v=4",
          "gravatar_id": "",
          "url": "https://api.github.com/users/Xyz002",
          "html_url": "https://github.com/Xyz002",
          "followers_url": "https://api.github.com/users/Xyz002/followers",
          "following_url": "https://api.github.com/users/Xyz002/following{/other_user}",
          "gists_url": "https://api.github.com/users/Xyz002/gists{/gist_id}",
          "starred_url": "https://api.github.com/users/Xyz002/starred{/owner}{/repo}",
          "subscriptions_url": "https://api.github.com/users/Xyz002/subscriptions",
          "organizations_url": "https://api.github.com/users/Xyz002/orgs",
          "repos_url": "https://api.github.com/users/Xyz002/repos",
          "events_url": "https://api.github.com/users/Xyz002/events{/privacy}",
          "received_events_url": "https://api.github.com/users/Xyz002/received_events",
          "type": "User",
          "site_admin": false
       },
       "created": false,
       "deleted": false,
       "forced": false,
       "base_ref": null,
       "compare": "https://github.com/Xyz002/test/compare/59078a17cad1...b7957bab2083",
       "commits": [
          {
             "id": "b7957bab20835449c4d597fee24075a9a5a2c099",
             "tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
             "distinct": true,
             "message": "updated this file",
             "timestamp": "2022-03-24T12:08:59+05:30",
             "url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
             "author": {
                "name": "Xyz002",
                "email": "62993516+Xyz002@users.noreply.github.com",
                "username": "Xyz002"
             },
             "committer": {
                "name": "GitHub",
                "email": "noreply@github.com",
                "username": "web-flow"
             },
             "added": [],
             "removed": [],
             "modified": [
                "README.me"
             ]
          }
       ],
       "head_commit": {
          "id": "b7957bab20835449c4d597fee24075a9a5a2c099",
          "tree_id": "fa8d699762ec0a25868fa1ab4d299da392f0a974",
          "distinct": true,
          "message": "updated this file",
          "timestamp": "2022-03-24T12:08:59+05:30",
          "url": "https://github.com/Xyz002/test/commit/b7957bab20835449c4d597fee24075a9a5a2c099",
          "author": {
             "name": "Xyz002",
             "email": "62993516+Xyz002@users.noreply.github.com",
             "username": "Xyz002"
          },
          "committer": {
             "name": "GitHub",
             "email": "noreply@github.com",
             "username": "web-flow"
          },
          "added": [],
          "removed": [],
          "modified": [
             "README.me"
          ]
       },
       "sn_tool_id": "46a07b2f471e011028c23a34846d43b2"
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": "success"
    }

### Demande cURL

Jira

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/9ed237af471e011028c23a34846d4327" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "timestamp": 1648104684180,
       "webhookEvent": "jira:issue_created",
       "issue_event_type_name": "issue_created",
       "user": {
          "self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
          "name": "admin",
          "key": "admin",
          "emailAddress": "username@email.com",
          "avatarUrls": {
             "48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
             "24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
             "16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
             "32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
          },
          "displayName": "Administrator",
          "active": true,
          "timeZone": "America/Los_Angeles"
       },
       "issue": {
          "id": "84800",
          "self": "http://jira1.sndevops.xyz/rest/api/2/issue/84800",
          "key": "BAL-2",
          "fields": {
             "issuetype": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10002",
                "id": "10002",
                "description": "A task that needs to be done.",
                "iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10318&avatarType=issuetype",
                "name": "Task",
                "subtask": false,
                "avatarId": 10318
             },
             "timespent": null,
             "project": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/project/10507",
                "id": "10507",
                "key": "BAL",
                "name": "balu_devops",
                "projectTypeKey": "software",
                "avatarUrls": {
                   "48x48": "http://jira1.sndevops.xyz/secure/projectavatar?avatarId=10324",
                   "24x24": "http://jira1.sndevops.xyz/secure/projectavatar?size=small&avatarId=10324",
                   "16x16": "http://jira1.sndevops.xyz/secure/projectavatar?size=xsmall&avatarId=10324",
                   "32x32": "http://jira1.sndevops.xyz/secure/projectavatar?size=medium&avatarId=10324"
                }
             },
             "fixVersions": [],
             "aggregatetimespent": null,
             "resolution": null,
             "customfield_10302": null,
             "customfield_10105": null,
             "resolutiondate": null,
             "workratio": 0,
             "lastViewed": null,
             "watches": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/watchers",
                "watchCount": 0,
                "isWatching": false
             },
             "created": "2022-03-24T06:51:22.896+0000",
             "priority": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
                "iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
                "name": "Medium",
                "id": "3"
             },
             "customfield_10100": "0|i0cprw:",
             "customfield_10101": "SCRUMBOARD-14",
             "customfield_10300": null,
             "labels": [],
             "timeestimate": 240,
             "aggregatetimeoriginalestimate": 300,
             "versions": [],
             "issuelinks": [
                {
                   "id": "10701",
                   "self": "http://jira1.sndevops.xyz/rest/api/2/issueLink/10701",
                   "type": {
                      "id": "10000",
                      "name": "Blocks",
                      "inward": "is blocked by",
                      "outward": "blocks",
                      "self": "http://jira1.sndevops.xyz/rest/api/2/issueLinkType/10000"
                   },
                   "outwardIssue": {
                      "id": "84741",
                      "key": "BAL-1",
                      "self": "http://jira1.sndevops.xyz/rest/api/2/issue/84741",
                      "fields": {
                         "summary": "log4jtesting",
                         "status": {
                            "self": "http://jira1.sndevops.xyz/rest/api/2/status/3",
                            "description": "This issue is being actively worked on at the moment by the assignee.",
                            "iconUrl": "http://jira1.sndevops.xyz/images/icons/statuses/inprogress.png",
                            "name": "In Progress",
                            "id": "3",
                            "statusCategory": {
                               "self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/4",
                               "id": 4,
                               "key": "indeterminate",
                               "colorName": "yellow",
                               "name": "In Progress"
                            }
                         },
                         "priority": {
                            "self": "http://jira1.sndevops.xyz/rest/api/2/priority/3",
                            "iconUrl": "http://jira1.sndevops.xyz/images/icons/priorities/medium.svg",
                            "name": "Medium",
                            "id": "3"
                         },
                         "issuetype": {
                            "self": "http://jira1.sndevops.xyz/rest/api/2/issuetype/10004",
                            "id": "10004",
                            "description": "A problem which impairs or prevents the functions of the product.",
                            "iconUrl": "http://jira1.sndevops.xyz/secure/viewavatar?size=xsmall&avatarId=10303&avatarType=issuetype",
                            "name": "Bug",
                            "subtask": false,
                            "avatarId": 10303
                         }
                      }
                   }
                }
             ],
             "assignee": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
                "name": "admin",
                "key": "admin",
                "emailAddress": "username@email.com",
                "avatarUrls": {
                   "48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
                   "24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
                   "16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
                   "32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
                },
                "displayName": "Administrator",
                "active": true,
                "timeZone": "America/Los_Angeles"
             },
             "updated": "2022-03-24T06:51:22.896+0000",
             "status": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/status/10000",
                "description": "",
                "iconUrl": "http://jira1.sndevops.xyz/",
                "name": "To Do",
                "id": "10000",
                "statusCategory": {
                   "self": "http://jira1.sndevops.xyz/rest/api/2/statuscategory/2",
                   "id": 2,
                   "key": "new",
                   "colorName": "blue-gray",
                   "name": "To Do"
                }
             },
             "components": [],
             "timeoriginalestimate": 300,
             "description": "Task description",
             "timetracking": {
                "originalEstimate": "5m",
                "remainingEstimate": "4m",
                "originalEstimateSeconds": 300,
                "remainingEstimateSeconds": 240
             },
             "customfield_10203": null,
             "customfield_10204": null,
             "customfield_10205": null,
             "attachment": [],
             "aggregatetimeestimate": 240,
             "summary": "Task Summary",
             "creator": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
                "name": "admin",
                "key": "admin",
                "emailAddress": "username@email.com",
                "avatarUrls": {
                   "48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
                   "24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
                   "16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
                   "32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
                },
                "displayName": "Administrator",
                "active": true,
                "timeZone": "America/Los_Angeles"
             },
             "subtasks": [],
             "reporter": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/user?username=admin",
                "name": "admin",
                "key": "admin",
                "emailAddress": "username@email.com",
                "avatarUrls": {
                   "48x48": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=48",
                   "24x24": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=24",
                   "16x16": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=16",
                   "32x32": "https://www.gravatar.com/avatar/eccd6ec2c978f1f1d4a1fed4e81265eb?d=mm&s=32"
                },
                "displayName": "Administrator",
                "active": true,
                "timeZone": "America/Los_Angeles"
             },
             "customfield_10000": "{summaryBean=com.atlassian.jira.plugin.devstatus.rest.SummaryBean@2ccf8c6[summary={pullrequest=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@fbc42d4[overall=PullRequestOverallBean{stateCount=0, state='OPEN', details=PullRequestOverallDetails{openCount=0, mergedCount=0, declinedCount=0}},byInstanceType={}], build=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@71e33347[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BuildOverallBean@1c24654d[failedBuildCount=0,successfulBuildCount=0,unknownBuildCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], review=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@1ea8fb17[overall=com.atlassian.jira.plugin.devstatus.summary.beans.ReviewsOverallBean@6dc95939[stateCount=0,state=<null>,dueDate=<null>,overDue=false,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], deployment-environment=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@55826cc[overall=com.atlassian.jira.plugin.devstatus.summary.beans.DeploymentOverallBean@3ae93527[topEnvironments=[],showProjects=false,successfulCount=0,count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], repository=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@6340012e[overall=com.atlassian.jira.plugin.devstatus.summary.beans.CommitOverallBean@44678cee[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}], branch=com.atlassian.jira.plugin.devstatus.rest.SummaryItemBean@4dbce8[overall=com.atlassian.jira.plugin.devstatus.summary.beans.BranchOverallBean@737ee1cb[count=0,lastUpdated=<null>,lastUpdatedTimestamp=<null>],byInstanceType={}]},errors=[],configErrors=[]], devSummaryJson={\"cachedValue\":{\"errors\":[],\"configErrors\":[],\"summary\":{\"pullrequest\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":\"OPEN\",\"details\":{\"openCount\":0,\"mergedCount\":0,\"declinedCount\":0,\"total\":0},\"open\":true},\"byInstanceType\":{}},\"build\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"failedBuildCount\":0,\"successfulBuildCount\":0,\"unknownBuildCount\":0},\"byInstanceType\":{}},\"review\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"stateCount\":0,\"state\":null,\"dueDate\":null,\"overDue\":false,\"completed\":false},\"byInstanceType\":{}},\"deployment-environment\":{\"overall\":{\"count\":0,\"lastUpdated\":null,\"topEnvironments\":[],\"showProjects\":false,\"successfulCount\":0},\"byInstanceType\":{}},\"repository\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}},\"branch\":{\"overall\":{\"count\":0,\"lastUpdated\":null},\"byInstanceType\":{}}}},\"isStale\":false}}",
             "aggregateprogress": {
                "progress": 0,
                "total": 240,
                "percent": 0
             },
             "customfield_10200": null,
             "customfield_10201": null,
             "customfield_10202": null,
             "environment": null,
             "duedate": "2022-03-24",
             "progress": {
                "progress": 0,
                "total": 240,
                "percent": 0
             },
             "comment": {
                "comments": [],
                "maxResults": 0,
                "total": 0,
                "startAt": 0
             },
             "votes": {
                "self": "http://jira1.sndevops.xyz/rest/api/2/issue/BAL-2/votes",
                "votes": 0,
                "hasVoted": false
             },
             "worklog": {
                "startAt": 0,
                "maxResults": 20,
                "total": 0,
                "worklogs": []
             }
          }
       },
       "changelog": {
          "id": "14401",
          "items": [
             {
                "field": "Link",
                "fieldtype": "jira",
                "from": null,
                "fromString": null,
                "to": "BAL-1",
                "toString": "This issue blocks BAL-1"
             }
          ]
       },
       "sn_tool_id": "9ed237af471e011028c23a34846d4327"
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": "success"
    }

### Demande cURL

Bitbucket

    curl "https://instance.service-now.com/api/sn_devops/devops/tool/event/6975ecaf879e85100f71cbfc0ebb3575" \
    --request POST \
    --header "Accept:application/json" \
    --header "Content-Type:application/json" \
    --data "{
       "eventKey": "repo:refs_changed",
       "date": "2022-03-23T15:57:05+0000",
       "actor": {
          "name": "admin",
          "emailAddress": "username@email.com",
          "id": 1,
          "displayName": "Admin",
          "active": true,
          "slug": "admin",
          "type": "NORMAL",
          "links": {
             "self": [
                {
                   "href": "http://bitbucket2.sndevops.xyz/users/admin"
                }
             ]
          }
       },
       "repository": {
          "slug": "testautomationrepo1",
          "id": 12,
          "name": "TestAutomationRepo1",
          "scmId": "git",
          "state": "AVAILABLE",
          "statusMessage": "Available",
          "forkable": true,
          "origin": {
             "slug": "testautomationrepo1",
             "id": 1,
             "name": "TestAutomationRepo1",
             "scmId": "git",
             "state": "AVAILABLE",
             "statusMessage": "Available",
             "forkable": true,
             "project": {
                "key": "TES",
                "id": 1,
                "name": "TestAutomation",
                "public": false,
                "type": "NORMAL",
                "links": {
                   "self": [
                      {
                         "href": "http://bitbucket2.sndevops.xyz/projects/TES"
                      }
                   ]
                }
             },
             "public": false,
             "links": {
                "clone": [
                   {
                      "href": "ssh://git@bitbucket2.sndevops.xyz:7999/tes/testautomationrepo1.git",
                      "name": "ssh"
                   },
                   {
                      "href": "http://bitbucket2.sndevops.xyz/scm/tes/testautomationrepo1.git",
                      "name": "http"
                   }
                ],
                "self": [
                   {
                      "href": "http://bitbucket2.sndevops.xyz/projects/TES/repos/testautomationrepo1/browse"
                   }
                ]
             }
          },
          "project": {
             "key": "~ADMIN",
             "id": 3,
             "name": "Admin",
             "type": "PERSONAL",
             "owner": {
                "name": "admin",
                "emailAddress": "username@email.com",
                "id": 1,
                "displayName": "Admin",
                "active": true,
                "slug": "admin",
                "type": "NORMAL",
                "links": {
                   "self": [
                      {
                         "href": "http://bitbucket2.sndevops.xyz/users/admin"
                      }
                   ]
                }
             },
             "links": {
                "self": [
                   {
                      "href": "http://bitbucket2.sndevops.xyz/users/admin"
                   }
                ]
             }
          },
          "public": false,
          "links": {
             "clone": [
                {
                   "href": "http://bitbucket2.sndevops.xyz/scm/~admin/testautomationrepo1.git",
                   "name": "http"
                },
                {
                   "href": "ssh://git@bitbucket2.sndevops.xyz:7999/~admin/testautomationrepo1.git",
                   "name": "ssh"
                }
             ],
             "self": [
                {
                   "href": "http://bitbucket2.sndevops.xyz/users/admin/repos/testautomationrepo1/browse"
                }
             ]
          }
       },
       "changes": [
          {
             "ref": {
                "id": "refs/heads/master",
                "displayId": "master",
                "type": "BRANCH"
             },
             "refId": "refs/heads/master",
             "fromHash": "b482b2e232f5fbdee73feed8ca1cfb774de6976e",
             "toHash": "d783254fe6f77bc7cc079358158aeef52a457587",
             "type": "UPDATE"
          }
       ],
       "sn_tool_id": "6975ecaf879e85100f71cbfc0ebb3575"
    }" \
    --user 'username':'password'

Réponse de réussite :

    {
       "result": "success"
    }

## DevOps - PUT /devops/orchestration/changeControl/{changeControlId} {#ariaid-title17}

Met à jour les informations de contrôle des changements pour la tâche d'orchestration spécifiée.

### Format d'URL {#devops-PUT-orch-changeControl__section_nrt_gp3_bmb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/changeControl/{changeControlId}

URL par défaut : /api/sn_devops/devops/orchestration/changeControl/{changeControlId}

### Paramètres de demande pris en charge

{#devops-PUT-orch-changeControl__entry__2}{#devops-PUT-orch-changeControl__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
| changeControlId (en anglais seulement) | Sys_id de la tâche de contrôle des changements. Situé dans la table de rappel \[sn_devops_callback\]. Type de données : chaîne |
[Tableau 91. Paramètres de chemin d'accès]

{#devops-PUT-orch-changeControl__entry__8}

| Nom | Description |
|-|-|
| toolId | Requis. Sys_id de l'outil DevOps associé à la tâche de contrôle des changements. Situé dans la table de l'outil d'orchestration \[sn_devops_orchestration_tool\]. Type de données : chaîne |
[Tableau 92. Paramètres de requête]

{#devops-PUT-orch-changeControl__entry__12}{#devops-PUT-orch-changeControl__ph-orch-callBackURL-devops}{#devops-PUT-orch-changeControl__ph-orch-orchestrationTaskDetails-message-devops}{#devops-PUT-orch-changeControl__ph-orch-orchestrationTaskDetails-triggerType-devops}{#devops-PUT-orch-changeControl__ph-orch-orchestrationTaskDetails-upstreamTaskExecutionURL-devops}{#devops-PUT-orch-changeControl__ph-orch-orchestrationTaskURL-devops}

| Nom | Description |
|-|-|
| URL de rappel | Requis. URL que l'instance ServiceNow peut rappeler une fois le processus d'approbation de la demande de changement associé terminé. Ce rappel doit permettre à l'exécution du pipeline de se poursuivre ou non, en fonction du résultat d'approbation. Type de données : chaîne |
| orchestrationTaskDetails | Requis. Description de la tâche d'orchestration. Type de données : objet "orchestrationTaskDetails": { "message": "String", "triggerType": "String", "upstreamTaskExecutionURL": "String" } {#devops-PUT-orch-changeControl__codeblock-orch-orchestrationTaskDetails-devops} |
| orchestrationTaskDetails.message | Message texte de forme libre. Type de données : chaîne |
| orchestrationTaskDetails.triggerType | Requis. La façon dont la tâche d'orchestration a été démarrée. Valeurs valides :{#devops-PUT-orch-changeControl__p-orch-orchestrationTaskDetails-triggerType-devops} * scm : la validation du code de l'outil Git/scm a déclenché la tâche. * en amont : la tâche en amont a déclenché cette tâche. * user : l'utilisateur a démarré manuellement la tâche. {#devops-PUT-orch-changeControl__ul-orch-orchestrationTaskDetails-triggerType-devops} Type de données : chaîne |
| orchestrationTaskDetails.upstreamTaskExecutionURL | Obligatoire si triggerType est défini sur <kbd class="ph userinput">l’amont</kbd>. URL d'exécution de la tâche en amont. Par exemple : https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/ Type de données : chaîne |
| orchestrationTaskURL | Requis. URL de la tâche d'orchestration. Par exemple : https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/ Type de données : chaîne |
| Type d'outil | Type d'outil DevOps . Valeur valide : Jenkins Type de données : chaîne |
| taskExecutionURL | Requis. URL de la tâche à exécuter. Type de données : chaîne |
[Tableau 93. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-PUT-orch-changeControl__entry__30}{#devops-PUT-orch-changeControl__accept-row-RESTAPI}{#devops-PUT-orch-changeControl__content_type-row-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Type de contenu | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 94. En-têtes de demandes]

{#devops-PUT-orch-changeControl__entry__38}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-PUT-orch-changeControl__entry__42}{#devops-PUT-orch-changeControl__entry-500-status-code}

| Code d'état | Description |
|-|-|
| 200 | Demande terminée avec succès. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 401 | Authentification non valide ou manquante. |
| 404 | Introuvable. L'enregistrement spécifié est introuvable. |
| 500 | Erreur interne du serveur. Une erreur inattendue s'est produite lors du traitement de la demande. La réponse contient des informations supplémentaires sur l'erreur. |
[Tableau 96. Codes d'état]

### Paramètres du corps de réponse

{#devops-PUT-orch-changeControl__entry__54}{#devops-PUT-orch-changeControl__ph-details-devops}{#devops-PUT-orch-changeControl__ph-details-errors-devops}

| Nom | Description |
|-|-|
| change_control | Marqueur indiquant si la tâche d'orchestration est sous contrôle de changement. Valeurs possibles : * true : sous contrôle de changement. * false : pas sous contrôle de changement. {#devops-PUT-orch-changeControl__ul_xss_1vm_k3b} Type de données : booléennes |
| Détails | Entrée pour toutes les conditions d'erreur. Type de données : objet "details": { "errors": [Array] } |
| Détails.Erreurs | Description d'une erreur unique. Type de données : tableau "errors": [ { "message": "String" } ] |
| Détails.Erreur.Message | Message d'erreur détaillé. Type de données : chaîne |
[ ]

### Exemple de demande cURL

    curl -X PUT "https://instance.service-now.com/api/sn_devops/v1/devops/orchestration/changeControl/f0ca45679323008b52f3b457415ae6?toolId=f0ca45679323008b52f3b457415ae6"
    -H "accept: application/json"\
    -H "Content-Type: application/json"\
    -u "username":"password"\
    -d "{
      \"orchestrationTaskURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-deploy/\",
      \"toolType\":\"jenkins\",
      \"callbackURL\":\"https://jenkins.mycompany.com:8080/sn-devops/964aca59-0cae-4d9b-a36d-5929f426cf31\",
    \"taskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\",  
    "\orchestrationTaskName\":\"StageName\",
      \"orchestrationTaskDetails\":{
        \"message\":\"Started by upstream project \\\"Mobile-Platform-test\\\" build number 40\",
        \"triggerType\":\"upstream\",
        \"upstreamTaskExecutionURL\":\"https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/\"}
    }"

Réponse :

    {
        "result": {
            "change_control": true
        }
    }

## DevOps - PUT /devops/orchestration/changeInfo/{changeInfo} {#ariaid-title18}

Met à jour les champs d'une demande de changement spécifiée.
<br />

### Format d'URL {#devops-PUT-orch-changeInfo__section_fbj_tjc_fwb}

URL versionnée : /api/sn_devops/{api_version}/devops/orchestration/changeInfo/{changeInfo}

URL par défaut : /api/sn_devops/devops/orchestration/changeInfo/{changeInfo}

### Paramètres de demande pris en charge

{#devops-PUT-orch-changeInfo__entry__2}{#devops-PUT-orch-changeInfo__version-RESTAPI}

| Nom | Description |
|-|-|
| api_version | Facultatif. Version du point de terminaison auquel accéder. Exemple : <kbd class="ph userinput">v1</kbd> ou <kbd class="ph userinput">v2</kbd>. Spécifiez uniquement cette valeur pour utiliser une version de point de terminaison différente de la dernière. Type de données : chaîne |
[Tableau 97. Paramètres de chemin d'accès]

{#devops-PUT-orch-changeInfo__entry__6}

| Nom | Description |
|-|-|
| changeRequestNumber | Requis. Numéro de la demande de changement associé à la tâche d'orchestration à mettre à jour. Situé dans la table Demande de changement \[change_request\]. Type de données : chaîne |
[Tableau 98. Paramètres de requête]

{#devops-PUT-orch-changeInfo__entry__10}

| Nom | Description |
|-|-|
| données | Requis. Paires nom-valeur pour le ou les champs à mettre à jour dans la demande de changement associée. Par exemple, pour mettre à jour le fichier de description courte, entrez une paire nom-valeur semblable à la suivante : "{\"short_description\": \"my short desc\" }" Pour le state paramètre, seules les transitions suivantes sont prises en charge : * Annuler: * L'état de la demande de changement doit être implémenté pour passer l'état sur Annuler. * Le reason paramètre est une entrée obligatoire pour mettre à jour l'état sur annulé. * fermé: * L'état de la demande de changement doit être Implémenter ou Post-implémentation pour passer l'état à Fermé. * close_code et close_notes sont des entrées obligatoires pour mettre à jour l'état sur Fermé. Valeurs possibles : * 4 : Annuler (valeur définie dans la propriété sn_devops.change_request.cancel_state.) * 3 : fermé (valeur définie dans la propriété sn_devops.change_request.closed_state.) Type de données : chaîne |
[Tableau 99. Paramètres du corps de la demande]

### En-têtes

Les en-têtes de demande et de réponse suivants s'appliquent à cette action HTTP uniquement ou s'appliquent à cette action d'une manière distincte. Pour obtenir la liste des en-têtes généraux utilisés dans l'API REST, consultez [En-têtes d'API REST pris en charge](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-PUT-orch-changeInfo__entry__14}{#devops-PUT-orch-changeInfo__accept-JSON-only-entry-RESTAPI}{#devops-PUT-orch-changeInfo__content_type-JSON-only-entry-RESTAPI}

| En-tête | Description |
|-|-|
| Accepter | Format de données du corps de la réponse. Prend uniquement en charge application/json. |
| Autorisation | À partir de la v2, cette API prend en charge l'authentification basée sur des jetons. Les jetons peuvent être acquis en cliquant sur le bouton Copier le jeton sur l'enregistrement de l'outil, situé dans la table Outil \[sn_devops_tool\]. Le jeton peut ensuite être utilisé dans un en-tête d'autorisation au format `Authorization : sn_devops. DevOpsToken <tool_sys_id> :<tool_token>`. Remarque : Si les détails de l'authentification de base (nom d'utilisateur et mot de passe) sont fournis en plus d'un en-tête d'autorisation avec jeton, l'authentification de base est prioritaire. Si l'utilisateur devops.system n'est pas disponible dans votre instance, utilisez la propriété Basculer vers cet utilisateur une fois l'authentification basée sur le jeton réussie . Cette propriété permet de définir n'importe quel utilisateur disposant du rôle sn_devops.integration, nécessaire pour terminer l'authentification par jeton. (pour en savoir plus, consultez [DevOps Change Velocity properties](https://www.servicenow.com/docs/access?context=dev-ops-administration&version=xanadu&pubname=xanadu-it-service-management&ft:locale=en-US)) ; |
| Content-Type | Format de données du corps de la demande. Prend uniquement en charge application/json. |
[Tableau 100. En-têtes de demandes]

{#devops-PUT-orch-changeInfo__entry__22}

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

### Codes d'état

Les codes d'état suivants s'appliquent à cette action HTTP. Pour obtenir la liste des codes d'état possibles utilisés dans l'API REST, consultez [Codes de réponse HTTP de l'API REST](https://servicenow-prod.fluidtopics.net/CFQa7z9NIrhoOq1u1cRN7g "REST (REpresentational State Transfer) est une architecture simple sans état qui fournit des normes entre les systèmes informatiques sur le Web, ce qui leur permet de communiquer plus facilement les uns avec les autres.").
{#devops-PUT-orch-changeInfo__entry__26}{#devops-PUT-orch-changeInfo__entry-200-status-code}{#devops-PUT-orch-changeInfo__entry-400-status-code}{#devops-PUT-orch-changeInfo__entry-404-status-code}

| Code d'état | Description |
|-|-|
| 200 | Réussi. La demande a été correctement traitée. |
| 400 | Demande incorrecte. Un type de demande incorrecte ou mal formé a été détecté. |
| 404 | Introuvable. L'élément demandé est introuvable. |
[Tableau 102. Codes d'état]

### Paramètres du corps de réponse

{#devops-PUT-orch-changeInfo__entry__34}

| Nom | Description |
|-|-|
| message | Description des résultats de la mise à jour. Type de données : chaîne |
| statut | État de la demande. Valeurs possibles : * Réussite : la demande de changement a été trouvée et les détails du changement ont été mis à jour avec succès. * Erreur : la demande de changement est introuvable et les détails du changement n'ont pas été mis à jour. Type de données : chaîne |
| updateStatus | État de la mise à jour. Valeurs possibles : * Fermer * \<\< Erreur \>\> Type de données : chaîne |
[ ]

### Demande cURL

L'exemple de code suivant montre comment mettre à jour différents champs dans la demande de changement CHG0030023.

    curl -X PUT"
    https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?changeRequestNumber=CHG0030023

    -H "accept: application/json"\
    -u "username":"password" 
    - D
    {
      "short_description": "Test description",
      "priority": "1",
      "start_date": "2021-02-05 08:00:00",
      "end_date": "2022-04-05 08:00:00",
      "justification": "test justification",
      "description": "test description",
      "cab_required": true,
      "comments": "This update for work notes is from jenkins file",
      "work_notes": "test work notes",
      "assignment_group": "a715cd759f2002002920bde8132e7018"
    }

Réponse :

    {
      "result": {
        "updateStatus": "Done",
        "status": "Success",
        "message": "change request update successful"
      }
    }


