DevOps API

  • 릴리스 버전: Australia
  • 업데이트 날짜 2026년 03월 12일
  • 소요 시간: 198분
  • DevOps API는 외부 DevOps 도구와의 상호작용을 활성화하는 엔드포인트를 제공합니다.

    통합자는 이 REST API를 통해 다음을 수행할 수 있습니다.

    • 인스턴스와 연결된 사용 가능한 DevOps 도구를 검색합니다.
    • 코드 자원, 계획 또는 오케스트레이션 자원에 대한 스키마 객체를 검색합니다.
    • 오케스트레이션 작업의 변경 통제 여부와 변경 통제 상태를 확인합니다.
    • 변경 제어 하에 작업 실행과 연결할 콜백을 생성합니다.
    • 다양한 이벤트 페이로드를 보내고, 이러한 페이로드는 정규화된 객체로 변환되어 코드, 오케스트레이션 및 계획 객체로 저장됩니다.
    • 인코딩된 쿼리와 특정 검색/정렬 기준을 사용하여 커밋, 분기 또는 리포지토리를 검색합니다.
    • 연결된 파이프라인 실행 및 커밋과 함께 아티팩트 버전 및 패키지를 등록합니다.
    • 온보딩 애플리케이션 및 도구 이벤트를 생성하고 관리합니다.

    자세한 내용은 DevOps Config 문서를 참조하십시오.

    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    DevOps - GET /devops/코드/스키마

    지정된 코드 자원(커밋, 리포지토리 또는 분기)에 대한 스키마 객체를 반환합니다.

    필요한 스키마 개체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. POST /code/commit, POST /code/repository 또는 POST /code/branch.

    주:
    이 엔드포인트는 필요한 요청 본문 요소만 반환합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/code/schema

    기본 URL: /api/sn_devops/devops/code/schema

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 1. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 2. 쿼리 매개변수
    이름 설명
    자원 필수 반환할 자원 스키마의 유형입니다.

    유효한 값(대/소문자 구분 안 함):

    • 분기
    • 커밋
    • 리포지토리

    데이터 유형: 문자열

    표 3. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 4. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 5. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 6. 상태 코드
    상태 코드 설명
    200 요청이 성공적으로 완료되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    분기 코드 커밋이 이루어진 분기에 대한 설명입니다.

    데이터 유형: 객체

    "branch": {
      "name": "String",
      "path": "String"
    }
    branch.name 코드 커밋이 이루어진 분기의 이름입니다.

    데이터 유형: 문자열

    분기.경로 분기의 상대 경로입니다.

    데이터 유형: 문자열

    커밋 커밋에 대한 설명입니다.

    데이터 유형: 객체 배열

    "commits": [
      {
        "committedDate": "String",
        "committer": {Object},
        "details": [Array],
        "id": "String",
        "url": "String"      
      }
    ]
    commits.committedDate 소스 DevOps 도구에서 코드가 커밋된 날짜/시간입니다.

    데이터 유형: 문자열

    형식: ISO 8601(시간대 오프셋 포함)

    예: 1970-01-01T08:15:30-05:00

    commits.committer 커밋을 요청한 개인/엔터티에 대한 설명입니다.

    데이터 유형: 객체

    "committer": {
      "email": "String"
    }
    commits.committer.email 커밋을 요청한 사람의 이메일 주소입니다.

    데이터 유형: 문자열

    커밋.상세 정보 커밋에 대한 상세 정보입니다.
    주:
    커밋에 상세 정보를 포함하는 것은 필수가 아닙니다. 이 엔드포인트는 세부 정보가 커밋에 포함되지 않은 경우 빈 배열을 반환합니다.

    데이터 유형: 객체 배열

    "details": [
      {
        "action": "String",
        "additions": Number,
        "changes": Number,
        "deletions": Number,
        "file": "String",
        "totalChanges": Number
      }
    ]
    commits.details.action 파일에 대해 수행된 작업입니다.

    데이터 유형: 문자열

    커밋.상세정보.추가 파일에 추가된 총 항목 수입니다.

    데이터 유형: 숫자

    커밋.상세정보.변경 변경된 총 수입니다.

    데이터 유형: 숫자

    커밋.상세정보.삭제 파일에서 삭제한 총 횟수입니다.

    데이터 유형: 숫자

    commits.details.file 분기를 기준으로 수정된 파일의 경로입니다.

    데이터 유형: 문자열

    commits.details.totalChanges 총 추가 및 삭제 수입니다.

    데이터 유형: 숫자

    commits.id 소스 플랫폼 식별자 또는 커밋 SHA입니다.

    데이터 유형: 문자열

    commits.url 커밋의 URL(예: "https://github.com/mycompany/mobileplatform/commit/3fa85f6457174562b3fc2c963f66afa6")

    데이터 유형: 문자열

    이름 분기 또는 리포지토리의 이름입니다(예: "마스터" 또는 "플랫폼-모바일").

    데이터 유형: 문자열

    경로 분기의 상대 경로입니다.

    데이터 유형: 문자열

    리포지토리 커밋이 이루어진 리포지토리에 대한 설명입니다.

    데이터 유형: 객체

    "repository": {
      "name": "String",
      "url": "String"
    }
    repository.name 리포지토리 이름입니다.

    데이터 유형: 문자열

    리포지토리.url 소스 DevOps 도구의 리포지토리 URL입니다.

    데이터 유형: 문자열

    URL "https://github.com/mycompany/mobileplatform"과 같은 리포지토리의 URL입니다.

    데이터 유형: 문자열

    resource=branch에 대한 샘플 cURL 요청

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

    resource=commit에 대한 샘플 cURL 요청

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

    resource=repository에 대한 샘플 cURL 요청

    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/온보딩/상태

    서비스에서 DevOps 비동기적으로 처리되거나 처리 중인 지정된 온보딩 이벤트의 현재 상태를 반환합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/onboarding/status

    기본 URL: /api/sn_devops/devops/onboarding/status

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 7. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 8. 쿼리 매개변수
    이름 설명
    ID 상태를 반환할 온보딩 이벤트의 고유 식별자입니다. 이 값은 이벤트 요청을 호출한 엔드포인트의 반환 결과( 예: /devops/onboarding/app 또는 /devops/onboarding/tool)에 제공됩니다.

    데이터 유형: 문자열

    표 9. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 10. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 11. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 12. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    202 보류 중 - 온보딩 요청이 생성되었으며 서비스에서 DevOps 요청을 처리하고 있습니다.
    207 부분 성공 - 온보딩 요청이 생성되었으며 서비스에서 DevOps 요청을 처리합니다.
    400 실패 - 온보딩 이벤트가 실패했습니다.
    404 실패 - 엔드포인트에서 지정된 이벤트 ID와 일치하는 요청을 찾지 못했습니다.

    응답 본문 매개변수

    이름 설명
    결과 온보딩 요청의 결과입니다.
    데이터 유형: 객체
    "result": {
      "code": "String",
      "importRequestsSysIds": "[Array],
      "messageDetails": {Object],
      "onboardingRequestID": "String",
      "status": "String"
    }
    결과.코드 HTTP 상태 코드입니다.

    데이터 유형: 문자열

    result.importRequestsSysIds 온보딩 요청의 일부로 생성된 임포트 요청 목록입니다.

    데이터 유형: 문자열 배열

    result.messageDetails 온보딩 이벤트 진행률에 대한 상세 정보입니다.
    데이터 유형: 객체
    "messageDetails": {
      "apps": [Array],
      "pipelines": [Array],
      "plans": [Array],
      "repositories": [Array],
      "status": "String",
      "toolResponse": [Array]
    }
    result.messageDetails.apps 연결된 ServiceNow 인스턴스 내에서 생성할 앱을 정의합니다.

    데이터 유형: 객체 배열

    "apps": [{
      "appId": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.apps.appId 애플리케이션이 온보딩될 때 생성된 애플리케이션의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 앱 [sn_devops_app]

    result.messageDetails.apps.message 애플리케이션 온보딩 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.apps.name 온보딩 중인 애플리케이션의 이름입니다.

    데이터 유형: 문자열

    result.messageDetails.apps.status 애플리케이션 온보딩의 현재 상태입니다.
    가능한 값:
    • 실패함
    • 부분 성공
    • 성공

    데이터 유형: 문자열

    result.messageDetails.pipelines 온보딩 이벤트와 연결된 파이프라인 목록 및 해당 상세 정보입니다.

    데이터 유형: 객체 배열

    "pipelines": [{
      "changeStepAssociation": [Array],
      "errors": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.pipelines.changeStepAssociation 온보딩과 관련된 변경 단계를 설명하는 객체의 배열입니다.

    데이터 유형: 객체 배열

    "changeStepAssociation": [{
      "changeStepName": "String",
      "status": "String",
      "summary": "String",
    }]
    result.messageDetails.pipelines.changeStepAssociation.changeStepName 변경 단계의 이름입니다.

    데이터 유형: 문자열

    result.messageDetails.pipelines.changeStepAssociation.status 파이프라인에 대한 변경 단계 연결의 상태입니다.
    가능한 값:
    • 실패함
    • 성공

    데이터 유형: 문자열

    result.messageDetails.pipelines.changeStepAssociation.summary 변경 단계 연결 상태에 대한 요약입니다.

    데이터 유형: 문자열

    result.messageDetails.pipelines.errors 파이프라인을 연결할 때 탐지된 오류 목록입니다.

    데이터 유형: 배열

    result.messageDetails.pipelines.message 파이프라인 연결의 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.pipelines.name 파이프라인의 이름입니다.

    데이터 유형: 문자열

    result.messageDetails.pipelines.status 파이프라인 연결의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.plans 온보딩 이벤트와 관련된 계획 목록 및 해당 상세 정보입니다.

    데이터 유형: 객체 배열

    "plans": [{
      "errors": "String",
      "message": "String",
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.plans.errors 계획을 연결할 때 탐지된 오류 목록입니다.

    데이터 유형: 배열

    result.messageDetails.plans.message 파이프라인 연결의 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.plans.name 계획 이름.

    데이터 유형: 문자열

    result.messageDetails.plans.status 계획 연결의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.repositories 온보딩 이벤트와 연결된 리포지토리 목록과 해당 상세 정보입니다.

    데이터 유형: 객체 배열

    "repositories": [{
      "configureStatus": {Object}, 
      "name": "String",
      "status": "String",
    }]
    result.messageDetails.repositories.configureStatus 리포지토리에 대한 웹후크 구성 상태에 대한 상세 정보입니다.

    데이터 유형: 객체

    "configureStatus": {
      "message": "String",
      "status": "String",
    }
    result.messageDetails.repositories.configureStatus.message 현재 웹후크 구성 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.repositories.configureStatus.status 웹후크 구성의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.repositories.message 현재 리포지토리 연결 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.repositories.name 리포지토리 이름입니다.

    데이터 유형: 문자열

    result.messageDetails.repositories.status 리포지토리 연결의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.status 온보딩 요청의 상태입니다.
    가능한 값:
    • 실패함
    • 부분 성공
    • 성공

    데이터 유형: 문자열

    result.messageDetails.toolResponse 연결된 ServiceNow 인스턴스 내에서 온보딩할 도구 목록입니다.

    데이터 유형: 객체 배열

    "toolResponse": [{
      "configureStatus": {Object},
      "connectStatus": {Object},
      "createStatus": {Object},
      "discoveryStatus": {Object},
      "name": "String",
      "status": "String",
      "type": "String"
    }]
    result.messageDetails.toolResponse.configureStatus 도구의 구성 상태입니다. 성공인 경우 및 statusmessage를 반환합니다. 오류가 발생하면 및 .statuserror

    데이터 유형: 객체

    "configureStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.configureStatus.error 도구 구성 중에 오류가 감지되었습니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.configureStatus.message 도구 구성의 성공 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.configureStatus.status 도구 구성의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.connectStatus 도구의 연결 상태입니다. 성공인 경우 및 statusmessage를 반환합니다. 오류가 발생하면 및 .statuserror

    데이터 유형: 객체

    "connectStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.connectStatus.error 도구 연결 중에 오류가 감지되었습니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.connectStatus.message 도구 연결의 성공 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.connectStatus.status 도구 연결 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.createStatus 도구의 생성 상태입니다. 성공인 경우 및 statusmessage를 반환합니다. 오류가 발생하면 및 .statuserror

    데이터 유형: 객체

    "createStatus": {
      "error": "String",
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.createStatus.error 도구를 생성하는 동안 오류가 감지되었습니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.createStatus.message 도구 생성의 성공 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.createStatus.status 도구 생성의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.discoveryStatus 도구의 검색 상태입니다. 성공인 경우 및 statusmessage를 반환합니다. 오류가 발생하면 및 .statuserror

    데이터 유형: 객체

    "discoveryStatus": {
      "error": "String",
      "imports: [Array],
      "message": "String",
      "status": "String"
    }
    result.messageDetails.toolResponse.discoveryStatus.error 도구 검색 중 오류가 탐지되었습니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.discoveryStatus.imports 검색된 엔터티 목록입니다.

    데이터 유형: 객체 배열

    "imports": [{
      "details": "String",
      "id": "String",
      "status": "String"
    }]
    result.messageDetails.toolResponse.discoveryStatus.imports.details 수행된 임포트를 설명하는 상세 정보입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.discoveryStatus.imports.id 임포트 요청의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: sn_devops_m2m_inbound_event_import_request

    result.messageDetails.toolResponse.discoveryStatus.imports.status 임포트의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.discoveryStatus.message 도구 검색의 상태를 설명하는 메시지입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.discoveryStatus.status 도구 디스커버리의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.name 온보딩 중인 도구의 이름입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.status 도구 온보딩의 상태입니다.

    데이터 유형: 문자열

    result.messageDetails.toolResponse.type 도구 유형(예: Jira 또는 Jenkins)입니다.

    데이터 유형: 문자열

    result.onboardingRequestID 온보딩 요청의 고유 식별자입니다. /devops/onboarding/status 엔드포인트를 호출할 때 이 값을 사용하여 연결된 도구 온보딩 프로세스의 상태를 가져옵니다.

    데이터 유형: 문자열

    결과.상태 온보딩 요청의 상태입니다.
    가능한 값:
    • 실패함
    • 부분 성공
    • 성공

    데이터 유형: 문자열

    cURL 요청

    다음 예는 도구 온보딩의 상태 요청을 보여줍니다.

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

    cURL 요청

    다음 예는 애플리케이션 온보딩의 상태 요청을 보여줍니다.

    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/오케스트레이션/changeControl

    오케스트레이션 작업에 변경 통제 하에 있는지 확인합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/changeControl

    기본 URL: /api/sn_devops/devops/orchestration/changeControl

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 13. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 14. 쿼리 매개변수
    이름 설명
    orchestrationTaskName 확인할 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    테스트 연결 인스턴스와 도구 간의 엔드 투 엔드 연결을 테스트할지 여부를 나타내는 플래그입니다.DevOps
    유효한 값은 다음과 같습니다.
    • true: 엔드 투 엔드 연결을 테스트합니다.
    • false: 엔드 투 엔드 연결을 테스트하지 않습니다.

    데이터 유형: 부울

    기본값: false

    toolId 필수 오케스트레이션 도구의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    toolType 도구의 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

    표 15. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 16. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    표 17. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 18. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수(JSON 또는 XML)

    이름 설명
    변경 통제 오케스트레이션 작업에 변경 통제가 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 변경 통제 하에 있습니다.
    • false: 변경 제어 하에 없습니다.

    데이터 유형: 부울

    변경 제어 하에 있으며 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"

    응답 본문.

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

    변경 제어 하에 있지 않고 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"

    응답 본문.

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

    DevOps - GET /devops/orchestration/changeInfo

    지정된 오케스트레이션 파이프라인 실행에 대한 변경 요청 상세 정보를 검색합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/changeInfo

    기본 URL: /api/sn_devops/devops/orchestration/changeInfo

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 19. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 20. 쿼리 매개변수
    이름 설명
    분기 이름 오케스트레이션 작업과 연결된 분기의 이름입니다.
    주:
    다중 분기 파이프라인을 참조할 때 이 매개변수를 제공해야 합니다. 그렇지 않으면 응답에 잘못된 변경 세부 정보가 포함될 수 있습니다.

    데이터 유형: 문자열

    buildNumber 필수 오케스트레이션 도구 내의 파이프라인 빌드 번호입니다.

    데이터 유형: 문자열

    pipelineName Jenkins Freestyle 또는 Maven 프로젝트의 경우 선택 사항이며 다른 모든 프로젝트에는 필수입니다. 오케스트레이션 파이프라인 이름입니다.

    데이터 유형: 문자열

    projectName Jenkins Freestyle 또는 Maven 프로젝트에 필요하며 다른 모든 프로젝트에 대한 선택 사항입니다. 오케스트레이션 도구 프로젝트 이름입니다.

    데이터 유형: 문자열

    stageName Jenkins Freestyle 또는 Maven 프로젝트의 경우 선택 사항이며 다른 모든 프로젝트에는 필수입니다. 오케스트레이션 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    toolId 필수 오케스트레이션 도구의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    표 21. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 22. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    표 23. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 24. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    404 찾을 수 없습니다. 요청한 항목을 찾을 수 없습니다.

    응답 본문 매개변수(JSON 또는 XML)

    이름 설명
    changeFound 변경 요청이 위치했는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 변경 요청을 찾았습니다.
    • false: 변경 요청을 찾을 수 없습니다.

    데이터 유형: 부울

    번호 변경 요청 번호입니다.

    데이터 유형: 문자열

    단계 현재 단계입니다.

    데이터 유형: 문자열

    phase_state 현재 단계의 상태입니다.

    데이터 유형: 문자열

    우선순위 변경 요청의 우선순위입니다. 우선순위는 요청의 영향과 긴급도를 기반으로 합니다. 서비스 데스크에서 요청을 얼마나 빨리 처리해야 하는지를 식별합니다.
    가능한 값:
    • 1: 중요
    • 2: 높음
    • 3: 보통
    • 4: 낮음

    데이터 유형: 문자열

    risk 변경에 대한 위험 수준입니다.
    가능한 값:
    • 낮음
    • 높음
    • 보통

    데이터 유형: 문자열

    상태 변경 요청의 상태입니다.
    가능한 값:
    • 평가
    • 인증
    • 취소됨
    • 종결
    • 구현
    • 신규
    • 검토
    • 예약됨

    데이터 유형: 문자열

    기본값: 신규

    sys_id 변경 요청의 Sys_id입니다.

    데이터 유형: 문자열

    유형 변경 요청의 유형입니다.
    가능한 값:
    • 응급
    • 표준
    • 표준

    데이터 유형: 문자열

    URL 연결된 ServiceNow 인스턴스 내 변경 요청의 URL입니다.

    데이터 유형: 문자열

    changeAssignmentGroup 변경 요청의 할당 그룹입니다.

    데이터 유형: 문자열

    changeApprovers 변경 승인을 보류 중인 승인자 목록입니다.

    데이터 유형: 문자열

    계획된 시작 날짜 변경의 계획된 시작 날짜 및 시간입니다.

    데이터 유형: 문자열

    계획된 종료 날짜 변경의 계획된 종료 날짜 및 시간입니다.

    데이터 유형: 문자열

    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/오케스트레이션/스키마

    지정된 오케스트레이션 자원에 대한 스키마 객체를 반환합니다.

    필요한 스키마 개체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. /orchestration/orchestrationTask 또는 /orchestration/taskExecution.

    주:
    이 엔드포인트는 필요한 요청 본문 요소만 반환합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/schema

    기본 URL: /api/sn_devops/devops/orchestration/schema

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 25. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 26. 쿼리 매개변수
    이름 설명
    자원 반환할 자원 스키마의 유형입니다.
    유효한 값(대/소문자 구분 안 함):
    • build_details
    • 콜백
    • orchestration_task
    • task_execution

    데이터 유형: 문자열

    표 27. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 28. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 29. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 30. 상태 코드
    상태 코드 설명
    200 요청이 성공적으로 완료되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    콜백 URL 콜백의 URL입니다.

    데이터 유형: 문자열

    endDateTime 작업 실행이 종료된 날짜/시간입니다.

    데이터 유형: 문자열

    이름 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    번호 작업 실행 번호입니다. 인시던트 번호와 동일합니다.

    데이터 유형: 문자열

    orchestrationTaskDetails 오케스트레이션 작업에 대한 설명입니다.

    데이터 유형: 객체

    "orchestrationTaskDetails": {
      "message": "String",
      "name": "String",
      "triggerType": "String",
      "url": "String"
    }
    orchestrationTaskDetails.message 자유 형식의 텍스트 메시지입니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.name 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.triggerType 오케스트레이션 작업이 시작된 방식입니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.url 연결된 오케스트레이션 도구의 오케스트레이션 작업 URL입니다.

    데이터 유형: 문자열

    orchestrationTaskURL 오케스트레이션 작업의 URL입니다.

    데이터 유형: 문자열

    결과 작업 실행의 실행 결과입니다.
    유효한 값은 다음과 같습니다.
    • 실패함
    • 성공

    데이터 유형: 문자열

    startDateTime 작업 실행이 시작된 날짜/시간입니다.

    데이터 유형: 문자열

    taskExecutionURL 실행할 작업의 URL입니다.

    데이터 유형: 문자열

    triggerType 오케스트레이션 작업이 시작된 방식입니다.

    유효한 값은 다음과 같습니다.

    • scm: Git/scm 도구 코드 커밋이 작업을 트리거했습니다.
    • 업스트림: 업스트림 작업이 이 작업을 트리거했습니다.
    • 사용자: 사용자가 수동으로 작업을 시작했습니다.

    데이터 유형: 문자열

    URL 연결된 오케스트레이션 도구의 오케스트레이션 작업 URL입니다.

    데이터 유형: 문자열

    resource=task_execution인 샘플 cURL 요청

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

    resource=orchestration_task이 있는 샘플 cURL 요청

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

    resource=callback이 있는 샘플 cURL 요청

    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

    전달되는 정보가 오케스트레이션 작업 생성에 유효하며 이전에 생성된 단계에 연결하는 데 유효한지 확인합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/stepMapping

    기본 URL: /api/sn_devops/devops/orchestration/stepMapping

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 31. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 32. 쿼리 매개변수
    이름 설명
    분기 이름 오케스트레이션 작업과 연결된 분기의 이름입니다.

    데이터 유형: 문자열

    isMultiBranch 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 프로젝트가 다중 분기 유형입니다.
    • false: 프로젝트가 다중 분기 유형이 아닙니다.

    데이터 유형: 부울

    기본값: false

    parentStageName 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    parentStageURL 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 URL입니다.

    데이터 유형: 문자열

    orchestrationTaskName 필수 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    orchestrationTaskURL 필수 오케스트레이션 작업의 URL입니다.
    주:
    https%3A%2F%2Fjenkins.mycompany.com%3A8080%2Fjob%2FMobile-Platform-deploy%2F와 같이 백분율(%)로 인코딩되어야 합니다.
    데이터 유형: 문자열
    테스트 연결 인스턴스와 도구 간의 엔드 투 엔드 연결을 테스트할지 여부를 나타내는 플래그입니다.DevOps
    유효한 값은 다음과 같습니다.
    • true: 엔드 투 엔드 연결을 테스트합니다.
    • false: 엔드 투 엔드 연결을 테스트하지 않습니다.

    데이터 유형: 부울

    기본값: false

    toolId 필수 오케스트레이션 도구의 Sys_id입니다. 오케스트레이션 도구 [sn_devops_orchestration_tool] 테이블에 있습니다.

    데이터 유형: 문자열

    toolType 필수 도구의 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

    표 33. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 34. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 35. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 36. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    401 권한이 해제되었습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    요소 설명
    상태 검증이 성공적으로 완료되었는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 검증에 성공했습니다.
    • false: 검증에 실패했습니다.

    데이터 유형: 부울

    stepValid 전송한 정보가 유효한지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 보낸 정보가 유효합니다.
    • false: 보낸 정보가 잘못되었습니다.

    데이터 유형: 부울

    샘플 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"
    

    정보가 유효한 경우의 결과입니다.

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

    샘플 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"
    

    정보가 잘못된 경우 결과를 가져옵니다.

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

    DevOps - GET /devops/계획/스키마

    특정 계획(앱, 버전 또는 작업 항목)에 대한 스키마 객체를 반환합니다.

    필요한 스키마 개체가 있으면 이를 사용하여 해당 POST 호출에 대한 요청 본문을 만듭니다. POST /plan/app, POST /plan/version 또는 POST /plan/workitem.

    주:
    이 엔드포인트는 필요한 요청 본문 요소만 반환합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/plan/schema

    기본 URL: /api/sn_devops/devops/plan/schema

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 37. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 38. 쿼리 매개변수
    이름 설명
    자원 반환할 자원 스키마의 유형입니다.

    유효한 값(대/소문자 구분 안 함):

    • 버전
    • work_item

    데이터 유형: 문자열

    표 39. 요청 본문 매개변수
    이름 설명
    안 함

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 40. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 41. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 42. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    404 찾을 수 없습니다. 지정된 기록을 찾을 수 없습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    버전과 연결할 애플리케이션에 대한 설명입니다.

    데이터 유형: 객체

    "app": {
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "team": {Object},
      "url": "String"
    }
    app.createdDateTime 소스 DevOps 도구에서 애플리케이션이 생성된 날짜/시간입니다.

    데이터 유형: 문자열

    app.id 애플리케이션의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    app.shortDescription 연결된 애플리케이션에 대한 간략한 설명입니다.

    데이터 유형: 문자열

    앱.팀 애플리케이션과 연결된 팀에 대한 설명입니다.

    데이터 유형: 객체

    "team": {
      "id": "String",
      "name": "String"
    }
    app.team.id 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    app.team.name 애플리케이션과 연결된 팀의 이름입니다.

    데이터 유형: 문자열

    app.url 소스 계획 수립 도구 사이트에 있는 애플리케이션의 URL입니다.

    데이터 유형: 문자열

    assignedTo 작업 항목이 할당된 사용자에 대한 설명입니다.

    데이터 유형: 객체

    "assignedTo": {
      "email": "String",
      "id": "String",
      "name": "String",
      "userName": "String"
    }
    assignedTo.email 작업 항목에 할당된 사람의 이메일 주소입니다.

    데이터 유형: 문자열

    assignedTo.id 작업 항목에 할당된 사람의 고유 식별자입니다.

    데이터 유형: 문자열

    assignedTo.name 작업 항목에 할당된 사람의 이름입니다.

    데이터 유형: 문자열

    assignedTo.userName 작업 항목에 할당된 사람의 사용자 이름입니다.

    데이터 유형: 문자열

    createDateTime 애플리케이션, 버전 또는 작업 항목 기록이 생성된 날짜 및 시간입니다.

    데이터 유형: 문자열

    ID 애플리케이션, 버전 또는 작업 항목의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    이름 애플리케이션의 이름입니다.

    데이터 유형: 문자열

    경로 애플리케이션의 상대 경로입니다.

    데이터 유형: 문자열

    shortDescription 애플리케이션, 버전 또는 작업 항목에 대한 간략한 설명입니다.

    데이터 유형: 문자열

    상태 작업 항목의 상태입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    애플리케이션과 연결된 팀에 대한 설명입니다.

    데이터 유형: 객체

    "team": {
      "id": "String",
      "name": "String"
    }
    team.id 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    team.name 애플리케이션과 연결된 팀의 이름입니다.

    데이터 유형: 문자열

    유형 작업 항목의 유형입니다. 계획 수립 도구에서 생성됩니다.

    데이터 유형: 문자열

    URL 애플리케이션, 버전 또는 작업 항목에 액세스하는 데 사용할 URL입니다.

    데이터 유형: 문자열

    버전 버전을 설명하는 배열입니다.

    데이터 유형: 객체

    "version": {
      "app": {Object},
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "url": "String"
    }
    version.app 버전과 연결할 애플리케이션에 대한 설명입니다.

    데이터 유형: 객체

    "app": {
      "createdDateTime": "String",
      "id": "String",
      "shortDescription": "String",
      "team": {Object},
      "url": "String"
    }
    version.app.createdDateTime 소스 DevOps 도구에서 버전이 생성된 날짜/시간입니다.

    데이터 유형: 문자열

    version.app.id 애플리케이션의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    version.app.shortDescription 연결된 애플리케이션에 대한 간략한 설명입니다.

    데이터 유형: 문자열

    version.app.team 애플리케이션과 연결된 팀에 대한 설명입니다.

    데이터 유형: 객체

    "team": {
      "id": "String",
      "name": "String"
    }
    version.app.team.id 애플리케이션과 연결된 팀의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    version.app.team.name 애플리케이션과 연결된 팀의 이름입니다.

    데이터 유형: 문자열

    version.app.url 소스 계획 수립 도구 사이트에 있는 애플리케이션의 URL입니다.

    데이터 유형: 문자열

    version.createdDateTime 소스 DevOps 도구에서 버전이 생성된 날짜/시간입니다.

    데이터 유형: 문자열

    version.id 버전의 고유 식별자입니다. 소스 계획 수립 도구에 의해 생성됩니다.

    데이터 유형: 문자열

    version.shortDescription 연결된 버전에 대한 간략한 설명입니다.

    데이터 유형: 문자열

    version.url 소스 계획 수립 도구 사이트의 버전 URL입니다.

    데이터 유형: 문자열

    resource=app에 대한 샘플 cURL 요청

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

    resource=version에 대한 샘플 cURL 요청

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

    resource=work_item에 대한 샘플 cURL 요청

    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 - 게시 /devops/아티팩트/등록

    오케스트레이션 도구를 사용하여 인스턴스에 아티팩트를 등록할 수 있습니다 ServiceNow .

    이 엔드포인트는 새 아티팩트와 아티팩트 버전을 생성하고 커밋에 연결합니다. 다음은 엔드포인트 프로세스 흐름을 설명합니다.
    • 요청에 전달 toolId 되면 엔드포인트는 도구가 인스턴스 내에 있는지 확인합니다. 또한 에 artifacts.repositoryName 지정된 아티팩트 리포지토리가 있는지 확인하고 없는 경우 연결된 아티팩트 도구 아래에 만듭니다.
    • 요청에서 전달 toolId 되지 않으면 리포지토리가 작성되지만 아티팩트 도구에는 연결되지 않습니다.
    • 그런 다음 에 artifacts.name 지정된 아티팩트가 이미 있는지 확인하고, 없는 경우 연결된 리포지토리 아래에 생성합니다.
    • 요청에 전달 artifact.version 되는 경우:
      • 없는 경우 연결된 아티팩트 버전 [sn_devops_artifact_version] 테이블에 새 아티팩트 버전 기록이 만들어집니다.
      • 그런 다음 엔드포인트는 제공된 빌드 상세 정보(pipelineName또는 projectName, , taskExecutionNumberbranchName, 및 stageName)와 매개변수를 orchestrationToolId 기반으로 관련 작업 실행을 찾습니다.
      • 작업 실행이 발견되고 해당 후처리가 완료되면 아티팩트 버전이 작업 실행에 연결되고 아티팩트-TaskExecution[sn_devops_m2m_artifact_execution] 테이블에 저장됩니다. 이러한 작업 실행에 연결된 커밋도 아티팩트 버전에 연결되고 커밋할 아티팩트 버전 [sn_devops_m2m_artifact_version_commit] 테이블에 저장됩니다. 아티팩트를 생성하지 않은 이전 작업 실행에 연결된 모든 커밋도 아티팩트 버전과 연결됩니다.
      • 작업 실행이 발견되고 후처리가 완료되지 않은 경우 요청은 아티팩트 준비 요청[sn_devops_artifact_staging] 테이블에 유지됩니다. 준비된 요청에는 작업 실행에 대한 참조가 포함됩니다.
      • 작업 실행을 찾을 수 없는 경우 요청은 준비 테이블에 유지됩니다. 준비된 요청에는 빌드 상세 정보가 포함되어 있습니다.
    • artifact.version 전달되지 않은 경우 도구 구성에 따라 아티팩트 도구가 웹후크를 지원하는 경우 /devops/tool/artifact 엔드포인트를 호출하거나 아티팩트 도구에서 아티팩트 버전을 검색하는 사용자 지정 하위 플로우를 통해 아티팩트 버전을 검색합니다.

    아티팩트에 대한 자세한 내용은 릴리스에 DevOps 변경 가속화 사용을 참조하십시오.

    URL 형식

    버전 관리 URL: /api/sn_devops/{api_version}/devops/artifact/registration

    기본 URL: /api/sn_devops/devops/artifact/registration

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 43. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 44. 쿼리 매개변수
    이름 설명
    orchestrationToolId 필수 아티팩트와 연결된 오케스트레이션 도구의 Sys_id입니다. 엔드포인트는 이 정보를 사용하여 작업 실행 정보를 찾습니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    toolId 아티팩트와 연결된 아티팩트 도구의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 아티팩트 도구 [sn_devops_artifact_tool]

    표 45. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    아티팩트 하나 이상의 항목이 필요합니다. 각 객체가 등록할 아티팩트 버전을 고유하게 식별하는 객체의 배열입니다.

    데이터 유형: 객체 배열

    "artifacts": [
      {
        "name": "String",
        "repositoryName": "String",
        "semanticVersion": "String",
        "version": "String"
      }
    ]
    artifacts.name 필수 아티팩트 파일 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    artifacts.repositoryName 필수 아티팩트 리포지토리 이름입니다.

    지정된 리포지토리 기록이 없으면 만들어집니다.

    데이터 유형: 문자열

    최대 길이: 160자

    artifacts.semanticVersion 아티팩트의 시맨틱 버전입니다.

    데이터 유형: 문자열

    형식: 전공. 경미한. 패치

    가능한 값의 예:
    • 2.0.0
    • 2.0.0-rc.2
    • 2.0.0-rc.1
    • 1.0.0-베타

    최대 길이: 160자

    기본값: null

    아티팩트.버전 전달되지 않은 경우 toolId 필수입니다. 아티팩트 버전입니다.

    데이터 유형: 문자열

    형식: 전공. 경미함

    최대 길이: 160자

    기본값: null

    분기 이름 다중 분기 프로젝트인 경우 필요합니다. 아티팩트가 저장되는 리포지토리의 분기 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    pipelineName 전달되지 않은 경우 projectName 필수입니다. 파이프라인 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    projectName 전달되지 않은 경우 pipelineName 필수입니다. 자유 형식 프로젝트 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    stageName 전달되면 pipelineName 필수입니다. 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 46. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 47. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 48. 상태 코드
    상태 코드 설명
    200 성공. 응답 본문이 있는 성공입니다.
    201 만든. 응답 본문이 있는 성공입니다.
    400 잘못된 요청입니다. 요청 URI가 시스템의 API와 일치하지 않거나 알 수 없는 이유로 작업이 실패했습니다. 잘못된 헤더로 인해 이 오류가 발생할 수도 있습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    응답 아티팩트 등록 요청의 결과입니다.

    데이터 유형: 객체

    "response": {
      "artifact": {Object},
      "artifact_register_requests": {Object},
      "artifact_repository": {Object},
      "artifact_version": {Object}
    }
    response.artifact 처리된 각 아티팩트에 대한 결과입니다.

    데이터 유형: 객체

    "artifact": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact.create 요청으로 아티팩트 기록이 생성된 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

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

    테이블: 아티팩트 [sn_devops_artifact]

    response.artifact.create.id 요청에 의해 생성된 아티팩트 기록의 Sys_id입니다.

    데이터 유형: 문자열

    응답.아티팩트.찾음 아티팩트가 아티팩트 테이블에 이미 있는 경우 기존 아티팩트 기록의 sys_ids 목록입니다.
    주:
    기존 패키지는 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact.found.id 기존 아티팩트 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact.update 현재 사용되지 않음
    response.artifact.update.id 현재 사용되지 않음
    response.artifact_register_requests 처리가 완료되지 않고 아티팩트 준비 요청 테이블에 저장된 아티팩트 레지스터 요청에 대한 결과입니다.

    데이터 유형: 객체

    "artifact_register_requests": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_register_requests.create 요청으로 아티팩트 스테이징 기록이 생성된 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.create.id 요청에 의해 생성된 아티팩트 스테이징 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_register_requests.found 아티팩트에 이미 연결된 아티팩트 스테이징 기록이 있는 경우 기존 아티팩트 스테이징 기록의 sys_ids 목록입니다.
    주:
    기존 패키지는 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.found.id 기존 아티팩트 스테이징 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_register_requests.update 현재 사용되지 않음
    response.artifact_register_requests.update.id 현재 사용되지 않음
    response.artifact_repository 요청을 처리하는 동안 조작된 아티팩트 리포지토리 기록에 대한 결과입니다.

    데이터 유형: 객체

    "artifact_repository": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_repository.create 아티팩트 리포지토리가 요청에 의해 생성된 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.create.id 요청에 의해 생성된 아티팩트 리포지토리 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_repository.found 등록 요청에 사용된 아티팩트 리포지토리 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다.
    주:
    기존 패키지는 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.found.id 요청에 사용되는 기존 아티팩트 리포지토리 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_repository.update 엔드포인트가 리포지토리의 추적 플래그를 아니오에서 예로 업데이트하면 수정된 리포지토리 기록 sys_ids 목록이 표시됩니다.

    데이터 유형: 객체 배열

    "update": [
      {
        "id": "String"
      }
    ]
    response.artifact_repository.update.id 추적 플래그가 수정된 리포지토리 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_version 요청 처리 중에 조작된 아티팩트 버전 기록에 대한 결과입니다.

    데이터 유형: 객체

    "artifact_version": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_version.create 요청을 처리하는 동안 생성된 아티팩트 버전 기록에 대한 결과입니다.

    데이터 유형: 객체 배열

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_version.create.id 요청에 의해 생성된 아티팩트 버전 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_version.찾음 등록 요청에 사용된 아티팩트 버전 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_version.found.id 요청에 사용되는 기존 아티팩트 버전 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_version.update 현재 사용되지 않음
    response.artifact_version.update.id 현재 사용되지 않음
    상태 등록 요청의 상태입니다.
    가능한 값:
    • 성공: 응답 본문에 반환 결과가 포함되어 있습니다.
    • 오류: 응답 본문에 모든 오류 목록이 포함되어 있습니다.

    데이터 유형: 문자열

    샘플 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/온보딩/앱

    서비스에서 DevOps 비동기적으로 처리되는 온보딩 앱 이벤트를 생성합니다.

    이 엔드포인트는 다음 작업을 수행할 수 있습니다.
    • 애플리케이션을 생성합니다.
    • 계획, 리포지토리, 파이프라인과 같은 객체를 애플리케이션에 연결합니다 DevOps .
    • 변경 단계 기록을 생성하고 변경 승인 프로세스를 파이프라인에 연결합니다.

    이러한 모든 작업은 도구 및 역량에 따라 다릅니다. 다음 표에서는 지원되는 각 도구에 사용할 수 있는 작업을 간략하게 설명합니다.

    애플리케이션 온보딩 매트릭스

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/onboarding/app

    기본 URL: /api/sn_devops/devops/onboarding/app

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 49. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 50. 쿼리 매개변수
    이름 설명
    없음
    표 51. 요청 본문 매개변수
    이름 설명
    연결된 ServiceNow 인스턴스 내에서 생성할 앱을 정의하는 객체의 배열입니다.

    데이터 유형: 배열

    "apps": [{
      "bussinessApp": "String",
      "name": "String"
    }]
    apps.bussinessApp 애플리케이션을 매핑하는 cmdb_ci_business_app의 이름입니다. 이렇게 하면 애플리케이션이 DevOps 지정된 CMDB 애플리케이션에 연결됩니다.

    데이터 유형: 문자열

    apps.name 필수 만들기 위해 만드는 응용 프로그램의 사용자 식별 이름입니다. 앱은 DevOps 계획, 리포지토리 및 파이프라인을 함께 연결하는 제품 컨테이너 개체입니다.

    데이터 유형: 문자열

    자격 증명 필수 웹후크 생성에 사용할 자격 증명입니다. 생성된 웹후크는 도구에서 알림을 보내는 데 사용됩니다.

    데이터 유형: 객체

    "credentials": {
      "name": "String",
      "password": "String"
    }
    credentials.name 필수입니다. ServiceNow 엔드포인트를 요청하는 사용자의 사용자 ID입니다. 이 사용자에게는 devops.integration.user 역할이 있어야 합니다. 버전 1.34.1부터 이 사용자에게 sn_devops.admin 역할이 있어야 합니다.

    데이터 유형: 문자열

    테이블: 사용자 [sys_user]

    자격 증명.암호 필수 매개변수에 지정된 사용자의 암호입니다 credenitals.name .

    데이터 유형: 문자열

    파이프라인 애플리케이션과 연결할 파이프라인 목록입니다.

    데이터 유형: 객체 배열

    "pipelines": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    pipelines.app 객체가 pipelines 지정된 경우 필요합니다. 매개변수에 지정된 계획과 연결할 애플리케이션의 이름입니다 pipelines.name . 애플리케이션이 이미 작성되었거나 이 요청의 객체에 apps 지정되어 있어야 합니다.

    데이터 유형: 문자열

    pipelines.changeSteps 필드에 pipelines.name 지정된 파이프라인에 대해 생성할 단계를 변경합니다.

    데이터 유형: 객체 배열

    "changeSteps": [{
      "changeApprovalGroup": "String",
      "changeControlledBranches": "String",
      "changeType": "String",
      "name": "String",
      "type": "String"
    }]
    pipelines.changeSteps.changeApprovalGroup 객체가 changeSteps 지정된 경우 필요합니다. 파이프라인과 연결할 변경 승인 그룹의 이름입니다. 이 그룹은 인스턴스에 ServiceNow 이미 존재해야 합니다.

    데이터 유형: 문자열

    테이블: 그룹 [sys_user_group]

    pipelines.changeSteps.changeControlledBranches 변경 제어 중인 코드 분기를 쉼표로 구분한 목록입니다. 이는 다중 분기 지원에만 적용됩니다.

    데이터 유형: 문자열

    기본값: *(모든 분기)

    pipelines.changeSteps.changeType 객체가 changeSteps 지정된 경우 필요합니다. 생성할 변경 요청의 유형입니다.

    데이터 유형: 문자열

    테이블: 변경 요청 [change_request] 테이블의 유형 필드에 있습니다.

    pipelines.changeSteps.name 객체가 changeSteps 지정된 경우 필요합니다. 작성할 단계의 이름입니다. 단계 이름은 오케스트레이션 도구의 파이프라인에 있는 해당 단계의 이름과 일치해야 합니다.

    데이터 유형: 문자열

    pipelines.changeSteps.type 객체가 changeSteps 지정된 경우 필요합니다. 작성할 단계의 유형입니다.

    데이터 유형: 문자열

    테이블: 단계 [sn_devops_step] 테이블의 유형 필드에 있습니다.

    pipelines.name 객체가 pipelines 지정된 경우 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 파이프라인의 이름입니다 pipelines.app . 이 파이프라인은 인스턴스에서 ServiceNow 이미 검색되어 있어야 합니다.

    데이터 유형: 문자열

    파이프라인.프로젝트 pipelines 객체가 지정되고 pipelines.tool이 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우 필수입니다. 고유한 파이프라인/도구 식별자를 생성하기 위해 파이프라인과 연결할 프로젝트입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.

    데이터 유형: 문자열

    파이프라인.도구 객체가 pipelines 지정된 경우 필요합니다. 고유한 파이프라인/도구 식별자를 생성하기 위해 파이프라인과 연결하는 도구입니다.

    데이터 유형: 문자열

    계획 애플리케이션과 연결할 계획의 목록입니다.

    데이터 유형: 객체 배열

    "plans": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    plans.apps 객체가 plans 지정된 경우 필요합니다. 매개변수에 지정된 계획과 연결할 애플리케이션의 이름입니다 plans.name . 이러한 애플리케이션은 이미 생성되었거나 이 요청의 객체에 apps 지정되어 있어야 합니다.

    데이터 유형: 문자열 배열

    plans.name 객체가 plans 지정된 경우 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 계획의 이름입니다.plans.app 이 계획은 인스턴스에서 ServiceNow 이미 검색되어 있어야 합니다.

    데이터 유형: 문자열

    계획.프로젝트 계획 객체가 지정되고 plans.tool이 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우 필수입니다. 고유한 계획/도구 식별자를 생성하기 위해 파이프라인과 연결하는 도구입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.

    데이터 유형: 문자열

    plans.tool 객체가 plans 지정된 경우 필요합니다. 고유 계획/도구 식별자를 생성하기 위해 계획과 연결할 도구입니다.

    데이터 유형: 문자열

    리포지토리 애플리케이션과 연결된 리포지토리 목록입니다. 리포지토리 객체에 app 매개변수가 포함되어 있으면 리포지토리를 애플리케이션에 매핑합니다.

    데이터 유형: 객체 배열

    "repositories": [{
      "app": "String",
      "name": "String",
      "tool": "String"
    }]
    repositories.app 객체가 repositories 지정된 경우 필요합니다. 이 리포지토리와 연결할 애플리케이션의 이름입니다. 애플리케이션이 이미 작성되었거나 이 요청의 객체에 apps 지정되어 있어야 합니다.

    데이터 유형: 문자열

    repositories.name 객체가 repositories 지정된 경우 필요합니다. 매개변수에 지정된 애플리케이션과 연결할 리포지토리 이름입니다.repositories.app 이 리포지토리는 인스턴스에서 이미 검색된 상태여야 ServiceNow 합니다.

    데이터 유형: 문자열

    리포지토리.프로젝트 리포지토리 개체가 지정 repositories.tool 되고 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우 필요합니다. 고유 리포지토리/도구 식별자를 생성하기 위해 리포지토리와 연결하는 도구입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.

    데이터 유형: 문자열

    리포지토리.도구 객체가 repositories 지정된 경우 필요합니다. 고유한 리포지토리/도구 식별자를 생성하기 위해 리포지토리와 연결할 사용자 친화적인 도구 이름입니다. 도구는 인스턴스에 ServiceNow 이미 생성되어 있어야 합니다.

    데이터 유형: 문자열

    artifactRepositories.app artifactRepositories 객체가 지정된 경우 필요합니다. 이 ArtifactRepositories와 연결할 애플리케이션의 이름입니다. 애플리케이션이 이미 작성되어 있거나 이 요청의 객체에 지정되어 있어야 합니다.

    데이터 유형: 문자열

    artifactRepositories.name artifactRepositories 객체가 지정된 경우 필요합니다. 매개변수에 지정된 artifactRepositories애플리케이션과 연결할 artifactRepositories.app 이름입니다. 이 artifactRepositories는 ServiceNow 인스턴스에서 이미 검색되어 있어야 합니다.

    데이터 유형: 문자열

    artifactRepositories.tool artifactRepositories 객체가 지정된 경우 필요합니다. 고유한 ArtifactRepositories /도구 식별자를 생성하기 위해 artifactRepositories와 연결할 사용자 친화적인 도구 이름입니다. ServiceNow 인스턴스에 도구가 이미 생성되어 있어야 합니다.

    데이터 유형: 문자열

    artifactRepositories.project artifactRepositories 개체가 지정되고 repositories.tool 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우 필요합니다. 고유 파이프라인/도구 식별자를 생성하기 위해 연결할 artifactRepositories 도구입니다.

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 52. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 53. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 54. 상태 코드
    상태 코드 설명
    202 온보딩 요청이 성공적으로 생성되었습니다.

    응답 본문 매개변수

    이름 설명
    결과 온보딩 요청의 결과입니다.
    데이터 유형: 객체
    "result": {
      "code": "String",
      "details": "String",
      "errors": {Object],
      "onboardingRequestID": "String",
      "status": "String"
    }
    결과.코드 HTTP 상태 코드입니다.

    데이터 유형: 문자열

    결과.상세 정보 온보딩 요청에 대한 상세 정보입니다.

    데이터 유형: 문자열

    결과.오류 발생한 오류에 대한 설명입니다.

    데이터 유형: 객체

    결과.오류.메시지 오류 메시지.

    데이터 유형: 문자열

    result.onboardingRequestID 온보딩 요청의 고유 식별자입니다. 연결된 온보딩 프로세스의 상태를 가져오려면 /devops/onboarding/status 엔드포인트를 호출할 때 이 값을 사용합니다.

    데이터 유형: 문자열

    결과.상태 온보딩 요청의 상태입니다(성공 또는 실패).

    데이터 유형: 문자열

    cURL 요청

    이 예제에서는 Bike Rental Service 애플리케이션을 만들고 Jenkins 파이프라인 Bike Rentals, GitHub 리포지토리 nowDevops01/CorpSite 및 Azure 플랜 testPlan_Bike_Rental에 연결합니다.

    curl -X POST "https://servicenow-instance/api/sn_devops/v1/devops/onboarding/app" \ 
    -H "Accept: application/json" \ 
    -H "Content-Type: application/json" \ 
    -u "username":"password" \ 
    -d "{ 
      "apps": [ 
        { 
          "name": "Bike Rental Service" 
        } 
      ] 
      "pipelines": [ 
        { 
          "tool": "Primary Jenkins", 
          "name": "Bike Rentals", 
          "app": "Bike Rental Service", 
          "changeSteps": [ 
            { 
              "name": "Prod", 
              "type": "deploy", 
              "changeApprovalGroup": "Change Management", 
              "changeType": "normal" 
            } 
          ] 
        } 
      ], 
      "repositories": [ 
        { 
          "tool": "Primary GitHub", 
          "name": "nowDevops01/CorpSite", 
          "app": "Bike Rental Service" 
        } 
      ] 
      "plans": [ 
        { 
          "tool": "Primary Azure", 
          "name": "testPlan_Bike_Rental", 
    "project": "DemoProjecttt", 
          "apps": [ 
            "Bike Rental Service" 
          ] 
        } 
      ] 
    "artifactRepositories": [ 
    { 
    "tool": "AdoTool", 
    "name": "empb5-sonar", 
    "apps": [ 
    "appXXXXtz" 
    ] 
    } 
    ] 
     
      "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": "IBE0001045", 
        "code": "202" 
      } 
    } 

    DevOps - POST /devops/온보딩/도구

    서비스에서 DevOps 비동기적으로 처리되는 온보딩 도구 이벤트를 생성합니다.

    요청이 게시되는 도구의 유형에 따라 엔드포인트는 다음 작업을 수행합니다.
    • 연결된 ServiceNow 인스턴스 내에 도구를 생성합니다.
    • 도구에 연결
    • 도구 구성을 시도합니다(연결에 성공한 경우에만).
    • 도구 검색(연결 성공 시에만)
    이러한 모든 작업은 도구에 따라 다르며 지정된 도구의 통합 기능을 기반으로 실행됩니다.

    도구 온보딩 매트릭스

    이 엔드포인트에 대한 반환 결과는 요청이 게시되었는지 여부만 나타내며 연결된 도구가 생성되었는지 여부는 나타내지 않습니다. 실제 도구 생성은 비동기식으로 처리됩니다. 도구 생성 및 기타 모든 작업의 상태를 가져오려면 /devops/onboarding/status 엔드포인트를 호출하고 이 엔드포인트에서 반환하는 매개변수를 전달 onboardingRequestID 해야 합니다.

    이 엔드포인트에 액세스하려면 관리자가 인스턴스에서 도구를 설정하도록 연결 및 자격 증명 별칭(CreateDevOpsTool)을 구성 DevOps 해야 합니다. 자세한 내용은 DevOps Change Velocity 설치를 참조하십시오. 또한 호출 엔터티에는 devops.integration.user 역할이 있어야 합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/onboarding/tool

    기본 URL: /api/sn_devops/devops/onboarding/tool

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 55. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 56. 쿼리 매개변수
    이름 설명
    없음
    표 57. 요청 본문 매개변수
    이름 설명
    자격 증명 필수 웹후크 생성에 사용할 자격 증명입니다. 이 도구는 생성된 웹후크를 사용하여 알림을 보냅니다.

    데이터 유형: 객체

    "credentials": {
      "name": "String",
      "password": "String"
    }
    credentials.name 필수입니다. ServiceNow 엔드포인트를 요청하는 사용자의 식별자입니다. 이 사용자에게는 devops.integration.user 역할이 있어야 합니다. 버전 1.34.1부터 이 사용자에게 sn_devops.admin 역할이 있어야 합니다.

    데이터 유형: 문자열

    테이블: 사용자 [sys_user]

    자격 증명.암호 필수 매개변수에 지정된 사용자의 암호입니다 credenitals.name .

    데이터 유형: 문자열

    도구 필수 연결된 ServiceNow 인스턴스 내에서 생성하는 도구입니다. 단일 요청에 하나 이상의 도구를 생성할 수 있습니다.

    데이터 유형: 객체 배열

    "tools": [{
      "name": "String",
      "password": "String",
      "type": "String",
      "useMidServer": Boolean,
      "username": "String",
      "url": "String"
    }]
    tools.name 필수 생성할 도구의 사용자 식별 이름 또는 레이블입니다. 이 이름은 서비스에서 도구를 식별하는 데 사용됩니다.DevOps

    데이터 유형: 문자열

    도구.암호 Agile 도구를 제외하고 필요합니다. 도구에 액세스하는 데 사용할 암호입니다. 지원되는 인증은 기본 및 토큰입니다. OAuth는 지원되지 않습니다.

    데이터 유형: 문자열

    도구.유형 필수 생성할 도구의 유형입니다(예: GitHub 또는 BitBucket). 지정된 값은 도구 통합 [sn_devops_tool_integration] 테이블의 도구 레이블 중 하나여야 합니다.

    데이터 유형: 문자열

    tools.useMidServer 도구가 .MID 서버

    유효한 값은 다음과 같습니다.

    • true: 를 통해 MID 서버연결됩니다.
    • false: 를 통해 연결하지 않습니다.MID 서버

    데이터 유형: 부울

    tools.username Agile 도구를 제외하고 필요합니다. 이 엔드포인트를 통해 도구에 액세스하는 데 사용할 사용자 이름입니다.

    데이터 유형: 문자열

    tools.url Agile 도구를 제외하고 필요합니다. 생성할 도구의 URL입니다. DevOps 서비스는 이 URL을 사용하여 도구와 통합합니다. 'Azure DevOps' 도구를 tools.url 사용하는 경우 ADO 조직 URL 또는 ADO 프로젝트 URL을 포함할 수 있습니다.

    ADO 조직 URL을 제공할 때 API는 지정된 조직 아래의 모든 프로젝트를 검색하고 프로젝트를 구성하지 않습니다. ADO 프로젝트 URL을 제공할 때 API는 파이프라인, 리포지토리 및 계획과 같은 프로젝트와 관련된 엔터티를 검색하고 개체가 credentials 있는 경우 프로젝트도 구성합니다. API에 프로젝트 구성을 건너뛰도록 명시적으로 지시하려면 플래그 configureTool (유형: 부울)를 false로 구성합니다. 페이로드에 명시적으로 제공되지 않았거나 true로 설정된 경우 configureTool 도구가 자동으로 구성됩니다.

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 58. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 59. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 60. 상태 코드
    상태 코드 설명
    202 온보딩 요청이 성공적으로 생성되었습니다.

    응답 본문 매개변수

    이름 설명
    결과 온보딩 요청의 결과입니다.
    데이터 유형: 객체
    "result": {
      "code": "String",
      "details": "String",
      "errors": {Object},
      "onboardingRequestID": "String",
      "status": "String"
    }
    결과.코드 HTTP 상태 코드입니다.

    데이터 유형: 문자열

    결과.상세 정보 온보딩 요청에 대한 자세한 메시지입니다.

    데이터 유형: 문자열

    결과.오류 발생한 오류에 대한 설명입니다.

    데이터 유형: 객체

    결과.오류.메시지 오류 메시지.

    데이터 유형: 문자열

    result.onboardingRequestID 온보딩 요청의 고유 식별자입니다. /devops/onboarding/status 엔드포인트를 호출할 때 이 값을 사용하여 연결된 도구 온보딩 프로세스의 상태를 가져옵니다.

    데이터 유형: 문자열

    결과.상태 온보딩 요청의 상태입니다(성공 또는 실패).

    데이터 유형: 문자열

    cURL 요청

    다음 예제에서는 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/오케스트레이션/changeControl

    변경 통제 하에 있는 오케스트레이션 작업에 대한 인스턴스에 콜 ServiceNow 백을 등록합니다. 변경 요청에 대한 결정이 이루어지면 호출할 수 있습니다.

    이 엔드포인트를 호출하기 전에 인스턴스에 ServiceNow 생성된 오케스트레이션 작업이 있어야 합니다. 검색을 통해 또는 엔드포인트를 DevOps - POST /devops/orchestration/stepMapping 호출하여 이 작업을 만들 수 있습니다. 또한 오케스트레이션 작업이 이전에 정의된 파이프라인 단계에 연결되어 있고 앱 스테이지 양식에서 변경 제어 옵션을 선택하여 변경 통제가 활성화되어 있는지 확인해야 합니다. 자세한 내용은 DevOps 변경 가속화를 참조하세요.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/changeControl

    기본 URL: /api/sn_devops/devops/orchestration/changeControl

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 61. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 62. 쿼리 매개변수
    이름 설명
    toolId 필수 지정된 작업을 변경 통제에 두는 도구의 DevOps Sys_id입니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    toolType 도구의 유형입니다.

    유효한 값: "jenkins"와 같이 도구를 식별하는 모든 값입니다.

    데이터 유형: 문자열

    표 63. 요청 본문 매개변수
    이름 설명
    콜백 URL 필수 연결된 변경 요청 승인 프로세스가 완료되면 인스턴스에서 ServiceNow 다시 호출할 수 있는 URL입니다. 이 콜백은 승인 결과에 따라 파이프라인 실행을 계속하거나 허용하지 않아야 합니다.

    데이터 유형: 문자열

    changeRequestDetails 변경 요청을 종결할 때 설정할 필드의 이름-값 쌍입니다. 이 객체에는 다음을 제외한 변경 요청 기록의 모든 필드가 포함될 수 있습니다.
    • 영향도
    • 번호
    • risk
    • risk_impact_analysis
    • sys_id

    이러한 필드가 요청에 포함된 경우 엔드포인트는 400 오류를 반환하고 변경 요청은 업데이트되지 않습니다. 또한 다른 필수 필드를 설정해야 하는 필드를 포함하고 해당 필드가 전송되지 않으면 파이프라인의 추후 처리 중에 요청이 실패합니다. 이 실패는 변경 요청의 작업 메모에 해당 특정 변경 요청에 대한 오류 메시지와 함께 표시됩니다( 예: <플랫폼에서 보낸 오류 메시지>. 변경 요청 및 관련 단계 실행을 취소하는 중입니다.

    또한 이 객체에 부울 매개변수 setCloseCode 를 전달하여 연결된 변경 요청 기록에 종결 정보를 설정할지 여부를 지정할 수 있습니다.
    • 예로 설정하면 close_code 필드는 작업 상태로 설정되고 close_notes 필드는 연관된 변경 요청 기록의 단계 실행에 대한 링크로 설정됩니다. 기본값은 true입니다.
    • false로 설정하면 close_code 및 close_notes 필드가 설정되지 않고 단계 실행에 대한 링크가 work_notes 필드에 설정됩니다.

    데이터 유형: 객체

    isMultiBranch 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 프로젝트가 다중 분기 유형입니다.
    • false: 프로젝트가 다중 분기 유형이 아닙니다.

    데이터 유형: 부울

    기본값: false

    orchestrationTaskDetails 필수 오케스트레이션 작업에 대한 설명입니다.

    데이터 유형: 객체

    "orchestrationTaskDetails": {
      "message": "String",
      "triggerType": "String",
      "upstreamTaskExecutionURL": "String"
    }
    orchestrationTaskDetails.message 자유 형식의 텍스트 메시지입니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.triggerType 필수 오케스트레이션 작업이 시작된 방식입니다.

    유효한 값은 다음과 같습니다.

    • scm: Git/scm 도구 코드 커밋이 작업을 트리거했습니다.
    • 업스트림: 업스트림 작업이 이 작업을 트리거했습니다.
    • 사용자: 사용자가 수동으로 작업을 시작했습니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.upstreamTaskExecutionURL 스트림으로 설정된 경우 triggerType 필요합니다. 업스트림 작업 실행 URL입니다.

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

    데이터 유형: 문자열

    orchestrationTaskURL 필수 콜백을 생성할 오케스트레이션 작업의 URL입니다.

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

    데이터 유형: 문자열

    parentNode 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 이 값에는 상위 노드 상세 정보가 포함됩니다.

    데이터 유형: 객체

    "parentNode": {
      "id": "String",
      "name": "String",
      "upstreamStageName": "String",
      "upstreamTaskExecutionURL": "String"
    }
    parentNode.id 상위 노드의 고유 ID입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 ID에 해당합니다.

    데이터 유형: 문자열
    parentNode.name 상위 노드의 이름입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 이름에 해당합니다.

    데이터 유형: 문자열
    parentNode.upstreamStageName 상위 노드의 업스트림 오케스트레이션 작업 이름입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 이름에 해당합니다.

    데이터 유형: 문자열
    parentNode.upstreamTaskExecutionURL 상위 노드의 업스트림 작업 실행에 대한 URL입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 실행 URL에 해당합니다.

    데이터 유형: 문자열
    parentStageName 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    parentStageURL 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 URL입니다.

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 64. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 65. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 66. 상태 코드
    상태 코드 설명
    201 요청이 성공적으로 완료되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    변경 통제 오케스트레이션 작업에 변경 통제가 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 변경 통제 하에 있습니다.
    • false: 변경 제어 하에 없습니다.

    데이터 유형: 부울

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

    응답 본문.

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

    cURL 요청

    이 예시에서는 변경 요청을 종결할 때 객체의 changeRequestDetails 필드를 전달하는 방법을 보여줍니다.

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

    응답 본문.

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

    DevOps - POST /devops/orchestration/stepMapping

    전달되는 정보가 오케스트레이션 작업 생성에 유효하며 이전에 생성된 단계에 연결하는 데 유효한지 확인합니다. 둘 다 유효하면 오케스트레이션 작업을 만들고 연결합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/stepMapping

    기본 URL: /api/sn_devops/devops/orchestration/stepMapping

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 67. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 68. 쿼리 매개변수
    이름 설명
    toolId 필수 오케스트레이션 도구의 Sys_id입니다. 오케스트레이션 도구 [sn_devops_orchestration_tool] 테이블에 있습니다.

    데이터 유형: 문자열

    toolType 필수 도구의 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

    표 69. 요청 본문 매개변수
    이름 설명
    분기 이름 오케스트레이션 작업과 연결된 분기의 이름입니다.

    데이터 유형: 문자열

    isMultiBranch 오케스트레이션 도구가 Jenkins인 경우 프로젝트가 다중 분기 유형인지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 프로젝트가 다중 분기 유형입니다.
    • false: 프로젝트가 다중 분기 유형이 아닙니다.

    데이터 유형: 부울

    기본값: false

    parentNode 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 이 값에는 상위 노드 상세 정보가 포함됩니다.

    데이터 유형: 객체

    "parentNode": {
      "id": "String",
      "name": "String",
      "upstreamStageName": "String",
      "upstreamTaskExecutionURL": "String"
    }
    parentNode.id 상위 노드의 고유 ID입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 ID에 해당합니다.

    데이터 유형: 문자열
    parentNode.name 상위 노드의 이름입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 이름에 해당합니다.

    데이터 유형: 문자열
    parentNode.upstreamStageName 상위 노드의 업스트림 오케스트레이션 작업 이름입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 이름에 해당합니다.

    데이터 유형: 문자열
    parentNode.upstreamTaskExecutionURL 상위 노드의 업스트림 작업 실행에 대한 URL입니다.

    Jenkins에서 이 값은 파이프라인 스테이지 실행 URL에 해당합니다.

    데이터 유형: 문자열
    parentStageName 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 이름입니다.

    데이터 유형: 문자열

    parentStageURL 오케스트레이션 작업이 상위 오케스트레이션 작업 내에 중첩된 하위 작업인 경우 상위 오케스트레이션 작업의 URL입니다.

    데이터 유형: 문자열

    orchestrationTaskName 필수 오케스트레이션 작업의 이름입니다. 이 작업은 에서 참조하는 것과 동일합니다. orchestrationTaskURL

    데이터 유형: 문자열

    orchestrationTaskURL 필수 오케스트레이션 작업의 URL입니다.

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

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 70. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 71. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 72. 상태 코드
    상태 코드 설명
    201 성공입니다. 요청이 성공적으로 처리되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    401 권한이 해제되었습니다. 사용자 자격 증명이 잘못되었거나 전달되지 않았습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    요소 설명
    상태 검증이 성공적으로 완료되었는지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 검증에 성공했습니다.
    • false: 검증에 실패했습니다.

    데이터 유형: 부울

    stepValid 전송한 정보가 유효한지 여부를 나타내는 플래그입니다.
    유효한 값은 다음과 같습니다.
    • true: 보낸 정보가 유효합니다.
    • false: 보낸 정보가 잘못되었습니다.

    데이터 유형: 부울

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

    정보가 유효한 경우의 결과입니다.

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

    정보가 잘못된 경우 결과를 가져옵니다.

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

    DevOps - POST /devops/패키지/등록

    오케스트레이션 도구를 사용하여 지정된 아티팩트 버전을 포함하는 새 아티팩트 패키지를 만들 수 있습니다.

    아티팩트 패키지는 변경 승인자가 변경 요청을 볼 때 커밋을 표시하는 데 사용됩니다. 변경 요청에 커밋을 표시하려면 변경 승인이 포함된 스테이지보다 먼저 스테이지에서 패키지를 만들어야 합니다.

    패키지 등록 요청에 포함된 모든 아티팩트 버전은 DevOps에 이미 등록되어 있어야 합니다. 아티팩트 버전 등록에 대한 자세한 내용은 다음 문서를 참조하십시오 DevOps - 게시 /devops/아티팩트/등록.

    일반적으로 패키지에 포함할 아티팩트 버전을 식별할 때 and artifacts.name 매개변수를 전달 artifacts.version 합니다. 또한 버전 자체 대신 각 아티팩트 버전에 대한 빌드 상세 정보를 전달할 수 있는 이 엔드포인트의 고급 기능을 사용할 수도 있습니다. 아티팩트별 빌드 상세 정보에는 다음 매개변수가 포함됩니다.
    • artifacts.pipelineName 또는 artifacts.projectName
    • artifacts.taskExecutionNumber
    • artifacts.stageName
    • artifacts.branchName
    엔드포인트는 이러한 아티팩트별 빌드 상세 정보를 사용하여 작업 실행 정보를 조회한 다음 관련 버전을 패키지에 복사합니다. 아티팩트에 특정하지 않은 빌드 상세 정보(pipelineName 또는 projectName, , branchNametaskExecutionNumber, 및 stageName)를 사용하여 생성된 패키지를 파이프라인 실행에 연결합니다.
    주:
    이 엔드포인트는 업데이트를 지원하지 않습니다. 이름이 같은 패키지가 이미 있더라도 항상 새 패키지를 만듭니다.

    아티팩트 패키지에 대한 자세한 내용은 릴리스에 대한 DevOps 변경 가속화 사용 단원을 참조하십시오.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/package/registration

    기본 URL: /api/sn_devops/devops/package/registration

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 73. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 74. 쿼리 매개변수
    이름 설명
    orchestrationToolId 필수 아티팩트 패키지와 연결된 오케스트레이션 도구의 Sys_id입니다. 엔드포인트는 이 정보를 사용하여 작업 실행 정보를 찾습니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    toolId 아티팩트 패키지와 연결된 아티팩트 도구의 Sys_id입니다.

    데이터 유형: 문자열

    테이블: 아티팩트 도구 [sn_devops_artifact_tool]

    표 75. 요청 본문 매개변수
    이름 설명
    아티팩트 하나 이상의 항목이 필요합니다. 각 객체가 패키지에 포함할 아티팩트 버전을 고유하게 식별하는 객체의 배열입니다.

    데이터 유형: 객체 배열

    "artifacts": [
    {
      "branchName": "String",
      "name": "String",
      "pipelineName": "String",
      "projectName": "String",
      "repositoryName": "String",
      "stageName": "String",
      "taskExecutionNumber": "String",
      "version": "String"
    ]
    artifacts.branchName 전달되지 않고 다중 분기 설정인 경우 artifact.version 필요합니다. 아티팩트 버전이 저장되는 분기의 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    artifacts.name 필수 아티팩트 파일 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    artifacts.pipelineName 전달되지 않은 경우 artifact.versionartifacts.projectName 필수입니다. 파이프라인 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    artifacts.projectName 전달되지 않은 경우 artifact.versionartifact.pipelineName 필수입니다. 자유 형식 프로젝트 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    artifacts.repositoryName 필수 아티팩트 리포지토리 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    artifacts.stageName 전달되지 않은 경우 artifact.version 필수입니다. 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    artifacts.taskExecutionNumber 전달되지 않은 경우 artifact.version 필수입니다. 파이프라인 실행 번호입니다.

    데이터 유형: 문자열

    기본값: null

    아티팩트.버전 빌드 상세 정보가 제공되지 않은 경우 필요합니다. 아티팩트의 버전입니다.

    데이터 유형: 문자열

    형식: <중요>.<부 버전>

    기본값: null

    분기 이름 다중 분기 프로젝트인 경우 필요합니다. 아티팩트가 저장되는 리포지토리의 분기 이름입니다.

    데이터 유형: 문자열

    최대 길이: 200자

    기본값: null

    이름 필수 패키지의 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    pipelineName 전달되지 않은 경우 projectName 필수입니다. 파이프라인 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    기본값: null

    projectName 전달되지 않은 경우 pipelineName 필수입니다. 자유 형식 프로젝트 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    stageName 전달되면 pipelineName 필수입니다. 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    기본값: null

    taskExecutionNumber 필수 파이프라인 실행 번호입니다.

    데이터 유형: 문자열

    최대 길이: 128자

    기본값: null

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 76. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 77. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 78. 상태 코드
    상태 코드 설명
    200 성공. 응답 본문이 있는 성공입니다.
    201 만든. 응답 본문이 있는 성공입니다.
    400 잘못된 요청입니다. 요청 URI가 시스템의 API와 일치하지 않거나 알 수 없는 이유로 작업이 실패했습니다. 잘못된 헤더로 인해 이 오류가 발생할 수도 있습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    응답 패키지 등록 요청 결과입니다.

    데이터 유형: 객체

    "response": {
      "artifact_register_requests": {Object},
      "sn_devops_m2m_artifact_version_package": {Object},
      "sn_devops_package": {Object}
    }
    response.artifact_register_requests 처리가 완료되지 않고 아티팩트 준비 요청[sn_devops_artifact_staging] 테이블에 저장된 모든 등록 요청에 대한 결과입니다.

    데이터 유형: 객체

    "artifact_register_requests": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.artifact_register_requests.create 요청으로 패키지 준비 기록이 생성된 경우 생성된 준비 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

    "create": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.create.id 요청에 의해 생성된 패키지 스테이징 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_register_requests.found 연결된 패키지 준비 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다.
    주:
    기존 패키지는 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.artifact_register_requests.found.id 기존 패키지 스테이징 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.artifact_register_requests.update 현재 사용되지 않습니다.
    response.artifact_register_requests.update.id 현재 사용되지 않습니다.
    response.sn_devops_m2m_artifact_version_package 패키지와 연결된 각 아티팩트 버전에 대한 결과입니다.

    데이터 유형: 객체

    "sn_devops_m2m_artifact_version_package": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.sn_devops_m2m_artifact_version_package.create 요청으로 인해 아티팩트 버전을 패키지에 연결하는 기록이 생성된 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

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

    테이블: 패키지에 대한 아티팩트 버전 [sn_devops_m2m_artifact_version_package]

    response.sn_devops_m2m_artifact_version_package.create.id 요청에 의해 생성된 패키지에 대한 아티팩트 버전 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.sn_devops_m2m_artifact_version_package.찾음 패키지에 대한 아티팩트 버전 테이블에 연결 기록이 이미 있는 경우 기존 연결 기록의 sys_ids 목록입니다.
    주:
    기존 기록은 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_m2m_artifact_version_package.found.id 기존 아티팩트 버전을 패키지 기록에 Sys_id.

    데이터 유형: 문자열

    response.sn_devops_m2m_artifact_version_package.update

    현재 사용되지 않습니다.

    response.sn_devops_m2m_artifact_version_package.update.id

    현재 사용되지 않습니다.

    response.sn_devops_package 요청을 처리하는 동안 조작된 패키지 [sn_devops_package] 테이블의 패키지 기록에 대한 결과입니다.

    데이터 유형: 객체

    "sn_devops_package": {
      "create": [Array],
      "found": [Array],
      "update": [Array]
    }
    response.sn_devops_package.create 요청에 의해 패키지 기록을 만든 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

    "create": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_package.create.id 요청에 의해 생성된 패키지 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.sn_devops_package.찾음 등록 요청에 사용된 패키지 기록이 이미 있는 경우 기존 기록의 sys_ids 목록입니다.
    주:
    기존 기록은 수정되지 않습니다.

    데이터 유형: 객체 배열

    "found": [
      {
        "id": "String"
      }
    ]
    response.sn_devops_package.found.id 요청에서 참조하는 기존 패키지 기록의 Sys_id입니다.

    데이터 유형: 문자열

    response.sn_devops_package.update 현재 사용되지 않습니다.
    response.sn_devops_package.update.id 현재 사용되지 않습니다.
    상태 등록 요청의 상태입니다.
    가능한 값:
    • 오류: 응답 본문에 모든 오류 목록이 포함되어 있습니다.
    • 성공: 응답 본문에 반환 결과가 포함되어 있습니다.

    데이터 유형: 문자열

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

    응답 - 패키지 생성됨:

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

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

    응답 - 요청에서 준비된 패키지를 작성함:

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

    DevOps - 게시 /devops/tool/{capability}

    사용자 지정 DevOps 하위 플로우에서 처리하기 위해 전달된 페이로드를 인바운드 이벤트 [sn_devops_inbound] 테이블에 게시합니다.

    전달 capability 된 매개변수로 지정된 도구의 연결된 웹후크에서 이 엔드포인트를 호출합니다. 전달된 페이로드를 처리하려면 인스턴스에 ServiceNow 사용자 지정 하위 플로우가 이미 정의되어 있어야 합니다. 미리 정의된 일정에 따라 마스터 플로우는 DevOps 인바운드 이벤트 테이블에서 웹후크 이벤트 정보를 선택하여 사용자 지정 하위 플로우에 전달한 다음 페이로드를 처리합니다. 사용자 지정 하위 플로우 생성에 대한 자세한 내용은 DevOps 하위 플로우 생성을 참조하세요.

    테스트 도구 통합에 대한 자세한 내용은 DevOps 테스트 도구 통합을 참조하세요.

    사용자 지정 DevOps 도구에 대해 이 엔드포인트를 호출하기 전에 sn_devops에서 handleTool()getNativeIdForOrchestrationTask() 메서드를 구현해야 합니다 . DevOpsOrchestrationToolIntegrationHandler입니다. 자세한 내용은 DevOpsOrchestrationToolIntegrationHandler - 범위 지정됨DevOpsOrchestrationToolIntegrationHandler - 범위가 지정됨을 참조하세요.

    주:
    1.34.1 버전부터 이 API의 새 버전이 도입되었습니다. 이 API를 사용하면 적응형 인증 정책이 예상대로 실행되지 않을 수 있습니다. 이러한 정책에 대한 자세한 내용은 다음 문서를 참조하십시오 Adaptive authentication.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/tool/{capability}

    기본 URL: /api/sn_devops/devops/tool/{capability}

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 79. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    역량 인바운드 이벤트 테이블에 저장할 페이로드를 전달하는 도구의 유형입니다.
    유효한 값(대/소문자 구분 안 함):
    • 아티팩트
    • 코드
    • 오케스트레이션
    • 계획
    • 테스트

    데이터 유형: 문자열

    표 80. 쿼리 매개변수
    이름 설명
    orchestrationToolId 옵션입니다. 관련 파이프라인이 속한 오케스트레이션 도구의 Sys_id입니다. orchestrationToolId 요청 매개변수가 capability테스트 또는 softwarequality로 설정된 경우 필요합니다.

    매개변수가 전달되지 않은 경우 orchestrationToolId 매개변수의 toolId 값은 기본 오케스트레이션 도구입니다.

    데이터 유형: 문자열

    테스트 유형 테스트로 설정된 경우 capability 필요합니다. 실행 중인 테스트의 유형입니다.

    데이터 유형: 문자열

    테이블: 이 매개변수의 유효한 값은 테스트 유형 [sn_devops_test_type] 테이블의 테스트 유형 열에 있는 값입니다.

    toolId 필수 엔드포인트가 호출되는 도구의 Sys_id입니다.

    데이터 유형: 문자열

    표 81. 요청 본문 매개변수
    이름 설명
    도구에 따라 다름 이 도구는 페이로드의 콘텐츠를 결정합니다.

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 82. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 83. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 84. 상태 코드
    상태 코드 설명
    201 요청이 성공적으로 완료되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 서버 측 코드에서 논리 오류가 발생했습니다.

    응답 본문 매개변수

    이름 설명
    세부사항 모든 오류 조건에 대한 항목입니다.

    데이터 유형: 객체

    "details": {
      "errors": [Array]
    }
    상세 정보.오류 단일 오류에 대한 설명입니다.

    데이터 유형: 객체 배열

    "errors": [
      {
        "message": "String"
      }
    ]
    상세 정보.오류.메시지 자세한 오류 메시지입니다.
    • 요청에 경로 매개변수가 없습니다. 호출에 경로 매개변수가 포함되어 있지 않습니다.
    • 요청에 역량 경로 매개변수가 없습니다. 역량 경로 매개변수가 호출에 포함되지 않았습니다.
    • 지원되지 않는 역량 유형: 지정된 역량 매개변수가 올바른 값이 아닙니다.

    데이터 유형: 문자열

    상태 응답 상태(예: "성공" 또는 "데이터 오류")

    데이터 유형: 문자열

    sys_id 인바운드 이벤트 테이블에서 생성된 기록의 Sys_id입니다.

    데이터 유형: 문자열

    아티팩트에 대한 샘플 cURL 요청

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

    성공 응답:

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

    아티팩트에 대한 샘플 cURL 요청

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

    오류 응답:

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

    코드에 대한 샘플 cURL 요청

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

    성공 응답:

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

    오케스트레이션을 위한 샘플 cURL 요청

    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'
    

    성공 응답:

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

    계획에 대한 샘플 cURL 요청

    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'
    

    성공 응답:

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

    테스트용 샘플 cURL 요청

    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'
    

    성공 응답:

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

    DevOps - 게시 /devops/tool/event/{sn_tool_id}

    사전 구축된 하위 플로우에서 처리하기 위해 , Jira또는 Bitbucket 이벤트 [sn_devops_event] 테이블에 전달된 페이로드GitHub를 게시합니다.

    이 엔드포인트를 호출하기 전에 사용 중인 도구와의 통합을 생성해야 합니다.

    , Jira, Bitbucket, 이외의 GitHub다른 도구에서 이벤트를 처리하려면 엔드포인트를 DevOps - 게시 /devops/tool/{capability} 대신 사용하십시오.

    주:
    1.34.1 버전부터 이 API의 새 버전이 도입되었습니다. 이 API를 사용하면 적응형 인증 정책이 예상대로 실행되지 않을 수 있습니다. 이러한 정책에 대한 자세한 내용은 다음 문서를 참조하십시오 Adaptive authentication.

    URL 형식

    버전 관리 URL: /api/sn_devops/{api_version}/devops/tool/event/{sn_tool_id}

    기본 URL: /api/sn_devops/devops/tool/event/{sn_tool_id}

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 85. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    sn_tool_id 요청에 사용할 도구의 Sys_id입니다.

    데이터 유형: 문자열

    표: DevOps 도구 [sn_devops_tool]

    표 86. 쿼리 매개변수
    이름 설명
    없음
    표 87. 요청 본문 매개변수
    이름 설명
    도구에 따라 다름 이 도구는 페이로드의 콘텐츠를 결정합니다. 페이로드는 웹후크 정보 아래의 도구에서 찾을 수 있습니다.

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 88. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 89. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 90. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    201 요청이 성공적으로 완료되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    500 내부 서버 오류입니다. 서버 측 코드에서 논리 오류가 발생했습니다.

    응답 본문 매개변수

    이름 설명
    결과 응답 상태입니다.
    가능한 값:
    • 실패: 잘못된 도구 ID입니다. 이벤트가 생성되지 않았습니다.
    • 성공: 이벤트 [sn_devops_event] 테이블에 이벤트가 생성되었습니다. 그러나 잘못된 페이로드가 제공된 경우 이벤트 상태가 오류 일 수 있습니다.

    데이터 유형: 문자열

    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'
    

    성공 응답:

    {
       "result": "success"
    }

    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'
    

    성공 응답:

    {
       "result": "success"
    }

    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'
    

    성공 응답:

    {
       "result": "success"
    }

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

    지정된 오케스트레이션 작업에 대한 변경 통제 정보를 업데이트합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/changeControl/{changeControlId}

    기본 URL: /api/sn_devops/devops/orchestration/changeControl/{changeControlId}

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 91. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    changeControlId 변경 통제 작업의 Sys_id입니다. 콜백 [sn_devops_callback] 테이블에 위치합니다.

    데이터 유형: 문자열

    표 92. 쿼리 매개변수
    이름 설명
    toolId 필수 변경 통제 작업과 연결된 도구의 DevOps Sys_id입니다.

    데이터 유형: 문자열

    테이블: 오케스트레이션 도구 [sn_devops_orchestration_tool]

    표 93. 요청 본문 매개변수
    이름 설명
    콜백 URL 필수 연결된 변경 요청 승인 프로세스가 완료되면 인스턴스에서 ServiceNow 다시 호출할 수 있는 URL입니다. 이 콜백은 승인 결과에 따라 파이프라인 실행을 계속하거나 허용하지 않아야 합니다.

    데이터 유형: 문자열

    orchestrationTaskDetails 필수 오케스트레이션 작업에 대한 설명입니다.

    데이터 유형: 객체

    "orchestrationTaskDetails": {
      "message": "String",
      "triggerType": "String",
      "upstreamTaskExecutionURL": "String"
    }
    orchestrationTaskDetails.message 자유 형식의 텍스트 메시지입니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.triggerType 필수 오케스트레이션 작업이 시작된 방식입니다.

    유효한 값은 다음과 같습니다.

    • scm: Git/scm 도구 코드 커밋이 작업을 트리거했습니다.
    • 업스트림: 업스트림 작업이 이 작업을 트리거했습니다.
    • 사용자: 사용자가 수동으로 작업을 시작했습니다.

    데이터 유형: 문자열

    orchestrationTaskDetails.upstreamTaskExecutionURL 스트림으로 설정된 경우 triggerType 필요합니다. 업스트림 작업 실행 URL입니다.

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

    데이터 유형: 문자열

    orchestrationTaskURL 필수 오케스트레이션 작업의 URL입니다.

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

    데이터 유형: 문자열

    toolType 도구의 DevOps 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

    taskExecutionURL 필수 실행할 작업의 URL입니다.

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 94. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 95. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 96. 상태 코드
    상태 코드 설명
    200 요청이 성공적으로 완료되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    401 인증이 잘못되었거나 누락되었습니다.
    404 찾을 수 없습니다. 지정된 기록을 찾을 수 없습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.

    응답 본문 매개변수

    이름 설명
    change_control 오케스트레이션 작업에 변경 통제가 있는지 여부를 나타내는 플래그입니다.
    가능한 값:
    • true: 변경 통제 하에 있습니다.
    • false: 변경 제어 하에 없습니다.

    데이터 유형: 부울

    세부사항 모든 오류 조건에 대한 항목입니다.

    데이터 유형: 객체

    "details": {
      "errors": [Array]
    }
    상세 정보.오류 단일 오류에 대한 설명입니다.

    데이터 유형: 객체 배열

    "errors": [
      {
        "message": "String"
      }
    ]
    상세 정보.오류.메시지 자세한 오류 메시지입니다.

    데이터 유형: 문자열

    샘플 cURL 요청

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

    응답:

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

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

    지정된 변경 요청의 필드를 업데이트합니다.

    URL 형식

    버전이 지정된 URL: /api/sn_devops/{api_version}/devops/orchestration/changeInfo/{changeInfo}

    기본 URL: /api/sn_devops/devops/orchestration/changeInfo/{changeInfo}

    주:
    사용 가능한 버전은 REST API 탐색기에 지정됩니다. 스크립트 기반 REST API의 경우 스크립트 기반 REST 서비스 양식에 추가 버전 정보가 있습니다.

    지원되는 요청 매개변수

    표 97. 경로 매개변수
    이름 설명
    api_version 옵션입니다. 액세스할 엔드포인트의 버전입니다. 예를 들어 v1 또는 v2입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하도록 이 값만 지정하십시오.

    데이터 유형: 문자열

    표 98. 쿼리 매개변수
    이름 설명
    changeRequestNumber 필수 업데이트할 오케스트레이션 작업과 연결된 변경 요청 번호입니다.

    데이터 유형: 문자열

    테이블: 변경 요청 [change_request]

    표 99. 요청 본문 매개변수
    이름 설명
    데이터 필수 연결된 변경 요청에서 업데이트할 필드에 대한 이름-값 쌍입니다.
    예를 들어, 짧은 설명 파일을 업데이트하려면 다음과 유사한 이름-값 쌍을 입력합니다.
     "{\"short_description\": \"my short desc\" }"
    매개변수의 state 경우 다음 전환만 지원됩니다.
    • 취소:
      • 상태를 취소로 이동하려면 변경 요청 상태를 구현해야 합니다.
      • reason 이 매개변수는 상태를 취소됨으로 업데이트하기 위한 필수 입력입니다.
    • 종결:
      • 상태를 종결로 이동하려면 변경 요청 상태가 구현 또는 사후 구현이어야 합니다.
      • close_code와 close_notes은 상태를 종결로 업데이트하기 위한 필수 입력입니다.
        가능한 값:
        • 4: 취소(sn_devops.change_request.cancel_state 속성에 설정된 값)
        • 3: 종결됨(sn_devops.change_request.closed_state 속성에 설정된 값)

    데이터 유형: 문자열

    헤더

    다음 요청 및 응답 헤더는 이 HTTP 작업에만 적용되거나 고유한 방식으로 이 작업에 적용됩니다. REST API에 사용되는 일반 헤더 목록은 지원되는 REST API 헤더를 참조하십시오.

    표 100. 요청 헤더
    머리글 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 인증 헤더에서 토큰을 인증: sn_devops 형식으로 사용할 수 있습니다 . DevOpsToken <tool_sys_id>:<tool_token>.
    주:
    토큰이 있는 인증 헤더 외에 기본 인증 상세 정보(사용자 이름 및 암호)가 제공되는 경우 기본 인증이 우선합니다.

    인스턴스에서 사용자를 사용할 수 없는 경우 devops.system토큰 기반 인증이 성공한 후 이 사용자로 전환 속성을 사용합니다. 이 속성을 사용하면 토큰 인증을 완료하는 데 필요한 sn_devops.integration 역할을 가진 모든 사용자를 설정할 수 있습니다. 자세한 내용은 DevOps Change Velocity properties 문서를 참조하십시오.

    콘텐츠-형식 요청 본문의 데이터 형식입니다. application/json만 지원합니다.
    표 101. 응답 헤더
    머리글 설명
    안 함

    상태 코드

    이 HTTP 작업에 적용되는 상태 코드는 다음과 같습니다. REST API에 사용되는 가능한 상태 코드 목록은 REST API HTTP 응답 코드를 참조하십시오.

    표 102. 상태 코드
    상태 코드 설명
    200 성공입니다. 요청이 성공적으로 처리되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    404 찾을 수 없습니다. 요청한 항목을 찾을 수 없습니다.

    응답 본문 매개변수

    이름 설명
    메시지 업데이트 결과에 대한 설명입니다.

    데이터 유형: 문자열

    상태 요청의 상태입니다.
    가능한 값:
    • 성공: 변경 요청을 찾았고 변경 상세 정보가 성공적으로 업데이트되었습니다.
    • 오류: 변경 요청을 찾을 수 없으며 변경 상세 정보가 업데이트되지 않았습니다.

    데이터 유형: 문자열

    updateStatus 업데이트 상태입니다.
    가능한 값:
    • 완료
    • 오류

    데이터 유형: 문자열

    cURL 요청

    다음 코드 예제에서는 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"
    }

    응답:

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