데브옵스 API

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 198분
  • DevOps API는 외부 DevOps 도구와 상호작용할 수 있는 엔드포인트를 제공합니다.

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

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

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

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

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

    DevOps - /devops/code/schema 가져오기

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

    필요한 스키마 개체가 있으면 이를 사용하여 해당 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. 쿼리 매개변수
    이름 설명
    resource 필수 반환할 자원 스키마의 유형입니다.

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

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

    데이터 유형: 문자열

    표 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 코드 커밋이 수행된 분기의 이름입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

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

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

    데이터 유형: 객체

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

    "details": [
      {
        "action": "String",
        "additions": Number,
        "changes": Number,
        "deletions": Number,
        "file": "String",
        "totalChanges": Number
      }
    ]
    커밋.세부정보.작업 파일에서 수행된 작업입니다.

    데이터 유형: 문자열

    커밋.세부 정보.추가 파일의 총 추가 수입니다.

    데이터 유형: 숫자

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

    데이터 유형: 숫자

    커밋.세부 정보.삭제 파일의 총 삭제 수입니다.

    데이터 유형: 숫자

    커밋.상세 정보.파일 분기를 기준으로 수정된 파일의 경로입니다.

    데이터 유형: 문자열

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

    데이터 유형: 숫자

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    리포지토리 커밋이 수행된 리포지토리에 대한 설명입니다.

    데이터 유형: 객체

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    URL 리포지토리의 URL입니다(예: "https://github.com/mycompany/mobileplatform").

    데이터 유형: 문자열

    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 - /devops/onboarding/status 가져오기

    서비스에서 비동기적으로 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]

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    결과.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 파이프라인 연결의 상태입니다.

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    결과.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 웹후크 구성의 상태입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    결과.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 도구의 구성 상태입니다. 성공의 경우 and statusmessage를 반환합니다. 오류가 발생하면 and error를 반환합니다status.

    데이터 유형: 객체

    "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 도구의 연결 상태입니다. 성공의 경우 and statusmessage를 반환합니다. 오류가 발생하면 and error를 반환합니다status.

    데이터 유형: 객체

    "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 도구의 생성 상태입니다. 성공의 경우 and statusmessage를 반환합니다. 오류가 발생하면 and error를 반환합니다status.

    데이터 유형: 객체

    "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 도구의 검색 상태입니다. 성공의 경우 and statusmessage를 반환합니다. 오류가 발생하면 and error를 반환합니다status.

    데이터 유형: 객체

    "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)입니다.

    데이터 유형: 문자열

    결과.온보딩요청ID 온보딩 요청의 고유 식별자입니다. /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/orchestration/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]

    도구 유형 도구의 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

    표 15. 요청 본문 매개변수
    이름 설명
    없음

    헤더

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

    표 16. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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: 낮음

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    기본값: 신규

    sys_id 변경 요청의 Sys_id입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    cURL 요청

    curl -X GET "https://instance.servicenow.com/api/sn_devops/v1/devops/orchestration/changeInfo?toolId=1487f457db642810765555535e9619d3&pipelineName=Automation/apps HR/family release&stageName=deployfamilyrelease&buildNumber=1639"  
    -H "accept: application/json"\ 
    -u "username":"password"
    {  
      "result": {  
        "changeFound": true,  
        "sys_id": "ee89341bdb642810765555535e96196e",  
        "number": "CHG0030001",  
        "type": "normal",  
        "state": "0",  
        "phase": "requested",  
        "phase_state": "open",  
        "priority": "4",  
        "risk": "4",  
        "url": "https://instance.servicenow.com/change_request.do?sys_id=ee89341bdb642810765555535e96196e",  
        "changeAssignmentGroup": "Change Management", 
        "changeApprovers": "Ron Kettering, Christen Mitchell, Howard Johnson, Luke Wilson", 
        "plannedStartDate": "2023-02-05 08:00:00", 
        "plannedEndDate": "2024-02-05 08:00:00" 
      }  
    }

    DevOps - GET /devops/orchestration/스키마

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

    필요한 스키마 개체가 있으면 이를 사용하여 해당 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. 쿼리 매개변수
    이름 설명
    resource 반환할 자원 스키마의 유형입니다.
    유효한 값(대/소문자 구분 안 함):
    • 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 작업 실행이 시작된 날짜/시간입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    트리거 유형 오케스트레이션 작업이 시작된 방식입니다.

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

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

    데이터 유형: 문자열

    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: 프로젝트가 Multibranch 유형입니다.
    • 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] 테이블에 있습니다.

    데이터 유형: 문자열

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

    유효한 값: 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/plan/스키마

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

    필요한 스키마 개체가 있으면 이를 사용하여 해당 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. 쿼리 매개변수
    이름 설명
    resource 반환할 자원 스키마의 유형입니다.

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

    • 버전
    • 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 연결된 애플리케이션에 대한 간략한 설명입니다.

    데이터 유형: 문자열

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

    데이터 유형: 객체

    "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 애플리케이션, 버전 또는 작업 항목의 고유 식별자입니다. 소스 계획 수립 도구에서 생성됩니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    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 연결된 버전에 대한 간략한 설명입니다.

    데이터 유형: 문자열

    버전.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=에 대한 샘플 cURL 요청=work_item

    curl "https://instance.servicenow.com/api/sn_devops/v1/devops/plan/schema?resource=work_item" \
    --request GET \
    --header "Accept:application/json" \
    --user "username":"password"
    
    {
      "result": {
        "id": "STR1234",
        "type": "Story",
        "shortDescription": "Planning API Spec",
        "state": "In-progress",
        "createdDateTime": "1970-01-01T08:15:30-05:00",
        "assignedTo": {
          "name": "Leo Neo",
          "userName": "lenn",
          "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
          "email": "lenn@smithworksinc.com"
        },
        "version": {
          "id": "REL1234",
          "shortDescription": "APIs Release",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "app": {
            "id": "PRODUCT1234",
            "shortDescription": "Mobile UI",
            "createdDateTime": "1970-01-01T08:15:30-05:00",
            "team": {
              "name": "Mobile UI",
              "id": "f0ca45679323008b52f3b457415ae6"
            },
            "url": "https://jira.com/mycompany/browse/PRODUCT-125"
            },
            "url": "https://jira.com/mycompany/browse/REL-125"
        },
        "app": {
          "id": "PRODUCT1234",
          "shortDescription": "Mobile UI",
          "createdDateTime": "1970-01-01T08:15:30-05:00",
          "team": {
            "name": "Mobile UI",
            "id": "f0ca45679323008b52f3b457415ae6"
          },
          "url": "https://jira.com/mycompany/browse/PRODUCT-125"
        },
        "url": "https://jira.com/mycompany/browse/HALOKEY-25"
      }
    }

    DevOps - POST /devops/artifact/registration

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

    이 엔드포인트는 새 아티팩트 및 아티팩트 버전을 만들고 커밋에 연결합니다. 다음은 엔드포인트 프로세스 흐름에 대한 설명입니다.
    • 요청에 전달 toolId 되는 경우 엔드포인트는 도구가 인스턴스 내에 존재하는지 확인합니다. 또한 에 artifacts.repositoryName 지정된 아티팩트 리포지토리가 있는지 확인하고, 존재하지 않는 경우 연결된 아티팩트 도구 아래에 생성합니다.
    • 요청에 전달 toolId 되지 않은 경우 리포지토리가 생성되지만 아티팩트 도구에는 연결되지 않습니다.
    • 그런 다음 에 artifacts.name 지정된 아티팩트가 이미 존재하는지 확인하고, 존재하지 않는 경우 연결된 리포지토리 아래에 생성합니다.
    • 에 가 artifact.version 요청에 전달된 경우:
      • 없는 경우 연결된 아티팩트 버전 [sn_devops_artifact_version] 테이블에 새 아티팩트 버전 기록이 생성됩니다.
      • 그런 다음 엔드포인트는 제공된 빌드 상세 정보(pipelineName또는 projectName, , taskExecutionNumberbranchNamestageName, 및 )와 orchestrationToolId 매개변수를 기반으로 연결된 작업 실행을 찾습니다.
      • 태스크 실행이 발견되고 사후 처리가 완료되면 아티팩트 버전이 태스크 실행에 연결되고 Artifact to 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 아티팩트의 시맨틱 버전입니다.

    데이터 유형: 문자열

    형식: MAJOR. 사소한. 패치

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

    최대 길이: 160자

    기본값: null

    artifacts.version toolId 전달되지 않으면 필수입니다. 아티팩트 버전입니다.

    데이터 유형: 문자열

    형식: MAJOR. 사소한

    최대 길이: 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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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 아티팩트 등록 요청의 결과입니다.

    데이터 유형: 객체

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

    데이터 유형: 객체

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

    데이터 유형: 객체 배열

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

    테이블: 아티팩트 [sn_devops_artifact]

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

    데이터 유형: 문자열

    response.artifact.found 아티팩트 테이블에 아티팩트가 이미 있는 경우 기존 아티팩트 기록의 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.생성 요청에서 아티팩트 준비 기록을 생성한 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

    response.artifact_repository.업데이트 엔드포인트가 리포지토리의 추적 플래그를 false에서 true로 업데이트하면 수정된 리포지토리 레코드의 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": [
      {
        "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.업데이트 현재 사용되지 않음
    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/onboarding/app

    서비스에서 비동기식으로 처리 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]

    credentials.password 필수 매개변수에 지정된 사용자의 암호입니다 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.project pipelines 개체가 지정되고 pipelines.tool 프로젝트 엔터티(예: ADO 도구)를 지원하는 경우 필요합니다. 고유 파이프라인/도구 식별자를 생성하기 위해 파이프라인과 연결할 프로젝트입니다. 매개변수 값은 프로젝트 [sn_devops_project] 테이블의 프로젝트에서 파생되어야 합니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    리포지토리 애플리케이션과 연결된 리포지토리 목록입니다. repositories 개체에 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와 연결할 애플리케이션의 이름입니다. 애플리케이션은 이미 만들어졌거나 이 요청의 apps 객체에 지정되어 있어야 합니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    아티팩트리포지토리.프로젝트 artifactRepositories 개체가 지정되고 지원 프로젝트 엔터티(예: ADO 도구)가 repositories.tool 필요한 경우 필요합니다. 고유한 파이프라인/도구 식별자를 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 상태 코드입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체

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

    데이터 유형: 문자열

    결과.온보딩요청ID 온보딩 요청의 고유 식별자입니다. /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/onboarding/tool

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

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

    도구 온보딩 매트릭스

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

    이 엔드포인트에 액세스하려면 먼저 관리자가 인스턴스의 도구를 설정하도록 연결 및 자격 증명 별칭(CreateDevOpsTool)을 구성해야 DevOps 합니다. 자세한 내용은 DevOps 변경 속도 설치를 참조하세요. 또한 호출 엔터티에는 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]

    credentials.password 필수 매개변수에 지정된 사용자의 암호입니다 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 서버통해 연결하지 않습니다.

    데이터 유형: 부울

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

    데이터 유형: 문자열

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

    ADO 조직 URL을 제공하면 API는 지정된 조직 아래의 모든 프로젝트를 검색하고 프로젝트를 구성하지 않습니다. ADO 프로젝트 URL을 제공하면 API는 프로젝트와 관련된 엔터티(예: 파이프라인, 리포지토리 및 계획)를 검색하고 개체가 있는 경우 credentials 프로젝트를 구성합니다. API에 프로젝트 구성을 건너뛰도록 명시적으로 지시하려면 플래그 configureTool (type: boolean)를 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 상태 코드입니다.

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체

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

    데이터 유형: 문자열

    결과.온보딩요청ID 온보딩 요청의 고유 식별자입니다. /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/orchestration/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]

    도구 유형 도구의 유형입니다.

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

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

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

    데이터 유형: 객체

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

    데이터 유형: 부울

    기본값: false

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

    데이터 유형: 객체

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

    데이터 유형: 문자열

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

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

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

    데이터 유형: 문자열

    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": {
      "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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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] 테이블에 있습니다.

    데이터 유형: 문자열

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

    유효한 값: jenkins

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

    데이터 유형: 부울

    기본값: false

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

    데이터 유형: 객체

    "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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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/package/registration

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

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

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

    일반적으로 패키지에 포함할 아티팩트 버전을 식별할 때 and artifacts.name 매개변수를 전달합니다artifacts.version. 버전 자체 대신 각 아티팩트 버전에 대한 빌드 세부 정보를 전달할 수 있는 이 엔드포인트의 고급 기능을 사용할 수도 있습니다. 아티팩트별 빌드 세부정보에는 다음 매개변수가 포함됩니다.
    • artifacts.pipelineName 또는 artifacts.projectName
    • artifacts.taskExecutionNumber
    • artifacts.stageName
    • artifacts.branchName
    엔드포인트는 이러한 아티팩트별 빌드 상세 정보를 사용하여 작업 실행 정보를 조회한 다음 연결된 버전을 패키지에 복사합니다. 아티팩트 관련 빌드 상세 정보가pipelineName 아닌 (또는 projectName, , taskExecutionNumberbranchName, 및 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.version 필수이며 artifacts.projectName 전달되지 않습니다. 파이프라인 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    artifacts.projectName artifact.version 필수이며 artifact.pipelineName 전달되지 않습니다. 자유 형식 프로젝트 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

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

    데이터 유형: 문자열

    최대 길이: 160자

    artifacts.stageName artifact.version 전달되지 않으면 필수입니다. 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

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

    데이터 유형: 문자열

    기본값: null

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

    데이터 유형: 문자열

    형식: <주>.<부>

    기본값: null

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

    데이터 유형: 문자열

    최대 길이: 200자

    기본값: null

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

    데이터 유형: 문자열

    최대 길이: 160자

    pipelineName projectName 전달되지 않으면 필수입니다. 파이프라인 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    기본값: null

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

    데이터 유형: 문자열

    최대 길이: 160

    기본값: null

    stageName 전달될 경우 pipelineName 필수입니다. 스테이지 이름입니다.

    데이터 유형: 문자열

    최대 길이: 160자

    기본값: null

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

    데이터 유형: 문자열

    최대 길이: 128자

    기본값: null

    헤더

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

    표 76. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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 패키지 등록 요청의 결과입니다.

    데이터 유형: 객체

    "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.생성 요청에서 패키지 준비 기록을 생성한 경우 생성된 준비 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

    response.artifact_register_requests.업데이트 현재 사용되지 않습니다.
    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.생성 요청에서 아티팩트 버전을 패키지에 연결하는 기록을 생성한 경우 생성된 기록의 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.업데이트

    현재 사용되지 않습니다.

    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.생성 요청에 의해 패키지 기록이 생성된 경우 생성된 기록의 sys_ids 목록입니다.

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

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

    데이터 유형: 객체 배열

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

    데이터 유형: 문자열

    response.sn_devops_package.업데이트 현재 사용되지 않습니다.
    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 - POST /devops/tool/{capability}

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

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

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

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

    주:
    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 요청 매개 변수가 Test 또는 SoftwareQuality로 설정된 경우 capability 필요합니다.

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

    데이터 유형: 문자열

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

    데이터 유형: 문자열

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

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

    데이터 유형: 문자열

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

    헤더

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

    표 82. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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"
      }
    ]
    details.errors.message 자세한 오류 메시지입니다.
    • 요청에 경로 매개변수가 없습니다. 호출에 경로 매개변수가 포함되어 있지 않습니다.
    • 요청에 역량 경로 매개변수가 없습니다. 역량 경로 매개변수가 호출에 포함되지 않았습니다.
    • 지원되지 않는 역량 유형: 지정된 역량 매개변수의 값이 잘못되었습니다.

    데이터 유형: 문자열

    상태 "성공" 또는 "데이터 오류"와 같은 응답 상태입니다.

    데이터 유형: 문자열

    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 - POST /devops/tool/event/{sn_tool_id}

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

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

    , 또는 를 제외한 GitHub다른 도구에서 이벤트를 처리하려면 엔드포인트를 대신 사용합니다DevOps - POST /devops/tool/{capability}.BitbucketJira

    주:
    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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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가 잘못되었습니다. 이벤트가 작성되지 않았습니다.
    • success: 이벤트 [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입니다. 최신 버전이 아닌 엔드포인트 버전을 사용하려면 이 값만 지정합니다.

    데이터 유형: 문자열

    변경 제어 ID 변경 통제 작업의 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 도구 코드 커밋이 작업을 트리거했습니다.
    • 업스트림: 업스트림 작업이 이 작업을 트리거했습니다.
    • user: 사용자가 수동으로 작업을 시작했습니다.

    데이터 유형: 문자열

    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/

    데이터 유형: 문자열

    도구 유형 DevOps 도구의 유형입니다.

    유효한 값: jenkins

    데이터 유형: 문자열

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

    데이터 유형: 문자열

    헤더

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

    표 94. 요청 헤더
    헤더 설명
    수용 응답 본문의 데이터 형식입니다. application/json만 지원합니다.
    권한 부여
    v2부터 이 API는 토큰 기반 인증을 지원합니다. 도구 [sn_devops_tool] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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"
      }
    ]
    details.errors.message 자세한 오류 메시지입니다.

    데이터 유형: 문자열

    샘플 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. 쿼리 매개변수
    이름 설명
    변경 요청 번호 필수 업데이트할 오케스트레이션 작업과 연결된 변경 요청 번호입니다.

    데이터 유형: 문자열

    테이블: 변경 요청 [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] 테이블에 있는 도구 기록에서 토큰 복사 버튼을 클릭하여 토큰을 획득할 수 있습니다. 그런 다음 권한 부여 헤더에서 Authorization: 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"
      }
    }