API do DevOps

  • Versão de lançamento: Yokohama
  • Atualizado 30 de jan. de 2025
  • 99 min. de leitura
  • A API DevOps fornece endpoints que permitem a interação com ferramentas DevOps externas.

    Esta REST API permite que os integradores:

    • Recupere as DevOps ferramentas disponíveis associadas a uma instância.
    • Recupere o objeto de esquema para um recurso de código, plano ou recurso de orquestração.
    • Verifique se uma tarefa de orquestração está sob controle de mudança e verifique seu status de controle de mudança.
    • Crie retornos de chamada para associar a execuções de tarefas sob controle de mudança.
    • Envie várias cargas de evento, que são transformadas em objetos normalizados e armazenadas como código, orquestração e objetos de plano.
    • Pesquise uma confirmação, ramificação ou repositório usando consultas codificadas e critérios específicos de pesquisa/classificação.
    • Registre versões e pacotes de artefatos junto com a execução e as confirmações de pipeline associadas.
    • Crie e gerencie eventos de aplicação e ferramenta de integração.

    Para obter informações adicionais, confira DevOps Config.

    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    DevOps - GET /devops/code/schema

    Retorna o objeto de esquema para um recurso de código especificado: confirmação, repositório ou ramificação.

    Depois de ter o objeto de esquema necessário, use-o para criar o corpo da solicitação para sua chamada POST correspondente; POST /code/commit, POST /code/repositoryou POST /code/branch.

    Nota:
    Este endpoint retorna somente os elementos do corpo da solicitação que são necessários.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/code/schema

    URL padrão: /api/sn_devops/devops/code/schema

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 1. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 2. Parâmetros de consulta
    Nome Descrição
    recurso Obrigatório. Tipo de esquema de recursos a retornar.

    Valores válidos (sem distinção entre maiúsculas e minúsculas):

    • ramificação
    • confirmar
    • repositório

    Tipo de dados: cadeia de caracteres

    Tabela 3. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 4. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 5. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 6. Códigos de status
    Código do status Descrição
    200 Solicitação concluída com sucesso.
    401 Autenticação inválida ou ausente.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    ramificação Descrição da ramificação na qual a confirmação do código foi feita.

    Tipo de dados: objeto

    "branch": {
      "name": "String",
      "path": "String"
    }
    ramificação.nome Nome da ramificação na qual a confirmação do código foi feita.

    Tipo de dados: cadeia de caracteres

    ramificação.caminho Caminho relativo da ramificação.

    Tipo de dados: cadeia de caracteres

    confirmações Descrição das confirmações.

    Tipo de dados: matriz de objetos

    "commits": [
      {
        "committedDate": "String",
        "committer": {Object},
        "details": [Array],
        "id": "String",
        "url": "String"      
      }
    ]
    confirma.DataConfirmada Data/hora em que o código foi confirmado na ferramenta DevOps de origem.

    Tipo de dados: cadeia de caracteres

    Formato: ISO 8601 com deslocamento de fuso horário

    Por exemplo: 1970-01-01T08:15:30-05:00

    confirma.confirmador Descrição da pessoa/entidade que solicitou a confirmação.

    Tipo de dados: objeto

    "committer": {
      "email": "String"
    }
    commits.committer.email Endereço de e-mail da pessoa que solicitou a confirmação.

    Tipo de dados: cadeia de caracteres

    detalhes.confirmações Detalhes da confirmação.
    Nota:
    A inclusão de detalhes em uma confirmação não é obrigatória. Este endpoint retorna uma matriz vazia para detalhes se eles não estiverem incluídos na confirmação.

    Tipo de dados: matriz de objetos

    "details": [
      {
        "action": "String",
        "additions": Number,
        "changes": Number,
        "deletions": Number,
        "file": "String",
        "totalChanges": Number
      }
    ]
    confirma.detalhes.ação Ação que foi executada no arquivo.

    Tipo de dados: cadeia de caracteres

    confirmações.detalhes.adições Número total de adições no arquivo.

    Tipo de dados: número

    confirma.detalhes.mudanças Número total de mudanças feitas.

    Tipo de dados: número

    confirmações.detalhes.exclusões Número total de exclusões no arquivo.

    Tipo de dados: número

    confirma.detalhes.arquivo Caminho do arquivo que foi modificado em relação à ramificação.

    Tipo de dados: cadeia de caracteres

    confirma.detalhes.totalMudanças Número total de adições e exclusões.

    Tipo de dados: número

    commits.id Identificador da plataforma de origem ou SHA de confirmação.

    Tipo de dados: cadeia de caracteres

    confirma.url URL da confirmação, como "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6".

    Tipo de dados: cadeia de caracteres

    nome Nome da ramificação ou repositório, como "Mestre" ou "Plataforma-Móvel".

    Tipo de dados: cadeia de caracteres

    caminho Caminho relativo da ramificação.

    Tipo de dados: cadeia de caracteres

    repositório Descrição do repositório no qual a confirmação foi feita.

    Tipo de dados: objeto

    "repository": {
      "name": "String",
      "url": "String"
    }
    repository.name Nome do repositório.

    Tipo de dados: cadeia de caracteres

    repositório.URL URL do repositório na ferramenta DevOps de origem.

    Tipo de dados: cadeia de caracteres

    URL URL do repositório, como "https://github.com/mycompany/mobileplatform".

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação cURL para 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"
          }
       }
    }

    Amostra de solicitação cURL para 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
                   }
                ]
             }
          ]
       }
    }

    Amostra de solicitação cURL para 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

    Retorna o status atual do evento de integração especificado que está sendo processado ou sendo processado de forma assíncrona pelo serviço DevOps.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/onboarding/status

    URL padrão: /api/sn_devops/devops/onboarding/status

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 7. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 8. Parâmetros de consulta
    Nome Descrição
    id Identificador exclusivo do evento de integração cujo status será retornado. Este valor é fornecido nos resultados de retorno do endpoint que invocou a solicitação de evento, como /devops/onboarding/app ou /devops/onboarding/tool.

    Tipo de dados: cadeia de caracteres

    Tabela 9. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 10. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 11. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 12. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    202 Pendente - A solicitação de integração foi criada e o serviço DevOps está processando a solicitação.
    207 Sucesso parcial - a solicitação de integração foi criada e o serviço DevOps processará a solicitação.
    400 Falha - O evento de integração falhou.
    404 Falha - O endpoint não conseguiu encontrar nenhuma solicitação correspondente ao ID de evento especificado.

    Parâmetros do corpo da resposta

    Nome Descrição
    resultado Resultados da solicitação de integração.
    Tipo de dados: objeto
    "result": {
      "code": "String",
      "importRequestsSysIds": "[Array],
      "messageDetails": {Object],
      "onboardingRequestID": "String",
      "status": "String"
    }
    código.resultado Código de status HTTP.

    Tipo de dados: cadeia de caracteres

    result.importRequestsSysIds Lista de solicitações de importação que foram criadas como parte na solicitação de integração.

    Tipo de dados: matriz de cadeias de caracteres

    result.messageDetails Detalhes sobre o andamento do evento de integração.
    Tipo de dados: objeto
    "messageDetails": {
      "apps": [Array],
      "pipelines": [Array],
      "plans": [Array],
      "repositories": [Array],
      "status": "String",
      "toolResponse": [Array]
    }
    result.messageDetails.apps Define os apps a serem criados na instância ServiceNow associada.

    Tipo de dados: matriz de objetos

    "apps": [{
      "appId": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.apps.appId Sys_id da aplicação que foi gerado quando a aplicação foi integrada.

    Tipo de dados: cadeia de caracteres

    Tabela: Aplicações [sn_devops_app]

    result.messageDetails.apps.message Mensagem que descreve o status da integração da aplicação.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.apps.name Nome da aplicação que está sendo integrada.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.apps.status Status atual da integração da aplicação.
    Valores possíveis:
    • Concluído negativo
    • Sucesso parcial
    • Êxito

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines Lista de pipelines associados ao evento de integração e os detalhes correspondentes.

    Tipo de dados: matriz de objetos

    "pipelines": [{
      "changeStepAssociation": [Array],
      "errors": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.pipelines.changeStepAssociation Matriz de objetos que descreve todas as etapas de mudança associadas à integração.

    Tipo de dados: matriz de objetos

    "changeStepAssociation": [{
      "changeStepName": "String",
      "status": "String",
      "summary": "String",
    }]
    result.messageDetails.pipelines.changeStepAssociation.changeStepName Nome da etapa de mudança.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines.changeStepAssociation.status Status da associação da etapa de mudança para o pipeline.
    Valores possíveis:
    • Concluído negativo
    • Êxito

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines.changeStepAssociation.summary Resumo do status da associação da etapa de mudança.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines.errors Lista de erros detectados ao associar o pipeline.

    Tipo de dados: matriz

    result.messageDetails.pipelines.message Mensagem que descreve o status da associação de pipeline.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines.name Nome do pipeline.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.pipelines.status Status da associação de pipeline.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.plans Lista de planos associados ao evento de integração e os detalhes correspondentes.

    Tipo de dados: matriz de objetos

    "plans": [{
      "errors": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.plans.errors Lista de erros detectados ao associar o plano.

    Tipo de dados: matriz

    result.messageDetails.plans.message Mensagem que descreve o status da associação de pipeline.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.plans.name Nome do plano.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.plans.status Status da associação do plano.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.repositories Lista de repositórios associados ao evento de integração e os detalhes correspondentes.

    Tipo de dados: matriz de objetos

    "repositories": [{
      "configureStatus": {Object}, 
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.repositories.configureStatus Detalhes do status de configuração do webhook para o repositório.

    Tipo de dados: objeto

    "configureStatus": {
      "message": "String",
      "status": "String",
    }
    result.messageDetails.repositories.configureStatus.message Mensagem que descreve o status atual da configuração do webhook.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.repositories.configureStatus.status Status da configuração do webhook.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.repositories.message Mensagem que descreve o status atual da associação do repositório.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.repositories.name Nome do repositório.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.repositories.status Status da associação de repositório.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.status Status da solicitação de integração.
    Valores possíveis:
    • Concluído negativo
    • Sucesso parcial
    • Êxito

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse Lista de ferramentas a serem integradas na instância ServiceNow associada.

    Tipo de dados: matriz de objetos

    "toolResponse": [{
      "configureStatus": {Object},
      "connectStatus": {Object},
      "createStatus": {Object},
      "discoveryStatus": {Object},
      "name": "String",
      "status": "String",
      "type": "String"
    }]
    result.messageDetails.toolResponse.configureStatus Status de configuração da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, retorna status e error.

    Tipo de dados: objeto

    "configureStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.configureStatus.error Erros detectados durante a configuração da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.configureStatus.message Mensagem que descreve o status bem-sucedido da configuração da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.configureStatus.status Status da configuração da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.connectStatus Status da conexão da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, retorna status e error.

    Tipo de dados: objeto

    "connectStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.connectStatus.error Erros detectados durante a conexão da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.connectStatus.message Mensagem que descreve o status bem-sucedido da conexão da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.connectStatus.status Status da conexão da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.createStatus Status de criação da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, retorna status e error.

    Tipo de dados: objeto

    "createStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.createStatus.error Erros detectados durante a criação da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.createStatus.message Mensagem que descreve o status bem-sucedido da criação da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.createStatus.status Status da criação da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.discoveryStatus Status de descoberta da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, retorna status e error.

    Tipo de dados: objeto

    "discoveryStatus": {
      "error": "String",
      "imports: [Array],
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.discoveryStatus.error Erros detectados durante a descoberta da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.discoveryStatus.imports Lista de entidades que foram descobertas.

    Tipo de dados: matriz de objetos

    "imports": [{
      "details": "String",
      "id": "String",
      "status": "String"
    }]
    result.messageDetails.toolResponse.discoveryStatus.imports.details Detalhes que descrevem a importação realizada.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.discoveryStatus.imports.id Sys_id da solicitação de importação.

    Tipo de dados: cadeia de caracteres

    Tabela: sn_devops_m2m_inbound_event_import_request

    result.messageDetails.toolResponse.discoveryStatus.imports.status Status da importação.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.discoveryStatus.message Mensagem que descreve o status da descoberta da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.discoveryStatus.status Status da descoberta da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.name Nome da ferramenta que está sendo integrada.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.status Status da integração da ferramenta.

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse.type Tipo de ferramenta, como Jira ou Jenkins.

    Tipo de dados: cadeia de caracteres

    result.onboardingRequestID Identificador exclusivo da solicitação de integração. Use este valor ao chamar o endpoint /devops/onboarding/status para obter o status do processo de integração da ferramenta associada.

    Tipo de dados: cadeia de caracteres

    resultado.status Status da solicitação de integração.
    Valores possíveis:
    • Concluído negativo
    • Sucesso parcial
    • Êxito

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    O exemplo a seguir mostra a solicitação de status de uma integração de ferramenta.

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

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

    Solicitação de cURL

    O exemplo a seguir mostra a solicitação de status de uma integração de aplicação.

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

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

    Verifica se a tarefa de orquestração está sob controle de mudança.

    Formato da URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/orchestration/changeControl

    URL padrão: /api/sn_devops/devops/orchestration/changeControl

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 13. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 14. Parâmetros de consulta
    Nome Descrição
    orquestrationTaskName Nome da tarefa de orquestração a ser verificada.

    Tipo de dados: cadeia de caracteres

    testarConexão Sinalizador que indica se a conexão de ponta a ponta entre a instância e a ferramenta DevOps deve ser testada.
    Valores válidos:
    • verdadeiro: testa a conexão de ponta a ponta.
    • falso: não teste a conexão de ponta a ponta.

    Tipo de dados: booliano

    Padrão: falso

    toolId Obrigatório. Sys_id da ferramenta de orquestração.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    toolType Tipo de ferramenta.

    Valores válidos: jenkins

    Tipo de dados: cadeia de caracteres

    Tabela 15. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 16. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tabela 17. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 18. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    401 Autenticação inválida ou ausente.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta (JSON ou XML)

    Nome Descrição
    changeControl Sinalizador que indica se a tarefa de orquestração está sob controle de mudança.
    Valores possíveis:
    • verdadeiro: sob controle de mudança.
    • falso: não está sob controle de mudança.

    Tipo de dados: booliano

    Sob controle de mudanças e usando a 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"

    Corpo da resposta.

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

    Fora do controle de mudanças e usando a 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"

    Corpo da resposta.

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

    DevOps - GET /devops/orchestration/changeInfo

    Recupera detalhes da solicitação de mudança para uma execução de pipeline de orquestração especificada.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/changeInfo

    URL padrão: /api/sn_devops/devops/orchestration/changeInfo

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 19. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 20. Parâmetros de consulta
    Nome Descrição
    Nome da ramificação Nome da ramificação associada à tarefa de orquestração.
    Nota:
    Você deve fornecer este parâmetro ao fazer referência a pipelines de várias ramificações ou a resposta poderá incluir detalhes de mudança incorretos.

    Tipo de dados: cadeia de caracteres

    buildNumber Obrigatório. Número de compilação do pipeline na ferramenta de orquestração.

    Tipo de dados: cadeia de caracteres

    pipelineName Opcional para projetos Jenkins Freestyle ou Maven, necessário para todos os outros. Nome do pipeline de Orquestração.

    Tipo de dados: cadeia de caracteres

    projectName Necessário para projetos do Jenkins Freestyle ou Maven, opcional para todos os outros. Nome do projeto da ferramenta de Orquestração.

    Tipo de dados: cadeia de caracteres

    NomeFase Opcional para projetos Jenkins Freestyle ou Maven, necessário para todos os outros. Nome da fase de Orquestração.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    toolId Obrigatório. Sys_id da ferramenta de orquestração.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    Tabela 21. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 22. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tabela 23. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 24. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    404 Não encontrado. O item solicitado não foi encontrado.

    Parâmetros do corpo da resposta (JSON ou XML)

    Nome Descrição
    mudança encontrada Sinalizador que indica se a solicitação de mudança foi localizada.
    Valores possíveis:
    • verdadeiro: a solicitação de mudança foi encontrada.
    • falso: a solicitação de mudança não foi encontrada.

    Tipo de dados: booliano

    número Número de solicitação de mudança

    Tipo de dados: cadeia de caracteres

    fase Fase atual.

    Tipo de dados: cadeia de caracteres

    fase_estado Estado da fase atual.

    Tipo de dados: cadeia de caracteres

    prioridade Prioridade da solicitação de mudança. A prioridade se baseia no impacto e na urgência da solicitação. Identifica a rapidez com que a Central de serviços deve tratar a tarefa.
    Valores possíveis:
    • 1: Crítico
    • 2: Alto
    • 3: Moderado
    • 4: Baixo

    Tipo de dados: cadeia de caracteres

    risco Nível de risco da mudança.
    Valores possíveis:
    • Baixo(a)
    • Alto 
    • Moderado(a)

    Tipo de dados: cadeia de caracteres

    estado Estado da solicitação de mudança.
    Valores possíveis:
    • Avaliar
    • Autorizar
    • Cancelado
    • Encerrado
    • Implementar
    • Novo(a)
    • Revisar
    • Agendado

    Tipo de dados: cadeia de caracteres

    Padrão: novo

    sys_id Sys_id da solicitação de mudança.

    Tipo de dados: cadeia de caracteres

    tipo Tipo de solicitação de mudança
    Valores possíveis:
    • Emergência
    • Normal
    • Padrão

    Tipo de dados: cadeia de caracteres

    URL URL da solicitação de mudança na instância ServiceNow associada.

    Tipo de dados: cadeia de caracteres

    changeAssignmentGroup Grupo de atribuição da solicitação de mudança.

    Tipo de dados: cadeia de caracteres

    changeApprovers Lista de aprovadores com os quais a mudança está pendente de aprovação.

    Tipo de dados: cadeia de caracteres

    planeamentoInícioDate Data e hora de início planejadas da mudança.

    Tipo de dados: cadeia de caracteres

    planejadoEndDate Data e hora de término planejadas da mudança.

    Tipo de dados: cadeia de caracteres

    Solicitação de 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

    Retorna o objeto de esquema para um recurso de orquestração especificado.

    Depois de ter o objeto de esquema necessário, use-o para criar o corpo da solicitação para sua chamada POST correspondente; /orchestration/orchestrationTask ou /orchestration/taskExecution.

    Nota:
    Este endpoint retorna somente os elementos do corpo da solicitação que são necessários.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/schema

    URL padrão: /api/sn_devops/devops/orchestration/schema

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 25. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 26. Parâmetros de consulta
    Nome Descrição
    recurso Tipo de esquema de recursos a retornar.
    Valores válidos (sem distinção entre maiúsculas e minúsculas):
    • build_details
    • retorno de chamada
    • orquestração_tarefa
    • task_execution

    Tipo de dados: cadeia de caracteres

    Tabela 27. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 28. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 29. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 30. Códigos de status
    Código do status Descrição
    200 Solicitação concluída com sucesso.
    401 Autenticação inválida ou ausente.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    callbackURL URL do retorno de chamada.

    Tipo de dados: cadeia de caracteres

    endDateTime Data/hora em que a execução da tarefa terminou.

    Tipo de dados: cadeia de caracteres

    nome Nome da tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    número Número de execução da tarefa. O mesmo que um número de incidente.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails Descrição da tarefa de orquestração.

    Tipo de dados: objeto

    "orchestrationTaskDetails": {
      "message": "String",
      "name": "String",
      "triggerType": "String",
      "url": "String"
    }
    orquestraçãoDetalhesDaTarefa.message Mensagem de texto de forma livre.

    Tipo de dados: cadeia de caracteres

    orchestrationTaskDetails.name Nome da tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails.triggerType A forma como a tarefa de orquestração foi iniciada.

    Tipo de dados: cadeia de caracteres

    orquestraçãoDetalhesDeTarefa.url URL da tarefa de orquestração da ferramenta de orquestração associada.

    Tipo de dados: cadeia de caracteres

    orquestrationTaskURL URL da tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    resultado Resultado da execução da tarefa.
    Valores válidos:
    • Concluído negativo
    • Êxito

    Tipo de dados: cadeia de caracteres

    startDateTime Data/hora em que a execução da tarefa foi iniciada.

    Tipo de dados: cadeia de caracteres

    taskExecutionURL URL da tarefa a ser executada.

    Tipo de dados: cadeia de caracteres

    Tipo de gatilho A forma como a tarefa de orquestração foi iniciada.

    Valores válidos:

    • scm: a confirmação do código da ferramenta Git/scm acionou o trabalho.
    • ascendente: o trabalho ascendente acionou este trabalho.
    • usuário: o usuário iniciou o trabalho manualmente.

    Tipo de dados: cadeia de caracteres

    URL URL da tarefa de orquestração da ferramenta de orquestração associada.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação cURL com 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/"
        }
      }
    }

    Amostra de solicitação cURL com 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/" 
      } 
    } 

    Amostra de solicitação cURL com 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

    Verifica se as informações transmitidas são válidas para a criação de uma tarefa de orquestração e para associação a uma etapa criada anteriormente.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/stepMapping

    URL padrão: /api/sn_devops/devops/orchestration/stepMapping

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 31. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 32. Parâmetros de consulta
    Nome Descrição
    ramificaNome Nome da ramificação associada à tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    éMultiBranch Se a ferramenta de orquestração for Jenkins, sinalizador que indica se o projeto é do tipo Várias ramificações.
    Valores válidos:
    • verdadeiro: o projeto é do tipo Várias ramificações.
    • falso: o projeto não é do tipo Multibranch.

    Tipo de dados: booliano

    Padrão: falso

    parentStageName Se a tarefa de orquestração for uma tarefa secundária aninhada dentro de uma tarefa de orquestração primária, o nome da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    parentStageURL Se a tarefa de orquestração for secundária aninhada dentro de uma tarefa de orquestração primária, o URL da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    orquestrationTaskName Obrigatório. Nome da tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    orquestrationTaskURL Obrigatório. URL da tarefa de orquestração.
    Nota:
    Deve estar codificado em porcentagem (%) como https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F.
    Tipo de dados: cadeia de caracteres
    testarConexão Sinalizador que indica se a conexão de ponta a ponta entre a instância e a ferramenta DevOps deve ser testada.
    Valores válidos:
    • verdadeiro: testa a conexão de ponta a ponta.
    • falso: não testa a conexão de ponta a ponta.

    Tipo de dados: booliano

    Padrão: falso

    toolId Obrigatório. Sys_id da ferramenta de orquestração. Localizado na tabela Ferramenta de Orquestração [sn_devops_orchestration_tool].

    Tipo de dados: cadeia de caracteres

    toolType Obrigatório. Tipo de ferramenta.

    Valores válidos: jenkins

    Tipo de dados: cadeia de caracteres

    Tabela 33. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 34. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 35. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 36. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    401 Não autorizado. As credenciais do usuário estão incorretas ou não foram aprovadas.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Elemento Descrição
    status Sinalizador que indica se a verificação foi bem-sucedida.
    Valores válidos:
    • verdadeiro: a verificação foi bem-sucedida.
    • falso: a verificação não foi bem-sucedida.

    Tipo de dados: booliano

    etapaValida Sinalizador que indica se as informações enviadas são válidas.
    Valores válidos:
    • verdadeiro: as informações enviadas são válidas.
    • falso: as informações enviadas não são válidas.

    Tipo de dados: booliano

    Amostra de solicitação 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"
    

    Resulta se as informações forem válidas.

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

    Amostra de solicitação 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"
    

    Resulta se as informações forem inválidas.

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

    DevOps - GET /devops/plan/schema

    Retorna o objeto de esquema para um plano específico: app, versão ou item de trabalho.

    Depois de ter o objeto de esquema necessário, use-o para criar o corpo da solicitação para sua chamada POST correspondente; POST /plan/app, POST /plan/versionou POST /plan/workitem.

    Nota:
    Este endpoint retorna somente os elementos do corpo da solicitação que são necessários.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/plan/schema

    URL padrão: /api/sn_devops/devops/plan/schema

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 37. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 38. Parâmetros de consulta
    Nome Descrição
    recurso Tipo de esquema de recursos a retornar.

    Valores válidos (sem distinção entre maiúsculas e minúsculas):

    • app
    • versão
    • work_item

    Tipo de dados: cadeia de caracteres

    Tabela 39. Parâmetros do corpo da solicitação
    Nome Descrição
    Nenhum(a)

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 40. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tabela 41. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 42. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    401 Autenticação inválida ou ausente.
    404 Não encontrado. Não foi possível encontrar o registro especificado.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    app Descrição da aplicação a ser associada à versão.

    Tipo de dados: objeto

    "app": {
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "team": {Object},
      "url": "String"
    }
    app.createdDateTime Data/hora em que a aplicação foi criada na ferramenta de origem DevOps.

    Tipo de dados: cadeia de caracteres

    app.id Identificador exclusivo da aplicação. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    app.shortDescription Breve descrição da aplicação associada.

    Tipo de dados: cadeia de caracteres

    aplicação.equipe Descrição da equipe associada à aplicação.

    Tipo de dados: objeto

    "team": {
      "id": "String",
      "name": "String"
    }
    app.team.id Identificador exclusivo da equipe associada à aplicação. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    app.team.name Nome da equipe associada à aplicação.

    Tipo de dados: cadeia de caracteres

    app.url URL da aplicação no site da ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    assignedTo Descrição da pessoa à qual o item de trabalho está atribuído.

    Tipo de dados: objeto

    "assignedTo": {
      "email": "String",
      "id": "String",
      "name": "String",
      "userName": "String"
    }
    assignTo.e-mail Endereço de e-mail da pessoa atribuída ao item de trabalho.

    Tipo de dados: cadeia de caracteres

    assignedTo.id Identificador exclusivo da pessoa atribuída ao item de trabalho.

    Tipo de dados: cadeia de caracteres

    assignedTo.name Nome da pessoa atribuída ao item de trabalho.

    Tipo de dados: cadeia de caracteres

    assignTo.userName Nome de usuário da pessoa atribuída ao item de trabalho.

    Tipo de dados: cadeia de caracteres

    createDateTime Data e hora em que a aplicação, a versão ou o registro do item de trabalho foi criado.

    Tipo de dados: cadeia de caracteres

    id Identificador exclusivo da aplicação, versão ou item de trabalho. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    nome Nome da aplicação.

    Tipo de dados: cadeia de caracteres

    caminho Caminho relativo para a aplicação.

    Tipo de dados: cadeia de caracteres

    shortDescription Breve descrição da aplicação, versão ou item de trabalho.

    Tipo de dados: cadeia de caracteres

    estado Estado do item de trabalho. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    equipe Descrição da equipe associada à aplicação.

    Tipo de dados: objeto

    "team": {
      "id": "String",
      "name": "String"
    }
    id.equipe Identificador exclusivo da equipe associada à aplicação. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    team.name Nome da equipe associada à aplicação.

    Tipo de dados: cadeia de caracteres

    tipo Tipo de item de trabalho. Gerado pela ferramenta de planejamento.

    Tipo de dados: cadeia de caracteres

    URL URL a ser usada para acessar a aplicação, a versão ou o item de trabalho.

    Tipo de dados: cadeia de caracteres

    versão Matriz que descreve a versão.

    Tipo de dados: objeto

    "version": {
      "app": {Object},
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "url": "String"
    }
    version.app Descrição da aplicação a ser associada à versão.

    Tipo de dados: objeto

    "app": {
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "team": {Object},
      "url": "String"
    }
    version.app.createdDateTime Data/hora em que a versão foi criada na ferramenta de origem DevOps.

    Tipo de dados: cadeia de caracteres

    version.app.id Identificador exclusivo da aplicação. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    version.app.shortDescription Breve descrição da aplicação associada.

    Tipo de dados: cadeia de caracteres

    version.app.team Descrição da equipe associada à aplicação.

    Tipo de dados: objeto

    "team": {
      "id": "String",
      "name": "String"
    }
    version.app.team.id Identificador exclusivo da equipe associada à aplicação. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    version.app.team.name Nome da equipe associada à aplicação.

    Tipo de dados: cadeia de caracteres

    version.app.url URL da aplicação no site da ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    version.createdDateTime Data/hora em que a versão foi criada na ferramenta de origem DevOps.

    Tipo de dados: cadeia de caracteres

    version.id Identificador exclusivo da versão. Gerado pela ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    version.shortDescription Breve descrição da versão associada.

    Tipo de dados: cadeia de caracteres

    versão.URL URL da versão no site da ferramenta de planejamento de origem.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação cURL para 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"
      }
    }

    Amostra de solicitação cURL para 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"
      }
    }

    Amostra de solicitação cURL para 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/registration

    Habilita as ferramentas de orquestração para registrar artefatos em uma instância ServiceNow.

    Este endpoint cria novos artefatos e versões de artefatos e os associa a confirmações. A seguir está a descrição do fluxo do processo de endpoint:
    • Se o toolId for aprovado na solicitação, o endpoint validará que a ferramenta existe na instância. Ele também verifica se o repositório de artefatos especificado em artifacts.repositoryName existe e, caso contrário, o cria na ferramenta de artefato associada.
    • Se o toolId não for passado na solicitação, um repositório será criado, mas não estará vinculado a nenhuma ferramenta de artefato.
    • Em seguida, ele verifica se o artefato especificado em artifacts.name já existe e, caso contrário, o cria no repositório associado.
    • Se o artifact.version for aprovado na solicitação:
      • Se ele não existir, um novo registro de versão do artefato será criado na tabela associada Versão do artefato [sn_devops_artifact_version].
      • O endpoint procura execuções de tarefa associadas com base nos detalhes de compilação fornecidos (pipelineName ou projectName, taskExecutionNumber, branchNamee stageName) e o parâmetro orchestrationToolId.
      • Se uma execução de tarefa for encontrada e seu pós-processamento estiver concluído, a versão do artefato será vinculada à execução de tarefa e armazenada na tabela Artifact to TaskExecution [sn_devops_m2m_artifact_execution]. As confirmações vinculadas a essas execuções de tarefa também são associadas à versão do artefato e armazenadas na tabela Versão do artefato a ser confirmada [sn_devops_m2m_artifact_version_commit]. Todas as confirmações vinculadas a execuções de tarefa anteriores que não criaram um artefato também são associadas à versão do artefato.
      • Se uma execução de tarefa for encontrada e seu pós-processamento não estiver concluído, a solicitação será mantida na tabela Solicitação em fases de artefato [sn_devops_artifact_staging]. A solicitação em fases contém uma referência à execução da tarefa.
      • Se uma execução de tarefa não for encontrada, a solicitação será mantida na tabela de preparação. A solicitação em fases contém os detalhes da compilação.
    • Se o artifact.version não for passado, dependendo da configuração da ferramenta, a versão do artefato será recuperada chamando o endpoint /devops/tool/artifact se a sua ferramenta de artefato for compatível com webhooks ou por meio de um subfluxo personalizado que recupera a versão do artefato do ferramenta de artefato.

    Para obter informações adicionais sobre artefatos, consulte Uso da aceleração de mudança de DevOps para versões.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/artifact/registration

    URL padrão: /api/sn_devops/devops/artifact/registration

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 43. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 44. Parâmetros de consulta
    Nome Descrição
    orchestrationToolId Obrigatório. Sys_id da ferramenta de orquestração associada ao artefato. O endpoint usa essas informações para localizar informações de execução de tarefa.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    toolId Sys_id da ferramenta de artefato associada ao artefato.

    Tipo de dados: cadeia de caracteres

    Tabela: ferramenta de artefato [sn_devops_artifact_tool]

    Tabela 45. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    artefatos Pelo menos uma entrada é obrigatória. Matriz de objetos na qual cada objeto identifica exclusivamente uma versão de artefato a ser registrada.

    Tipo de dados: matriz de objetos

    "artifacts": [
      {
        "name": "String",
        "repositoryName": "String",
        "semanticVersion": "String",
        "version": "String"
      }
    ]
    artifacts.name Obrigatório. Nome do arquivo de artefato.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    artefatos.reposit Obrigatório. Nome do repositório de artefatos.

    Se o registro de repositório especificado não existir, ele será criado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    artefatos.semanticVersion Versão semântica do artefato.

    Tipo de dados: cadeia de caracteres

    Formato: MAJOR.MINOR.PATCH

    Exemplos de valores possíveis:
    • 2.0.0
    • 2.0.0-rc.2
    • 2.0.0-rc.1
    • 1.0.0-beta

    Tamanho máximo: 160 caracteres

    Padrão: nulo

    artefatos.versão Obrigatório se toolId não for aprovado. Versão do artefato.

    Tipo de dados: cadeia de caracteres

    Formato: MAJOR.MINOR

    Tamanho máximo: 160 caracteres

    Padrão: nulo

    Nome da ramificação Obrigatório se for um projeto com várias ramificações. Nome da ramificação no repositório em que o artefato está armazenado.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    pipelineName Obrigatório se projectName não for aprovado. Nome do pipeline.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    projectName Obrigatório se pipelineName não for aprovado. Nome do projeto de forma livre.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    NomeFase Obrigatório se pipelineName for aprovado. Nome da fase.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 46. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 47. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 48. Códigos de status
    Código do status Descrição
    200 Sucesso. Êxito com o corpo da resposta.
    201 Criado. Êxito com o corpo da resposta.
    400 Solicitação Incorreta. O URI de solicitação não corresponde às APIs no sistema ou a operação falhou por motivos desconhecidos. Cabeçalhos inválidos também podem causar este erro.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    resposta Resultados da solicitação de registro de artefato.

    Tipo de dados: objeto

    "response": {
      "artifact": {Object},
      "artifact_register_requests": {Object},
      "artifact_repository": {Object},
      "artifact_version": {Object}
    }
    resposta.artifact Resultados para cada artefato processado.

    Tipo de dados: objeto

    "artifact": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    resposta.artifact.criar Se a solicitação criou registros de artefato, a lista de sys_ids dos registros criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]

    Tabela: artefatos [sn_devops_artifact]

    response.artifact.create.id Sys_id do registro de artefato criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    resposta.artifact.found Se um artefato já existir na tabela Artefatos, a lista de sys_ids dos registros de artefatos existentes.
    Nota:
    Nenhuma modificação é feita nos pacotes existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact.found.id Sys_id do registro de artefato existente.

    Tipo de dados: cadeia de caracteres

    resposta.artifact.update Não usado no momento
    response.artifact.update.id Não usado no momento
    response.artifact_register_requests Os resultados de todas as solicitações de registro de artefatos que não concluíram o processamento e foram armazenados na tabela Solicitação em fases de artefato.

    Tipo de dados: objeto

    "artifact_register_requests": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_register_requests.create Se a solicitação criou registros de preparação de artefato, a lista de sys_ids dos registros criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.create.id Sys_id do registro de preparação do artefato criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_register_requests.found Se os artefatos já tiverem registros de preparação de artefatos associados, a lista de sys_ids dos registros de preparação de artefatos existentes.
    Nota:
    Nenhuma modificação é feita nos pacotes existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.found.id Sys_id de um registro de preparação de artefato existente.

    Tipo de dados: cadeia de caracteres

    response.artifact_register_requests.update Não usado no momento
    response.artifact_register_requests.update.id Não usado no momento
    response.artifact_repository Resultados de todos os registros de repositório de artefatos que foram manipulados durante o processamento da solicitação.

    Tipo de dados: objeto

    "artifact_repository": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_repository.create Se repositórios de artefatos foram criados pela solicitação, a lista de sys_ids dos registros criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.create.id Sys_id do registro do repositório de artefatos criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_repository.found Se já existirem registros de repositório de artefatos usados na solicitação de registro, a lista de sys_ids dos registros existentes.
    Nota:
    Nenhuma modificação é feita nos pacotes existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.found.id Sys_id de um registro de repositório de artefatos existente usado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_repository.update Se o endpoint atualizar o sinalizador de rastreamento em um repositório para verdadeiro (de falso), a lista de sys_ids dos registros de repositório que foram modificados.

    Tipo de dados: matriz de objetos

    "update": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.update.id Sys_id do registro do repositório cujo sinalizador de acompanhamento foi modificado.

    Tipo de dados: cadeia de caracteres

    resposta.artifact_version Resultados de todos os registros de versão de artefato que foram manipulados durante o processamento da solicitação.

    Tipo de dados: objeto

    "artifact_version": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_version.create Resultados para todos os registros de versão de artefato que foram criados durante o processamento da solicitação.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_version.create.id Sys_id do registro da versão do artefato criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_version.found Se já existirem registros de versão de artefato usados na solicitação de registro, a lista de sys_ids dos registros existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_version.found.id Sys_id do registro da versão do artefato existente usado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_version.update Não usado no momento
    response.artifact_version.update.id Não usado no momento
    status Status da solicitação de registro.
    Valores possíveis:
    • Sucesso: o corpo da resposta contém resultados de retorno.
    • Erro: o corpo da resposta contém a lista de todos os erros.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação 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 - POST /devops/onboarding/app

    Cria um evento do app de integração que é processado de forma assíncrona pelo serviço DevOps.

    Este endpoint pode executar as seguintes ações:
    • Criar aplicações.
    • Associe DevOps objetos, como plano, repositório e pipeline, a uma aplicação.
    • Crie um registro de etapa de mudança e associe um processo de aprovação de mudança a um pipeline.

    Todas essas ações são específicas da ferramenta e da capacidade. A tabela a seguir descreve as ações disponíveis para cada ferramenta compatível.

    Matriz de integração da aplicação

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/onboarding/app

    URL padrão: /api/sn_devops/devops/onboarding/app

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 49. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 50. Parâmetros de consulta
    Nome Descrição
    Nenhum(a)
    Tabela 51. Parâmetros do corpo da solicitação
    Nome Descrição
    apps Matriz de objetos que define as aplicações a serem criadas na instância ServiceNow associada.

    Tipo de dados: matriz

    "apps": [{
      "bussinessApp": "String",
      "name": "String"
    }]
    apps.businessApp Nome do cmdb_ci_business_app para o qual a aplicação é mapeada. Isso vincula a aplicação DevOps à aplicação do CMDB especificada.

    Tipo de dados: cadeia de caracteres

    apps.name Obrigatório. Nome amigável do usuário da aplicação a ser criada. Um app é um objeto de contêiner de produto DevOps que vincula planos, repositórios e pipelines.

    Tipo de dados: cadeia de caracteres

    credenciais Obrigatório. Credenciais a serem usadas para a criação do webhook. O webhook criado é usado pela ferramenta para enviar notificações.

    Tipo de dados: objeto

    "credentials": {
      "name": "String",
      "password": "String"
    }
    credentials.name Obrigatório. ServiceNow ID do usuário que faz a solicitação de endpoint. Este usuário deve ter a função devops.integration.user. A partir da versão 1.34.1, este usuário deve ter a função sn_devops.admin.

    Tipo de dados: cadeia de caracteres

    Tabela: usuário [sys_user]

    credenciais.senha Obrigatório. Senha do usuário especificado no parâmetro credenitals.name.

    Tipo de dados: cadeia de caracteres

    pipelines Lista de pipelines a serem associados a aplicações.

    Tipo de dados: matriz de objetos

    "pipelines": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    pipelines.app Obrigatório se um objeto pipelines for especificado. Nome da aplicação a ser associada ao plano especificado no parâmetro pipelines.name. A aplicação já deve ter sido criada ou especificada no objeto apps desta solicitação.

    Tipo de dados: cadeia de caracteres

    pipelines.PassosDeMudança Etapas de mudança a serem criadas para o pipeline especificado no campo pipelines.name.

    Tipo de dados: matriz de objetos

    "changeSteps": [{
      "changeApprovalGroup": "String",
      "changeControlledBranches": "String",
      "changeType": "String",
      "name": "String",
      "type": "String"
    }]
    pipelines.changeSteps.changeApprovalGroup Obrigatório se um objeto changeSteps for especificado. Nome do grupo de aprovação de mudança a ser associado ao pipeline. Este grupo já deve existir na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    Tabela: Grupo [sys_user_group]

    pipelines.changeSteps.changeControlledBranches Lista separada por vírgulas de ramificações de código que estão sob controle de mudança. Isso se aplica somente ao suporte a várias ramificações.

    Tipo de dados: cadeia de caracteres

    Padrão: * (todas as ramificações)

    pipelines.changeSteps.changeType Obrigatório se um objeto changeSteps for especificado. Tipo de solicitação de mudança a ser criada.

    Tipo de dados: cadeia de caracteres

    Tabela: no campo Tipo da tabela Solicitação de mudança [change_request].

    pipelines.changeSteps.name Obrigatório se um objeto changeSteps for especificado. Nome da etapa a ser criada. O nome da etapa deve corresponder ao nome da etapa correspondente no pipeline da ferramenta de orquestração.

    Tipo de dados: cadeia de caracteres

    pipelines.changeSteps.type Obrigatório se um objeto changeSteps for especificado. Tipo de etapa a ser criada.

    Tipo de dados: cadeia de caracteres

    Tabela: no campo Tipo da tabela Etapas [sn_devops_step].

    pipelines.name Obrigatório se um objeto pipelines for especificado. Nome do pipeline a ser associado à aplicação especificada no parâmetro pipelines.app. Este pipeline já deve ter sido descoberto na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    pipelines.projeto Obrigatório se um objeto de pipelines for especificado e pipelines.tool for compatível com a entidade de projetos (por exemplo, a ferramenta ADO). Projeto a ser associado ao pipeline para criar um identificador exclusivo de pipeline/ferramenta. O valor do parâmetro deve derivar de um projeto na tabela Projeto [sn_devops_project].

    Tipo de dados: cadeia de caracteres

    pipelines.ferramenta Obrigatório se um objeto pipelines for especificado. Ferramenta a ser associada ao pipeline para criar um identificador exclusivo de pipeline/ferramenta.

    Tipo de dados: cadeia de caracteres

    planos Lista de planos a serem associados a uma aplicação.

    Tipo de dados: matriz de objetos

    "plans": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    planos.apps Obrigatório se um objeto plans for especificado. Nomes de aplicações a serem associadas ao plano especificado no parâmetro plans.name. Essas aplicações já devem ter sido criadas ou especificadas no objeto apps desta solicitação.

    Tipo de dados: matriz de cadeias de caracteres

    plans.name Obrigatório se um objeto plans for especificado. Nome do plano a ser associado à aplicação especificada no parâmetro plans.app. Este plano já deve ter sido descoberto na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    planos.projeto Obrigatório se um objeto de planos for especificado e o lines.tool for compatível com a entidade de projetos (por exemplo, a ferramenta ADO). Ferramenta a ser associada ao pipeline para criar um identificador exclusivo de planos/ferramenta. O valor do parâmetro deve derivar de um projeto na tabela Projeto [sn_devops_project].

    Tipo de dados: cadeia de caracteres

    planos.ferramenta Obrigatório se um objeto plans for especificado. Ferramenta a ser associada ao plano para criar um identificador exclusivo de plano/ferramenta.

    Tipo de dados: cadeia de caracteres

    repositórios Lista de repositórios associados a uma aplicação. Se o objeto de repositórios contiver um parâmetro de app, ele mapeará o repositório para a aplicação.

    Tipo de dados: matriz de objetos

    "repositories": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    repositories.app Obrigatório se um objeto repositories for especificado. Nome da aplicação a ser associada a este repositório. A aplicação já deve ter sido criada ou especificada no objeto apps desta solicitação.

    Tipo de dados: cadeia de caracteres

    repositories.name Obrigatório se um objeto repositories for especificado. Nome do repositório a ser associado à aplicação especificada no parâmetro repositories.app. Este repositório já deve ter sido descoberto na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    repositórios.projeto Obrigatório se um objeto de repositórios for especificado e o repositories.tool oferecer suporte a uma entidade de projetos (por exemplo, a ferramenta ADO). Ferramenta a ser associada aos repositórios para criar um identificador exclusivo de repositório/ferramenta. O valor do parâmetro deve derivar de um projeto na tabela Projeto [sn_devops_project].

    Tipo de dados: cadeia de caracteres

    repositórios.ferramenta Obrigatório se um objeto repositories for especificado. Nome da ferramenta amigável para associar ao repositório para criar um identificador exclusivo de repositório/ferramenta. A ferramenta já deve ter sido criada na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    artifactRepositories.app Obrigatório se o objeto artefatoRepositories for especificado. Nome da aplicação a ser associada a este artefatoRepositórios. A aplicação já deve ter sido criada ou especificada no objeto de apps desta solicitação.

    Tipo de dados: cadeia de caracteres

    artifactRepositories.name Obrigatório se o objeto artefatoRepositories for especificado. Nome dos artefatoRepositories a serem associados à aplicação especificada no parâmetro artifactRepositories.app. Este artefatoRepositories já deve ser descoberto na instância da ServiceNow.

    Tipo de dados: cadeia de caracteres

    artefatoRepositórios.ferramenta Obrigatório se o objeto artefatoRepositories for especificado. Nome da ferramenta amigável para associar aos artefatoRepositórios para criar um identificador exclusivo de artefatoRepositórios/ferramenta. A ferramenta já deve estar criada na instância da ServiceNow.

    Tipo de dados: cadeia de caracteres

    artefatoRepositórios.projeto Obrigatório se o objeto artefatoRepositories for especificado e o repositories.tool for compatível com a entidade de projetos (por exemplo, a ferramenta ADO). Ferramenta a ser associada a artifactRepositories para criar um identificador exclusivo de pipeline/ferramenta.

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 52. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 53. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 54. Códigos de status
    Código do status Descrição
    202 A solicitação de integração foi criada com sucesso.

    Parâmetros do corpo da resposta

    Nome Descrição
    resultado Resultados da solicitação de integração.
    Tipo de dados: objeto
    "result": {
      "code": "String",
      "details": "String",
      "errors": {Object],
      "onboardingRequestID": "String",
      "status": "String"
    }
    código.resultado Código de status HTTP.

    Tipo de dados: cadeia de caracteres

    detalhes.resultado Detalhes sobre a solicitação de integração.

    Tipo de dados: cadeia de caracteres

    resultado.erros Descrição de qualquer erro ocorrido.

    Tipo de dados: objeto

    resultado.erro.mensagem Mensagens de erro

    Tipo de dados: cadeia de caracteres

    result.onboardingRequestID Identificador exclusivo da solicitação de integração. Use este valor ao chamar o endpoint /devops/onboarding/status para obter o status do processo de integração associado.

    Tipo de dados: cadeia de caracteres

    resultado.status Status da solicitação de integração, Êxito ou Falha.

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    Este exemplo cria a aplicação Serviço de aluguel de motos e o associa ao pipeline do Jenkins Aluguéis de motos, ao repositório GitHub nowDevops01/CorpSite e ao plano testPlan_Bike_Rental do Azure.

    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", 
    "project": "DemoProjecttt", 
          "apps": [ 
            "Bike Rental Service" 
          ] 
        } 
      ] 
    "artifactRepositories": [ 
    { 
    "tool": "AdoTool", 
    "name": "empb5-sonar", 
    "apps": [ 
    "appXXXXtz" 
    ] 
    } 
    ] 
     
      "credentials" : { 
        "name": "devops_user", 
        "password": "devops_password" 
      }  
    } 

    Saída:

    { 
      "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/ferramenta

    Cria um evento da ferramenta de integração que é processado de forma assíncrona pelo serviço DevOps.

    Dependendo do tipo de ferramenta para a qual a solicitação foi publicada, o endpoint executa as seguintes ações:
    • Cria a ferramenta na instância ServiceNow associada
    • Conecta-se à ferramenta
    • Tenta configurar a ferramenta (somente se a conexão for bem-sucedida)
    • Descobre a ferramenta (somente se a conexão for bem-sucedida)
    Todas essas ações são específicas da ferramenta e são executadas com base nos recursos de integração da ferramenta especificada.

    Matriz de integração da ferramenta

    Os resultados de retorno para este endpoint indicam apenas se a solicitação foi publicada, não indica se as ferramentas associadas foram criadas. A criação da ferramenta real é processada de forma assíncrona. Para obter o status da criação da ferramenta e de todas as outras ações, você deve chamar o endpoint /devops/onboarding/status e passar o parâmetro onboardingRequestID que é retornado por este endpoint.

    Antes que você possa acessar este endpoint, seu administrador deve ter configurado a conexão DevOps e o alias de credencial (CreateDevOpsTool) para configurar as ferramentas na instância. Para obter detalhes, consulte Instalação do DevOps Change Velocity. Além disso, a entidade de chamada deve ter a função devops.integration.user.

    Formato da URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/onboarding/tool

    URL padrão: /api/sn_devops/devops/onboarding/tool

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 55. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 56. Parâmetros de consulta
    Nome Descrição
    Nenhum(a)
    Tabela 57. Parâmetros do corpo da solicitação
    Nome Descrição
    credenciais Obrigatório. Credenciais a serem usadas para a criação do webhook. A ferramenta usa o webhook criado para enviar notificações.

    Tipo de dados: objeto

    "credentials": {
      "name": "String",
      "password": "String"
    }
    credentials.name Obrigatório. ServiceNow identificador do usuário que faz a solicitação de endpoint. Este usuário deve ter a função devops.integration.user. A partir da versão 1.34.1, este usuário deve ter a função sn_devops.admin.

    Tipo de dados: cadeia de caracteres

    Tabela: usuário [sys_user]

    credenciais.senha Obrigatório. Senha do usuário especificado no parâmetro credenitals.name.

    Tipo de dados: cadeia de caracteres

    ferramentas Obrigatório. Ferramentas a serem criadas na instância associada ServiceNow. Você pode criar uma ou mais ferramentas em uma única solicitação.

    Tipo de dados: matriz de objetos

    "tools": [{
      "name": "String",
      "password": "String",
      "type": "String",
      "useMidServer": Boolean,
      "username": "String",
      "url": "String"
    }]
    tools.name Obrigatório. Nome amigável ou rótulo da ferramenta a ser criada. Este nome é usado para identificar a ferramenta no serviço DevOps.

    Tipo de dados: cadeia de caracteres

    ferramentas.senha Necessário, exceto para a ferramenta Agile. Senha a ser usada para acessar a ferramenta. As autenticações compatíveis são básica e de token; OAuth não é compatível.

    Tipo de dados: cadeia de caracteres

    ferramentas.tipo Obrigatório. Tipo de ferramenta a ser criada, como GitHub ou BitBucket. O valor especificado deve ser um dos rótulos de ferramenta na tabela Integrações de ferramentas [sn_devops_tool_integration].

    Tipo de dados: cadeia de caracteres

    ferramentas.usarMidServer Sinalizador que indica se a ferramenta se conecta por meio de um MID Server.

    Valores válidos:

    • verdadeiro: conecta-se por meio de um MID Server.
    • falso: não se conecta por meio de um MID Server.

    Tipo de dados: booliano

    ferramentas.nome de usuário Necessário, exceto para a ferramenta Agile. Nome de usuário a ser usado para acessar a ferramenta por meio deste endpoint.

    Tipo de dados: cadeia de caracteres

    ferramentas.URL Necessário, exceto para a ferramenta Agile. URL da ferramenta a ser criada. O serviço DevOps usa este URL para integração com a ferramenta. Se estiver usando a ferramenta "Azure DevOps", tools.url poderá conter a URL da organização do ADO ou a URL do projeto do ADO.

    Ao fornecer um URL de organização do ADO, a API descobre todos os projetos na organização especificada e não configura nenhum projeto. Ao fornecer uma URL de projeto do ADO, a API descobre entidades relacionadas ao projeto como (pipelines, repositórios e planos) e também configura um projeto se o objeto credentials estiver presente. Para informar explicitamente à API para ignorar a configuração do projeto, configure um sinalizador configureTool (tipo: booliano) como falso. Se configureTool não for fornecido explicitamente na carga útil ou estiver definido como verdadeiro, a ferramenta será configurada automaticamente.

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 58. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 59. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 60. Códigos de status
    Código do status Descrição
    202 A solicitação de integração foi criada com sucesso.

    Parâmetros do corpo da resposta

    Nome Descrição
    resultado Resultados da solicitação de integração.
    Tipo de dados: objeto
    "result": {
      "code": "String",
      "details": "String",
      "errors": {Object},
      "onboardingRequestID": "String",
      "status": "String"
    }
    código.resultado Código de status HTTP.

    Tipo de dados: cadeia de caracteres

    detalhes.resultado Mensagem detalhada sobre a solicitação de integração.

    Tipo de dados: cadeia de caracteres

    resultado.erros Descrição de qualquer erro ocorrido.

    Tipo de dados: objeto

    resultado.erro.mensagem Mensagens de erro

    Tipo de dados: cadeia de caracteres

    result.onboardingRequestID Identificador exclusivo da solicitação de integração. Use este valor ao chamar o endpoint /devops/onboarding/status para obter o status do processo de integração da ferramenta associada.

    Tipo de dados: cadeia de caracteres

    resultado.status Status da solicitação de integração, Êxito ou Falha.

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    O exemplo a seguir mostra como integrar o 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"
      }
    }

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

    Registra um retorno de chamada com uma instância ServiceNow para uma tarefa de orquestração sob controle de mudança, que pode ser chamada depois que uma decisão é tomada na solicitação de mudança.

    Antes de chamar este endpoint, você deve ter uma tarefa de orquestração criada em sua instância ServiceNow. Você pode criar esta tarefa por meio da Descoberta ou chamando o endpoint DevOps - POST /devops/orchestration/stepMapping. Você também deve garantir que a tarefa de orquestração esteja associada a uma etapa de pipeline definida anteriormente e que o controle de mudanças esteja habilitado (selecionando a opção Controle de mudança no formulário Fase da aplicação). Para obter detalhes, consulte Como acelerar a mudança do DevOps.

    Formato da URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/orchestration/changeControl

    URL padrão: /api/sn_devops/devops/orchestration/changeControl

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 61. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 62. Parâmetros de consulta
    Nome Descrição
    toolId Obrigatório. Sys_id da ferramenta DevOps para a qual a tarefa especificada será colocada sob controle de mudança.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    toolType Tipo de ferramenta.

    Valor válido: qualquer valor que identifique a ferramenta, como "jenkins".

    Tipo de dados: cadeia de caracteres

    Tabela 63. Parâmetros do corpo da solicitação
    Nome Descrição
    callbackURL Obrigatório. URL que a instância ServiceNow pode chamar de volta quando o processo de aprovação da solicitação de mudança associada for concluído. Este retorno de chamada deve permitir que a execução do pipeline continue ou não, com base no resultado da aprovação.

    Tipo de dados: cadeia de caracteres

    changeRequestDetails Pares de nome-valor dos campos a serem definidos ao fechar uma solicitação de mudança. Este objeto pode conter qualquer campo no registro de solicitação de mudança, exceto o seguinte:
    • impacto
    • número
    • risco
    • análise_de_impacto_risco
    • sys_id

    Se esses campos forem incluídos na solicitação, o endpoint retornará um erro 400 e a solicitação de mudança não será atualizada. Além disso, se você incluir campos que exigem a definição de outros campos obrigatórios e esses campos não forem enviados, a solicitação falhará durante o processamento posterior do pipeline. Essa falha é anotada nas anotações de trabalho da solicitação de mudança, junto com uma mensagem de erro para essa solicitação de mudança específica, como: Falha na atualização da solicitação de mudança com o motivo:<Error Message from platform> . Cancelando a solicitação de mudança e a execução da etapa relacionada.

    Você também pode passar o parâmetro booliano setCloseCode neste objeto para especificar se as informações de fechamento devem ser definidas no registro de Solicitação de Mudança associado.
    • Se definido como verdadeiro, o campo close_code será definido como o status do trabalho e o campo close_notes será definido como um link para a execução da etapa no registro de solicitação de mudança associado. O valor padrão é verdadeiro.
    • Se definido como falso, os campos close_code e close_notes não serão definidos e um link para a execução da etapa será definido no campo work_notes.

    Tipo de dados: objeto

    éMultiBranch Se a ferramenta de orquestração for Jenkins, sinalizador que indica se o projeto é do tipo Várias ramificações.
    Valores válidos:
    • verdadeiro: o projeto é do tipo Várias ramificações.
    • falso: o projeto não é do tipo Multibranch.

    Tipo de dados: booliano

    Padrão: falso

    orquestraçãoTaskDetails Obrigatório. Descrição da tarefa de orquestração.

    Tipo de dados: objeto

    "orchestrationTaskDetails": {
      "message": "String",
      "triggerType": "String",
      "upstreamTaskExecutionURL": "String"
    }
    orquestraçãoDetalhesDaTarefa.message Mensagem de texto de forma livre.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails.triggerType Obrigatório. A forma como a tarefa de orquestração foi iniciada.

    Valores válidos:

    • scm: a confirmação do código da ferramenta Git/scm acionou o trabalho.
    • ascendente: o trabalho ascendente acionou este trabalho.
    • usuário: o usuário iniciou o trabalho manualmente.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails.upstreamTaskExecutionURL Necessário se triggerType estiver definido como ascendente. URL de execução de tarefa ascendente.

    Por exemplo: https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/

    Tipo de dados: cadeia de caracteres

    orquestrationTaskURL Obrigatório. URL da tarefa de orquestração para a qual o retorno de chamada será criado.

    Por exemplo: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/

    Tipo de dados: cadeia de caracteres

    parentNode Se a tarefa de orquestração for uma tarefa secundária aninhada dentro de uma tarefa de orquestração primária, este valor conterá os detalhes do nó primário.

    Tipo de dados: objeto

    "parentNode": {
      "id": "String",
      "name": "String",
      "upstreamStageName": "String",
      "upstreamTaskExecutionURL": "String"
    }
    parentNode.id ID exclusivo do nó primário.

    No Jenkins, este valor corresponde a um ID de fase do pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.name Nome do nó primário.

    No Jenkins, este valor corresponde a um nome de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.upstreamStageName Nome da tarefa de orquestração ascendente do nó primário.

    No Jenkins, este valor corresponde a um nome de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.upstreamTaskExecutionURL URL da execução da tarefa ascendente do nó primário.

    No Jenkins, este valor corresponde a um URL de execução da fase do pipeline.

    Tipo de dados: cadeia de caracteres
    parentStageName Se a tarefa de orquestração for uma tarefa secundária aninhada dentro de uma tarefa de orquestração primária, o nome da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    parentStageURL Se a tarefa de orquestração for secundária aninhada dentro de uma tarefa de orquestração primária, o URL da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 64. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Tipos compatíveis: application/json ou application/xml.

    Padrão: application/json

    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 65. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 66. Códigos de status
    Código do status Descrição
    201 Solicitação concluída com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    401 Autenticação inválida ou ausente.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    changeControl Sinalizador que indica se a tarefa de orquestração está sob controle de mudança.
    Valores possíveis:
    • verdadeiro: sob controle de mudança.
    • falso: não está sob controle de mudança.

    Tipo de dados: booliano

    Solicitação de 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/\"}
    }"

    Corpo da resposta.

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

    Solicitação de cURL

    Este exemplo mostra como passar campos no objeto changeRequestDetails ao fechar uma solicitação de mudança.

    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",
        }
      }
    }"

    Corpo da resposta.

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

    DevOps - POST /devops/orchestration/stepMapping

    Verifica se as informações transmitidas são válidas para a criação de uma tarefa de orquestração e para associação a uma etapa criada anteriormente. Se ambos forem válidos, ele criará a tarefa de orquestração e fará a associação.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/stepMapping

    URL padrão: /api/sn_devops/devops/orchestration/stepMapping

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 67. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 68. Parâmetros de consulta
    Nome Descrição
    toolId Obrigatório. Sys_id da ferramenta de orquestração. Localizado na tabela Ferramenta de Orquestração [sn_devops_orchestration_tool].

    Tipo de dados: cadeia de caracteres

    toolType Obrigatório. Tipo de ferramenta.

    Valores válidos: jenkins

    Tipo de dados: cadeia de caracteres

    Tabela 69. Parâmetros do corpo da solicitação
    Nome Descrição
    ramificaNome Nome da ramificação associada à tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    éMultiBranch Se a ferramenta de orquestração for Jenkins, sinalizador que indica se o projeto é do tipo Várias ramificações.
    Valores válidos:
    • verdadeiro: o projeto é do tipo Várias ramificações.
    • falso: o projeto não é do tipo Multibranch.

    Tipo de dados: booliano

    Padrão: falso

    parentNode Se a tarefa de orquestração for uma tarefa secundária aninhada dentro de uma tarefa de orquestração primária, este valor conterá os detalhes do nó primário.

    Tipo de dados: objeto

    "parentNode": {
      "id": "String",
      "name": "String",
      "upstreamStageName": "String",
      "upstreamTaskExecutionURL": "String"
    }
    parentNode.id ID exclusivo do nó primário.

    No Jenkins, este valor corresponde a um ID de fase do pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.name Nome do nó primário.

    No Jenkins, este valor corresponde a um nome de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.upstreamStageName Nome da tarefa de orquestração ascendente do nó primário.

    No Jenkins, este valor corresponde a um nome de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentNode.upstreamTaskExecutionURL URL da execução da tarefa ascendente do nó primário.

    No Jenkins, este valor corresponde a um URL de execução da fase do pipeline.

    Tipo de dados: cadeia de caracteres
    parentStageName Se a tarefa de orquestração for uma tarefa secundária aninhada dentro de uma tarefa de orquestração primária, o nome da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    parentStageURL Se a tarefa de orquestração for secundária aninhada dentro de uma tarefa de orquestração primária, o URL da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

    orquestrationTaskName Obrigatório. Nome da tarefa de orquestração. Esta é a mesma tarefa referenciada em orchestrationTaskURL.

    Tipo de dados: cadeia de caracteres

    orquestrationTaskURL Obrigatório. URL da tarefa de orquestração.

    Por exemplo: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 70. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 71. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 72. Códigos de status
    Código do status Descrição
    201 Bem-sucedido. A solicitação foi processada com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    401 Não autorizado. As credenciais do usuário estão incorretas ou não foram aprovadas.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Elemento Descrição
    status Sinalizador que indica se a verificação foi bem-sucedida.
    Valores válidos:
    • verdadeiro: a verificação foi bem-sucedida.
    • falso: a verificação não foi bem-sucedida.

    Tipo de dados: booliano

    etapaValida Sinalizador que indica se as informações enviadas são válidas.
    Valores válidos:
    • verdadeiro: as informações enviadas são válidas.
    • falso: as informações enviadas não são válidas.

    Tipo de dados: booliano

    Amostra de solicitação 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\"
    }"

    Resulta se as informações forem válidas.

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

    Resulta se as informações forem inválidas.

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

    DevOps - POST /devops/pacote/registro

    Habilita as ferramentas de orquestração para criar novos pacotes de artefatos que contêm versões de artefatos especificadas.

    Pacotes de artefatos são usados para exibir confirmações para aprovadores de mudança quando eles exibem uma solicitação de mudança. Para que as confirmações sejam mostradas nas solicitações de mudança, o pacote deve ser criado na fase anterior à fase que contém a aprovação de mudança.

    Todas as versões de artefato incluídas na solicitação de registro de pacote já devem estar registradas no DevOps. Para obter detalhes sobre como registrar versões de artefatos, consulte DevOps - POST /devops/artifact/registration.

    Normalmente, você passará os parâmetros artifacts.version e artifacts.name ao identificar uma versão de artefato a ser incluída em um pacote. Você também pode usar os recursos avançados deste endpoint, o que permite passar os detalhes de compilação para cada versão do artefato em vez da própria versão. Os detalhes de compilação específicos do artefato incluem os seguintes parâmetros:
    • artifacts.pipelineName ou artifacts.projectName
    • artifacts.taskExecutionNumber
    • artifacts.stageName
    • artifacts.branchName
    O endpoint usa esses detalhes de compilação específicos do artefato para pesquisar informações de execução de tarefa e copiar as versões associadas para o pacote. Ele usa detalhes de compilação não específicos do artefato (pipelineName ou projectName, taskExecutionNumber, branchNamee stageName) para associar o pacote criado a uma execução de pipeline.
    Nota:
    Este endpoint não é compatível com atualizações. Ele sempre cria um novo pacote, mesmo que já exista um com o mesmo nome.

    Para obter informações adicionais sobre pacotes de artefatos, consulte Como usar a aceleração de mudança para DevOps para versões.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/package/registration

    URL padrão: /api/sn_devops/devops/package/registration

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 73. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 74. Parâmetros de consulta
    Nome Descrição
    orchestrationToolId Obrigatório. Sys_id da ferramenta de orquestração associada ao pacote de artefatos. O endpoint usa essas informações para localizar informações de execução de tarefa.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    toolId Sys_id da ferramenta de artefato associada ao pacote de artefatos.

    Tipo de dados: cadeia de caracteres

    Tabela: ferramenta de artefato [sn_devops_artifact_tool]

    Tabela 75. Parâmetros do corpo da solicitação
    Nome Descrição
    artefatos Pelo menos uma entrada é obrigatória. Matriz de objetos em que cada objeto identifica exclusivamente uma versão de artefato a ser incluída no pacote.

    Tipo de dados: matriz de objetos

    "artifacts": [
    {
      "branchName": "String",
      "name": "String",
      "pipelineName": "String",
      "projectName": "String",
      "repositoryName": "String",
      "stageName": "String",
      "taskExecutionNumber": "String",
      "version": "String"
    ]
    artefatos.branchName Obrigatório se artifact.version não for aprovado e for uma configuração de várias ramificações. Nome da ramificação na qual as versões do artefato são armazenadas.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    artifacts.name Obrigatório. Nome do arquivo de artefato.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    artefatos.pipelineNome Obrigatório se artifact.version e artifacts.projectName não forem passados. Nome do pipeline.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    artefatos.nomedoprojeto Obrigatório se artifact.version e artifact.pipelineName não forem passados. Nome do projeto de forma livre.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    artefatos.reposit Obrigatório. Nome do repositório de artefatos.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    artefatos.StageName Obrigatório se artifact.version não for aprovado. Nome da fase.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    artefatos.taskExecutionNumber Obrigatório se artifact.version não for aprovado. Número de execução do pipeline.

    Tipo de dados: cadeia de caracteres

    Padrão: nulo

    artefatos.versão Obrigatório se os detalhes da compilação não forem fornecidos. Versão dos artefatos.

    Tipo de dados: cadeia de caracteres

    Formato:<Major> .<Minor>

    Padrão: nulo

    ramificaNome Obrigatório se for um projeto de várias ramificações. Nome da ramificação no repositório em que os artefatos são armazenados.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 200 caracteres

    Padrão: nulo

    nome Obrigatório. Nome do pacote.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    pipelineName Obrigatório se projectName não for aprovado. Nome do pipeline.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    Padrão: nulo

    projectName Obrigatório se pipelineName não for aprovado. Nome do projeto de forma livre.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    NomeFase Obrigatório se pipelineName for aprovado. Nome da fase.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160 caracteres

    Padrão: nulo

    taskExecutionNumber Obrigatório. Número de execução do pipeline.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 128 caracteres

    Padrão: nulo

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 76. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 77. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 78. Códigos de status
    Código do status Descrição
    200 Sucesso. Êxito com o corpo da resposta.
    201 Criado. Êxito com o corpo da resposta.
    400 Solicitação Incorreta. O URI de solicitação não corresponde às APIs no sistema ou a operação falhou por motivos desconhecidos. Cabeçalhos inválidos também podem causar este erro.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    resposta Resultados da solicitação de registro de pacote.

    Tipo de dados: objeto

    "response": {
      "artifact_register_requests": {Object},
      "sn_devops_m2m_artifact_version_package": {Object},
      "sn_devops_package": {Object}
    }
    response.artifact_register_requests Resultados de todas as solicitações de registro que não concluíram o processamento e foram armazenadas na tabela Solicitação em fases de artefato [sn_devops_artifact_staging].

    Tipo de dados: objeto

    "artifact_register_requests": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_register_requests.create Se a solicitação criou registros de preparação de pacote, a lista de sys_ids dos registros de preparação criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.create.id Sys_id do registro de preparação do pacote criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.artifact_register_requests.found Se os registros de preparação do pacote associado já existirem, a lista de sys_ids dos registros existentes.
    Nota:
    Nenhuma modificação é feita nos pacotes existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.found.id Sys_id de um registro de preparação de pacote existente.

    Tipo de dados: cadeia de caracteres

    response.artifact_register_requests.update Não usado no momento.
    response.artifact_register_requests.update.id Não usado no momento.
    response.sn_devops_m2m_artifact_version_package Resultados para cada versão de artefato associada a um pacote.

    Tipo de dados: objeto

    "sn_devops_m2m_artifact_version_package": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.sn_devops_m2m_artifact_version_package.create Se a solicitação criou registros que vinculam versões de artefatos a pacotes, a lista de sys_ids dos registros criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]

    Tabela: versão do artefato para pacote [sn_devops_m2m_artifact_version_package]

    response.sn_devops_m2m_artifact_version_package.create.id Sys_id do registro de versão do artefato para pacote criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.sn_devops_m2m_artifact_version_package.found Se já existir um registro de vinculação na tabela Versão de artefatos para pacote, a lista de sys_ids dos registros de vinculação existentes.
    Nota:
    Nenhuma modificação foi feita nos registros existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_m2m_artifact_version_package.found.id Sys_id do registro existente de Versão do artefato para pacote.

    Tipo de dados: cadeia de caracteres

    response.sn_devops_m2m_artifact_version_package.update

    Não usado no momento.

    response.sn_devops_m2m_artifact_version_package.update.id

    Não usado no momento.

    response.sn_devops_pacote Resultados para todos os registros de pacote na tabela Pacotes [sn_devops_package] que foram manipulados durante o processamento da solicitação.

    Tipo de dados: objeto

    "sn_devops_package": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.sn_devops_package.create Se os registros de pacote foram criados pela solicitação, a lista de sys_ids dos registros criados.

    Tipo de dados: matriz de objetos

    "create": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_package.create.id Sys_id do registro de pacote criado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.sn_devops_package.found Se os registros de pacote usados na solicitação de registro já existirem, a lista de sys_ids dos registros existentes.
    Nota:
    Nenhuma modificação foi feita nos registros existentes.

    Tipo de dados: matriz de objetos

    "found": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_package.found.id Sys_id de um registro de pacote existente referenciado pela solicitação.

    Tipo de dados: cadeia de caracteres

    response.sn_devops_package.update Não usado no momento.
    response.sn_devops_package.update.id Não usado no momento.
    status Status da solicitação de registro.
    Valores possíveis:
    • Erro: o corpo da resposta contém a lista de todos os erros.
    • Sucesso: o corpo da resposta contém resultados de retorno.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação 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"\
    }"

    Resposta - pacote criado:

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

    Amostra de solicitação 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"\
    }"

    Resposta - a solicitação criou um pacote em fases:

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

    DevOps - POST /devops/tool/{capacidade}

    Publica a carga passada na tabela de eventos de entrada [sn_devops_inbound] para processamento por um subfluxo DevOps personalizado.

    Chame este endpoint do webhook associado em sua ferramenta, especificado pelo parâmetro capability passado. Um subfluxo personalizado, para processar a carga passada, já deve estar definido em sua instância ServiceNow. Com base em uma programação predefinida, o fluxo mestre DevOps coleta as informações de evento do webhook da tabela de eventos de entrada e as passa para o subfluxo personalizado, que processa a carga útil. Para obter mais informações sobre como criar um subfluxo personalizado, consulte Criação de subfluxos de DevOps.

    Para obter informações adicionais sobre a integração da ferramenta de teste, consulte Integração da ferramenta de teste de DevOps.

    Antes de chamar este endpoint para uma ferramenta DevOps personalizada, você deve implementar os métodos handleTool() e getNativeIdForOrchestrationTask() de sn_devops.DevOpsOrchestrationToolIntegrationHandler. Para obter mais informações, consulte DevOpsOrchestrationToolIntegrationHandler - Com escopoDevOpsOrchestrationToolIntegrationHandler - Com escopo.

    Nota:
    A partir da versão 1.34.1, uma nova versão desta API foi introduzida. Com esta API, as políticas de autenticação adaptável podem não ser executadas conforme o esperado. Para obter mais informações sobre essas políticas, consulte Adaptive authentication.

    Formato da URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/tool/{capability}

    URL padrão: /api/sn_devops/devops/tool/{capability}

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 79. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    capacidade Tipo de ferramenta que passa a carga para armazenar na tabela de eventos de entrada.
    Valores válidos (sem distinção entre maiúsculas e minúsculas):
    • artefato
    • código
    • orquestração
    • plano
    • teste

    Tipo de dados: cadeia de caracteres

    Tabela 80. Parâmetros de consulta
    Nome Descrição
    orchestrationToolId Opcional. Sys_id da ferramenta de orquestração à qual o pipeline relacionado pertence. orchestrationToolId é necessário se o parâmetro de solicitação capability estiver definido como test ou softwarequality.

    O valor no parâmetro toolId será a ferramenta de orquestração padrão se o parâmetro orchestrationToolId não for passado.

    Tipo de dados: cadeia de caracteres

    tipo de teste Obrigatório se capability estiver definido para testar. Tipo de teste que está sendo executado.

    Tipo de dados: cadeia de caracteres

    Tabela: os valores válidos para este parâmetro são aqueles na coluna Tipo de teste da tabela Tipos de teste [sn_devops_test_type].

    toolId Obrigatório. Sys_id da ferramenta para a qual o endpoint está sendo chamado.

    Tipo de dados: cadeia de caracteres

    Tabela 81. Parâmetros do corpo da solicitação
    Nome Descrição
    Dependente da ferramenta A ferramenta determina o conteúdo da carga útil.

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 82. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 83. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 84. Códigos de status
    Código do status Descrição
    201 Solicitação concluída com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    401 Autenticação inválida ou ausente.
    500 Erro Interno do Servidor. Ocorreu um erro de lógica no código do lado do servidor.

    Parâmetros do corpo da resposta

    Nome Descrição
    detalhes Entrada para todas as condições de erro.

    Tipo de dados: objeto

    "details": {
      "errors": [Array]
    }
    detalhes.erros Descrição de um único erro.

    Tipo de dados: matriz de objetos

    "errors": [
      {
        "message": "String"
      }
    ]
    detalhes.erros.mensagem Mensagem de erro detalhada.
    • A solicitação não tem parâmetros de caminho: nenhum parâmetro de caminho está incluído na chamada.
    • A solicitação não tem o parâmetro de caminho da capacidade: o parâmetro de caminho da capacidade não foi incluído na chamada.
    • Tipo de capacidade sem suporte: o parâmetro de capacidade especificado não é um valor válido.

    Tipo de dados: cadeia de caracteres

    status Status da resposta, como "Êxito" ou "Erro de dados".

    Tipo de dados: cadeia de caracteres

    sys_id Sys_id do registro criado na tabela de eventos de entrada.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação cURL para artefato

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

    Resposta de sucesso:

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

    Amostra de solicitação cURL para artefato

    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"\
       }\
    }"

    Resposta do erro:

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

    Amostra de solicitação cURL para código

    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'
    

    Resposta de sucesso:

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

    Amostra de solicitação cURL para orquestração

    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'
    

    Resposta de sucesso:

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

    Amostra de solicitação cURL para plano

    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'
    

    Resposta de sucesso:

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

    Amostra de solicitação cURL para teste

    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'
    

    Resposta de sucesso:

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

    DevOps - POST /devops/tool/event/{sn_tool_id}

    Publica a carga passada de GitHub, Jiraou Bitbucket na tabela Eventos [sn_devops_event] para processamento por um subfluxo pré-criado.

    Antes de chamar este endpoint, você deve criar uma integração com a ferramenta que está usando.

    Para processar eventos de qualquer outra ferramenta além de GitHub, Jiraou Bitbucket, use o endpoint DevOps - POST /devops/tool/{capacidade}.

    Nota:
    A partir da versão 1.34.1, uma nova versão desta API foi introduzida. Com esta API, as políticas de autenticação adaptável podem não ser executadas conforme o esperado. Para obter mais informações sobre essas políticas, consulte Adaptive authentication.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/tool/event/{sn_tool_id}

    URL padrão: /api/sn_devops/devops/tool/event/{sn_tool_id}

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 85. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    sn_tool_id Sys_id da ferramenta a ser usada para a solicitação.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramentas de DevOps [sn_devops_tool]

    Tabela 86. Parâmetros de consulta
    Nome Descrição
    Nenhum(a)
    Tabela 87. Parâmetros do corpo da solicitação
    Nome Descrição
    Dependente da ferramenta A ferramenta determina o conteúdo da carga útil. A carga pode ser localizada na ferramenta nas informações do webhook.

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 88. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 89. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 90. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    201 Solicitação concluída com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    401 Autenticação inválida ou ausente.
    500 Erro Interno do Servidor. Ocorreu um erro de lógica no código do lado do servidor.

    Parâmetros do corpo da resposta

    Nome Descrição
    resultado Status da resposta.
    Valores possíveis:
    • falha: ID de ferramenta incorreto. Evento não criado.
    • sucesso: evento criado na tabela Eventos [sn_devops_event]. No entanto, o estado do evento pode ser Erro se uma carga incorreta tiver sido fornecida.

    Tipo de dados: cadeia de caracteres

    Solicitação de 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'
    

    Resposta de sucesso:

    {
       "result": "success"
    }

    Solicitação de 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'
    

    Resposta de sucesso:

    {
       "result": "success"
    }

    Solicitação de 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'
    

    Resposta de sucesso:

    {
       "result": "success"
    }

    DevOps - PUT /devops/orchestration/changeControl/{changeControlId}

    Atualiza as informações de controle de mudança da tarefa de orquestração especificada.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/changeControl/{changeControlId}

    URL padrão: /api/sn_devops/devops/orchestration/changeControl/{changeControlId}

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 91. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    changeControlId Sys_id da tarefa de controle de mudança. Localizado na tabela Retorno de chamada [sn_devops_callback].

    Tipo de dados: cadeia de caracteres

    Tabela 92. Parâmetros de consulta
    Nome Descrição
    toolId Obrigatório. Sys_id da ferramenta DevOps associada à tarefa de controle de mudanças.

    Tipo de dados: cadeia de caracteres

    Tabela: Ferramenta de Orquestração [sn_devops_orchestration_tool]

    Tabela 93. Parâmetros do corpo da solicitação
    Nome Descrição
    callbackURL Obrigatório. URL que a instância ServiceNow pode chamar de volta quando o processo de aprovação da solicitação de mudança associada for concluído. Este retorno de chamada deve permitir que a execução do pipeline continue ou não, com base no resultado da aprovação.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails Obrigatório. Descrição da tarefa de orquestração.

    Tipo de dados: objeto

    "orchestrationTaskDetails": {
      "message": "String",
      "triggerType": "String",
      "upstreamTaskExecutionURL": "String"
    }
    orquestraçãoDetalhesDaTarefa.message Mensagem de texto de forma livre.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails.triggerType Obrigatório. A forma como a tarefa de orquestração foi iniciada.

    Valores válidos:

    • scm: a confirmação do código da ferramenta Git/scm acionou o trabalho.
    • ascendente: o trabalho ascendente acionou este trabalho.
    • usuário: o usuário iniciou o trabalho manualmente.

    Tipo de dados: cadeia de caracteres

    orquestraçãoTaskDetails.upstreamTaskExecutionURL Necessário se triggerType estiver definido como ascendente. URL de execução de tarefa ascendente.

    Por exemplo: https://jenkins.mycompany.com:8080/job/Mobile-Platform-test/40/

    Tipo de dados: cadeia de caracteres

    orquestrationTaskURL Obrigatório. URL da tarefa de orquestração.

    Por exemplo: https://jenkins.mycompany.com:8080/orchestration_task/Mobile-Platform-deploy/

    Tipo de dados: cadeia de caracteres

    toolType Tipo de ferramenta DevOps.

    Valor válido: jenkins

    Tipo de dados: cadeia de caracteres

    taskExecutionURL Obrigatório. URL da tarefa a ser executada.

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 94. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 95. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 96. Códigos de status
    Código do status Descrição
    200 Solicitação concluída com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    401 Autenticação inválida ou ausente.
    404 Não encontrado. Não foi possível encontrar o registro especificado.
    500 Erro interno do servidor. Ocorreu um erro inesperado ao processar a solicitação. A resposta contém informações adicionais sobre o erro.

    Parâmetros do corpo da resposta

    Nome Descrição
    change_control Sinalizador que indica se a tarefa de orquestração está sob controle de mudança.
    Valores possíveis:
    • verdadeiro: sob controle de mudança.
    • falso: não está sob controle de mudança.

    Tipo de dados: booliano

    detalhes Entrada para todas as condições de erro.

    Tipo de dados: objeto

    "details": {
      "errors": [Array]
    }
    detalhes.erros Descrição de um único erro.

    Tipo de dados: matriz de objetos

    "errors": [
      {
        "message": "String"
      }
    ]
    detalhes.erros.mensagem Mensagem de erro detalhada.

    Tipo de dados: cadeia de caracteres

    Amostra de solicitação 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/\"}
    }"

    Resposta:

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

    DevOps - PUT /devops/orchestration/changeInfo/{changeInfo}

    Atualiza os campos em uma solicitação de mudança especificada.

    Formato da URL

    URL com controle de versão: /api/sn_devops/{api_version}/devops/orchestration/changeInfo/{changeInfo}

    URL padrão: /api/sn_devops/devops/orchestration/changeInfo/{changeInfo}

    Nota:
    As versões disponíveis são especificadas no Explorador de REST API. Para REST APIs com script, há informações adicionais sobre a versão no formulário Serviço REST com script.

    Parâmetros de solicitação compatíveis

    Tabela 97. Parâmetros de caminho
    Nome Descrição
    api_version Opcional. Versão do endpoint a ser acessada. Por exemplo, v1 ou v2. Somente especifique este valor para usar uma versão de endpoint diferente da mais recente.

    Tipo de dados: cadeia de caracteres

    Tabela 98. Parâmetros de consulta
    Nome Descrição
    changeRequestNumber Obrigatório. Número de solicitação de mudança associado à tarefa de orquestração a ser atualizada.

    Tipo de dados: cadeia de caracteres

    Tabela: solicitação de mudança [change_request]

    Tabela 99. Parâmetros do corpo da solicitação
    Nome Descrição
    dados Obrigatório. Pares de nome-valor dos campos a serem atualizados na solicitação de mudança associada.
    Por exemplo, para atualizar o arquivo de descrição resumida, insira um par de nome-valor semelhante ao seguinte:
     "{\"short_description\": \"my short desc\" }"
    Para o parâmetro state, somente as seguintes transições são compatíveis:
    • cancelar:
      • O estado da solicitação de mudança deve ser implementado para mover o estado para cancelar.
      • O parâmetro reason é uma entrada obrigatória para atualizar o estado para cancelado.
    • encerrado:
      • O estado da solicitação de mudança deve ser implementação ou pós-implementação para mover o estado para fechar.
      • close_code e close_notes são entradas obrigatórias para atualizar o estado para fechado.
        Valores possíveis:
        • 4: Cancelar (Valor definido na propriedade sn_devops.change_request.cancel_state.)
        • 3: Encerrado (valor definido na propriedade sn_devops.change_request.closed_state).

    Tipo de dados: cadeia de caracteres

    Cabeçalhos

    Os cabeçalhos de solicitação e resposta a seguir se aplicam somente a esta ação HTTP ou se aplicam a esta ação de maneira distinta. Para obter uma lista de cabeçalhos gerais usados na REST API, consulte Cabeçalhos de REST API compatíveis.

    Tabela 100. Cabeçalhos da solicitação
    Cabeçalho Descrição
    Aceitar Formato de dados do corpo da resposta. Oferece suporte somente a application/json.
    Autorização
    A partir da v2, esta API oferece suporte à autenticação baseada em token. Os tokens podem ser adquiridos clicando no botão Copiar token no registro da ferramenta, localizado na tabela Ferramenta [sn_devops_tool]. O token pode ser usado em um cabeçalho de autorização no formato Autorização: sn_devops.DevOpsToken<tool_sys_id> :<tool_token> .
    Nota:
    Se os detalhes da autenticação básica (nome de usuário e senha) forem fornecidos, além de um cabeçalho de autorização com token, a autenticação básica terá precedência.

    Se o usuário devops.system não estiver disponível em sua instância, use a propriedade Alternar para este usuário após a autenticação baseada em token ser bem-sucedida. Esta propriedade permite definir qualquer usuário que tenha a função sn_devops.integration, que é necessária para concluir a autenticação de token. Para obter informações, consulte DevOps Change Velocity properties.

    Tipo de conteúdo Formato de dados do corpo da solicitação. Oferece suporte somente a application/json.
    Tabela 101. Cabeçalhos de resposta
    Cabeçalho Descrição
    Nenhum(a)

    Códigos de status

    Os seguintes códigos de status se aplicam a esta ação HTTP. Para obter uma lista de códigos de status possíveis usados na REST API, consulte Códigos de resposta HTTP de REST API.

    Tabela 102. Códigos de status
    Código do status Descrição
    200 Bem-sucedido. A solicitação foi processada com sucesso.
    400 Solicitação Incorreta. Foi detectado um tipo de solicitação incorreto ou solicitação malformada.
    404 Não encontrado. O item solicitado não foi encontrado.

    Parâmetros do corpo da resposta

    Nome Descrição
    mensagem Descrição dos resultados da atualização.

    Tipo de dados: cadeia de caracteres

    status Status da solicitação.
    Valores possíveis:
    • Sucesso: a solicitação de mudança foi encontrada e os detalhes da mudança foram atualizados com sucesso.
    • Erro: a solicitação de mudança não foi encontrada e os detalhes da mudança não foram atualizados.

    Tipo de dados: cadeia de caracteres

    updateStatus Status da atualização.
    Valores possíveis:
    • Pronto
    • Erro

    Tipo de dados: cadeia de caracteres

    Solicitação de cURL

    O exemplo de código a seguir mostra como atualizar vários campos na solicitação de mudança 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"
    }

    Resposta:

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