API do DevOps

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 97 min. de leitura
  • A API do DevOps fornece endpoints que permitem a interação com ferramentas externas do DevOps.

    Esta REST API permite que os integradores:

    • Recupere as ferramentas de DevOps 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 tarefa 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 suas execuções e confirmações de pipeline associadas.
    • Crie e gerencie eventos de aplicação e ferramenta de integração.

    Para obter informações adicionais, consulte DevOps.

    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 do token. Para obter informações, consulte .

    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 obter 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 de URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/code/schema

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

    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. Especifique este valor somente 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 recurso a retornar.

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

    • confirmar
    • repositório
    • filial

    Tipo de dados: cadeia de caracteres

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

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 6. Códigos de status
    Código de 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
    filial 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

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

    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ções.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

    confirma.detalhes Detalhes da confirmação.
    Nota:
    Incluir detalhes em uma confirmação não é obrigatório. Este endpoint retorna uma matriz vazia para detalhes se eles não estiverem incluídos na confirmação.

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

    confirma.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-Mobile".

    Tipo de dados: cadeia de caracteres

    path 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 de origem DevOps.

    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 de 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 de 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 de 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/integração/status

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

    Formato de URL

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

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

    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. Especifique este valor somente 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

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 12. Códigos de status
    Código de 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"
    }
    result.code Código de status HTTP.

    Tipo de dados: cadeia de caracteres

    result.importRequestSysIds Lista de solicitações de importação que foram criadas como parte da 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 Matriz de objetos que definem as aplicações a serem criadas na instância ServiceNow associada.

    Tipo de dados: matriz

    "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. Localizado na tabela Apps [sn_devops_app].

    Tipo de dados: cadeia de caracteres

    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:
    • Reprovado
    • 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

    "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

    "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:
    • Reprovado
    • Ê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

    "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

    "repositories": [{
      "configureStatus": {Object}, 
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.repositories.configureStatus Detalhes do status da 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 da configuração atual 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 da associação do repositório atual.

    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 do repositório.

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    result.messageDetails.toolResponse Matriz de objetos que define as ferramentas a serem integradas na instância ServiceNow associada.

    Tipo de dados: matriz

    "toolResponse": [{
      "configureStatus": {Object},
      "connectStatus": {Object},
      "createStatus": {Object},
      "discoveryStatus": {Object},
      "name": "String",
      "status": "String",
      "type": "String"
    }]
    result.messageDetails.toolResponse.configureStatus Descreve o status de configuração da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, ele 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 Descreve o status da conexão da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, ele 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 Descreve o status de criação da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, ele 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 Descreve o status de descoberta da ferramenta. Em caso de sucesso, ele retorna status e message. Em caso de erro, ele 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 Matriz de objetos que descreve cada entidade descoberta.

    Tipo de dados: matriz

    "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. Localizado na tabela sn_devops_m2m_inbound_event_import_request.

    Tipo de dados: cadeia de caracteres

    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:
    • Reprovado
    • 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ças.

    Formato de URL

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

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

    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. Especifique este valor somente 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
    orchestrationTaskName Nome da tarefa de orquestração a ser verificada.

    Tipo de dados: cadeia de caracteres

    conexão de teste 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: teste 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. Localizado na tabela da ferramenta Orchestration [sn_devops_orchestration_tool].

    Tipo de dados: cadeia de caracteres

    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

    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 do token. Para obter informações, consulte .

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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 18. Códigos de status
    Código de 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ças.
    Valores possíveis:
    • verdadeiro: sob controle de mudanças.
    • falso: fora do controle de mudanças

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

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

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

    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. Especifique este valor somente 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
    FilialName 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 pode 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 Jenkins Freestyle ou Maven, opcional para todos os outros. Nome do projeto da ferramenta de orquestração.

    Tipo de dados: cadeia de caracteres

    stageName 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. Localizado na tabela da ferramenta Orchestration [sn_devops_orchestration_tool].

    Tipo de dados: cadeia de caracteres

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

    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 do token. Para obter informações, consulte .

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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 24. Códigos de status
    Código de 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
    changeFound Sinalizador que indica se a solicitação de mudança foi localizada.
    Valores possíveis:
    • verdadeiro: a solicitação de mudança foi encontrada.
    • false: 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 é baseada 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(a)
    • 4: Baixo

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    state Estado da solicitação de mudança.
    Valores possíveis:
    • Avaliar
    • Autorizar
    • Cancelado
    • Encerrado
    • Implementar
    • Novo
    • Revisar
    • Programado

    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 para aprovação.

    Tipo de dados: cadeia de caracteres

    PlannedStartDate 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 obter 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 de URL

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

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

    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. Especifique este valor somente 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 recurso a retornar.
    Valores válidos (sem distinção entre maiúsculas e minúsculas):
    • build_details
    • retorno de chamada
    • orquestration_task
    • task_execution

    Tipo de dados: cadeia de caracteres

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

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 30. Códigos de status
    Código de 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

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

    Tipo de dados: objeto

    "orchestrationTaskDetails": {
      "message": "String",
      "name": "String",
      "triggerType": "String",
      "url": "String"
    }
    orchestrationTaskDetails.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

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

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    orchestrationTaskURL URL da tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    resultado Resultado da execução da tarefa.
    Valores válidos:
    • Êxito
    • Reprovado

    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

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

    Valores válidos:

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

    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 de 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 que estão sendo passadas são válidas para a criação de uma tarefa de orquestração e são válidas para associação a uma etapa criada anteriormente.

    Formato de URL

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

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

    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. Especifique este valor somente 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
    FilialName Nome da ramificação associada à tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    isMultiBranch 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.
    • false: 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 em 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 em uma tarefa de orquestração primária, o URL da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    orchestrationTaskURL Obrigatório. URL da tarefa de orquestração.
    Nota:
    Deve ser codificado por porcentagem (%); por exemplo, https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F.
    Tipo de dados: cadeia de caracteres
    conexão de teste 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: teste 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. Localizado na tabela da ferramenta Orchestration [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

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 36. Códigos de status
    Código de 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.

    Tipo de dados: booliano

    etapaválida Sinalizador que indica se as informações enviadas são válidas.

    Tipo de dados: booliano

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

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

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

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

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

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

    DevOps - GET /devOps/plano/schema

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

    Depois de obter 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 de URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/plan/schema

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

    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. Especifique este valor somente 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 recurso a retornar.

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

    • app
    • versão
    • item_de_trabalho

    Tipo de dados: cadeia de caracteres

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

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 42. Códigos de status
    Código de 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

    app.team 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 a quem o item de trabalho está atribuído.

    Tipo de dados: objeto

    "assignedTo": {
      "email": "String",
      "id": "String",
      "name": "String",
      "userName": "String"
    }
    assignedTo.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

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

    path 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

    state 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

    nome.equipe 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 de 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 de 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

    Permite que as ferramentas de orquestração registrem 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 do 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 aprovado na solicitação, um repositório será criado, mas não será 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 de Versão do artefato [sn_devops_artifact_version] associada.
      • 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 que estão vinculadas a execuções de tarefa anteriores que não criaram um artefato também estã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 estágio 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 sua ferramenta de artefato oferecer suporte a 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 Como usar a aceleração de mudança do DevOps para versões.

    Formato de URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/artifact/registration

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

    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. Especifique este valor somente 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. Localizado na tabela da ferramenta Orchestration [sn_devops_orchestration_tool]. O endpoint usa essas informações para localizar informações de execução de tarefa.

    Tipo de dados: cadeia de caracteres

    toolId Sys_id da ferramenta de artefato associada ao artefato. Localizado na tabela Ferramenta de artefato [sn_devops_artifact_tool].

    Tipo de dados: cadeia de caracteres

    Tabela 45. Parâmetros do corpo da solicitação (XML ou JSON)
    Nome Descrição
    artefatos É necessário pelo menos uma entrada. Matriz de objetos em que cada objeto identifica exclusivamente uma versão de artefato a ser registrada.

    Tipo de dados: matriz

    "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ório 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

    FilialName Obrigatório se for um projeto de 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

    stageName 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 48. Códigos de status
    Código de 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 da 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 do 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.create Se a solicitação criou registros de artefato, a lista de sys_ids dos registros criados na tabela Artefatos [sn_devops_artifact].

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

    resposta.artigo.encontrado 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

    "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 utilizado no momento
    response.artifact.update.id Não utilizado 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 estágio 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

    "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

    "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 utilizado no momento
    response.artifact_register_requests.update.id Não utilizado no momento
    response.artifact_repository Resultados de todos os registros do 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

    "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 os registros do repositório de artefatos usados na solicitação de registro já existirem, a lista de sys_ids dos registros existentes.
    Nota:
    Nenhuma modificação é feita nos pacotes existentes.

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: matriz

    "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 de todos os registros de versão de artefato que foram criados durante o processamento da solicitação.

    Tipo de dados: matriz

    "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 os registros de versão do artefato usados na solicitação de registro já existirem, a lista de sys_ids dos registros existentes.

    Tipo de dados: matriz

    "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 utilizado no momento
    response.artifact_version.update.id Não utilizado 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

    Exemplo 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:
    • Crie aplicações.
    • Associe objetos DevOps, 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 de URL

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

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

    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. Especifique este valor somente 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
    Tabela 51. Parâmetros do corpo da solicitação
    Nome Descrição
    aplicações Matriz de objetos que definem 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 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. Localizado na tabela Usuário [sys_user]. 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

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

    Tipo de dados: cadeia de caracteres

    pipelines Matriz de objetos que define pipelines para associar a aplicações.

    Tipo de dados: matriz

    "pipelines": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    pipelines.app Obrigatório se um objeto pipelines for especificado. Nome da aplicação a ser associado 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.changeSteps Matriz de objetos que definem as etapas de mudança a serem criadas para o pipeline especificado no campo pipelines.name.

    Tipo de dados: matriz

    "changeSteps": [{
      "changeApprovalGroup": "String",
      "changeControlledBranches": "String",
      "changeType": "String",
      "name": "String",
      "type": "String"
    }]

    Tipo de dados: cadeia de caracteres

    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. Localizado na tabela Grupo [sys_user_group]. Este grupo já deve existir na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    pipelines.changeSteps.changeControlledBranches Lista separada por vírgulas de ramificações de código que estão sob controle de mudanças. 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. Os tipos disponíveis são definidos no campo Tipo da tabela Solicitação de mudança [change_request].

    Tipo de dados: cadeia de caracteres

    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. Os tipos de etapa disponíveis são definidos no campo Tipo da tabela Etapas [sn_devops_step].

    Tipo de dados: cadeia de caracteres

    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 oferecer suporte à 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.tool 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 Matriz de objetos que define um plano para associar a uma aplicação.

    Tipo de dados: matriz

    "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 ser descoberto na instância ServiceNow.

    Tipo de dados: cadeia de caracteres

    planos.projeto Obrigatório se um objeto de planos for especificado e a Plans.tool oferecer suporte à 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.tool 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 Matriz de objetos que definem os 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

    "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ório 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.tool Obrigatório se um objeto repositories for especificado. Nome de ferramenta amigável a ser associado 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 artefatoRepositórios 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 aplicações desta solicitação.

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    artefatoRepositórios.tool Obrigatório se o objeto artefatoRepositórios for especificado. Nome de ferramenta amigável a ser associado ao artefatoRepositórios para criar um identificador exclusivo de artefatoRepositórios/ferramenta. A ferramenta já deve ter sido criada na instância da ServiceNow.

    Tipo de dados: cadeia de caracteres

    artefatoRepositórios.projeto Obrigatório se o objeto artefatoRepositórios for especificado e o repositories.tool oferecer suporte à 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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 54. Códigos de status
    Código de 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"
    }
    result.code 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

    result.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 bicicleta e o associa ao pipeline Jenkins Aluguéis de bicicleta, 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/integração/tool

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

    Dependendo do tipo de ferramenta para o qual a solicitação é 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 retornados para este endpoint indicam somente se a solicitação foi publicada, ele 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 o alias de conexão e credencial DevOps (CreateDevOpsTool) para configurar as ferramentas na instância. Para obter detalhes, consulte Instalar DevOps Change Velocity. Além disso, a entidade de chamada deve ter a função devops.integration.user.

    Formato de URL

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

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

    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. Especifique este valor somente 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
    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. Localizado na tabela Usuário [sys_user]. 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

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

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: matriz

    "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 Obrigató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 da ferramenta na tabela Integrações da ferramenta [sn_devops_tool_integration].

    Tipo de dados: cadeia de caracteres

    ferramentas.useMidServer 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.nomedeusuário Obrigató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 Obrigatório, exceto para a ferramenta Agile. URL da ferramenta a ser criada. O serviço DevOps usa este URL para se integrar à ferramenta. Se estiver usando a ferramenta "Azure DevOps", tools.url poderá conter o URL da organização ADO ou o URL do projeto ADO.

    Ao fornecer um URL de organização ADO, a API descobre todos os projetos na organização especificada e não configura nenhum projeto. Ao fornecer um URL de projeto 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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 60. Códigos de status
    Código de 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"
    }
    result.code 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

    result.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 do Discovery 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 de URL

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

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

    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. Especifique este valor somente 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 colocar a tarefa especificada sob controle de mudança. Localizado na tabela sn_devops_orchestration_tool da ferramenta Orchestration.

    Tipo de dados: cadeia de caracteres

    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 associado 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
    • Risk_impact_analysis
    • sys_id

    Se esses campos estiverem 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 é observada 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

    isMultiBranch 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.
    • false: o projeto não é do tipo Multibranch.

    Tipo de dados: booliano

    Padrão: falso

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

    Tipo de dados: objeto

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

    Tipo de dados: cadeia de caracteres

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

    Valores válidos:

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

    Tipo de dados: cadeia de caracteres

    orchestrationTaskDetails.upstreamTaskExecutionURL Obrigató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

    orchestrationTaskURL Obrigatório. URL da tarefa de orquestração para a qual criar o retorno de chamada.

    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 secundária aninhada em 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 estágio 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 estágio 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 de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentStageName Se a tarefa de orquestração for uma tarefa secundária aninhada em 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 em 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 66. Códigos de status
    Código de 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ças.
    Valores possíveis:
    • verdadeiro: sob controle de mudanças.
    • falso: fora do controle de mudanças

    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 que estão sendo passadas são válidas para a criação de uma tarefa de orquestração e são válidas 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 de URL

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

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

    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. Especifique este valor somente 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 da ferramenta Orchestration [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
    FilialName Nome da ramificação associada à tarefa de orquestração.

    Tipo de dados: cadeia de caracteres

    isMultiBranch 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.
    • false: o projeto não é do tipo Multibranch.

    Tipo de dados: booliano

    Padrão: falso

    parentNode Se a tarefa de orquestração for secundária aninhada em 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 estágio 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 estágio 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 de fase de pipeline.

    Tipo de dados: cadeia de caracteres
    parentStageName Se a tarefa de orquestração for uma tarefa secundária aninhada em 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 em uma tarefa de orquestração primária, o URL da tarefa de orquestração primária.

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: cadeia de caracteres

    orchestrationTaskURL 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 72. Códigos de status
    Código de 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.

    Tipo de dados: booliano

    etapaválida Sinalizador que indica se as informações enviadas são válidas.

    Tipo de dados: booliano

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

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

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

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

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

    DevOps - POST /devOps/pacote/registro

    Permite que as ferramentas de orquestração criem novos pacotes de artefatos que contenham versões de artefatos especificadas.

    Os 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 exibidas em solicitações de mudança, o pacote deve ser criado na fase anterior à fase que contém a aprovação da mudança.

    Todas as versões de artefato incluídas na solicitação de registro do 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, em seguida, copia 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 do DevOps para versões.

    Formato de URL

    URL com controle de versões: /api/sn_devops/{api_version}/devops/package/registration

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

    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. Especifique este valor somente 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 artefato. Localizado na tabela da ferramenta Orchestration [sn_devops_orchestration_tool]. O endpoint usa essas informações para localizar informações de execução de tarefa.

    Tipo de dados: cadeia de caracteres

    toolId Sys_id da ferramenta de artefato associada ao pacote de artefato. Localizado na tabela Ferramenta de artefato [sn_devops_artifact_tool].

    Tipo de dados: cadeia de caracteres

    Tabela 75. Parâmetros do corpo da solicitação
    Nome Descrição
    artefatos É necessário pelo menos uma entrada. Matriz de objetos em que cada objeto identifica exclusivamente uma versão de artefato a ser incluída no pacote.

    Tipo de dados: matriz

    "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.pipelineName Obrigatório se artifact.version e artifacts.projectName não forem aprovados. Nome do pipeline.

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

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

    Tipo de dados: cadeia de caracteres

    Tamanho máximo: 160

    Padrão: nulo

    artefatos.repositório 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

    FilialName 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

    stageName 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 78. Códigos de status
    Código de 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 da 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 do 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 estágio 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

    "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

    "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 utilizado no momento.
    response.artifact_register_requests.update.id Não utilizado no momento.
    response.sn_devops_m2m_artifact_version_package Resultados para cada versão do 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 vinculando versões de artefato a pacotes, a lista de sys_ids dos registros criados na tabela Versão de artefato para pacote [sn_devops_m2m_artifact_version_package].

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

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

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

    response.sn_devops_m2m_artifact_version_package.update

    Não utilizado no momento.

    response.sn_devops_m2m_artifact_version_package.update.id

    Não utilizado no momento.

    response.sn_devops_package Resultados de 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

    "create": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_package.create.id Sys_id do registro do 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 é feita nos registros existentes.

    Tipo de dados: matriz

    "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 utilizado no momento.
    response.sn_devops_package.update.id Não utilizado 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

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

    Exemplo 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/{capability}

    Publica a carga passada na tabela Evento 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 passado no capability. Um subfluxo personalizado, para processar a carga passada, já deve estar definido na sua instância ServiceNow. Com base em uma programação predefinida, o DevOps Fluxo mestre seleciona as informações de evento do webhook da tabela de eventos de entrada e as passa para o subfluxo personalizado, que então processa a carga útil. Para obter mais informações sobre como criar um subfluxo personalizado, consulte Como criar subfluxos do 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 - Scoped.

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

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

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

    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. Especifique este valor somente 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. O sys_id da ferramenta de orquestração à qual o pipeline relacionado pertence. orchestrationToolId será necessário se o parâmetro de solicitação capability estiver definido como test ou softwarequality.

    toolId será a ferramenta de orquestração padrão se orchestrationToolId não estiver presente.

    tipo de teste Obrigatório se capability estiver definido como teste. O tipo de teste que está sendo executado.

    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.
    Tabela 81. Parâmetros do corpo da solicitação
    Nome Descrição
    Dependente de 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 84. Códigos de status
    Código de 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]
    }
    details.erros Descrição de um único erro.

    Tipo de dados: matriz

    "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 recurso sem suporte: o parâmetro de recurso 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 de 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 de 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 de 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 de cURL para o 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 de 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.
    • GitHub integration with DevOps
    • Integração do Jira com DevOps
    • Integração do Bitbucket com DevOps

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

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

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

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

    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. Especifique este valor somente 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. Localizado na tabela Ferramentas de DevOps [sn_devops_tool].

    Tipo de dados: cadeia de caracteres

    Tabela 86. Parâmetros de consulta
    Nome Descrição
    Nenhum
    Tabela 87. Parâmetros do corpo da solicitação
    Nome Descrição
    Dependente de 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 90. Códigos de status
    Código de 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 for 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 de URL

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

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

    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. Especifique este valor somente 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ça. Localizado na tabela da ferramenta Orchestration [sn_devops_orchestration_tool].

    Tipo de dados: cadeia de caracteres

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

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

    Tipo de dados: objeto

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

    Tipo de dados: cadeia de caracteres

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

    Valores válidos:

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

    Tipo de dados: cadeia de caracteres

    orchestrationTaskDetails.upstreamTaskExecutionURL Obrigató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

    orchestrationTaskURL 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 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 96. Códigos de status
    Código de 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ças.
    Valores possíveis:
    • verdadeiro: sob controle de mudanças.
    • falso: não está sob controle de mudanças.

    Tipo de dados: booliano

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

    Tipo de dados: objeto

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

    Tipo de dados: matriz

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

    Tipo de dados: cadeia de caracteres

    Exemplo de solicitação cURL

    curl -X PUT "https://instance.service-now.com/api/sn_devops/v1/devops/orchestration/change/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\",
      \"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 de URL

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

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

    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. Especifique este valor somente 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. Mude o número da solicitação associada à tarefa de orquestração a ser atualizada. Localizado na tabela Solicitação de mudança [change_request].

    Tipo de dados: cadeia de caracteres

    Tabela 99. Parâmetros do corpo da solicitação
    Nome Descrição
    dados Obrigatório. Pares de nome-valor para os 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 implementar ou pós-implementar 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 do token. Para obter informações, consulte .

    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

    Códigos de status

    Os códigos de status a seguir 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 da REST API.

    Tabela 102. Códigos de status
    Código de 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
    message 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:
    • Concluído
    • 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"
      }
    }