CMDB 데이터 수집 API

  • 릴리스 버전: Xanadu
  • 업데이트 날짜 2024년 08월 01일
  • 읽기7분
  • CMDB 데이터 수집 API는 객체 배열을 임포트 세트 테이블로 일괄 수집할 수 있는 엔드포인트를 제공합니다.

    경고:
    이 API는 더 이상 권장되지 않습니다. 확장성 및 안정성이 향상된 동일한 기능을 위해 엔드포인트를 임포트 세트 - POST /now/import/{stagingTableName}/insertMultiple 사용합니다. Quebec 릴리스 이후부터는 CMDB 데이터 수집 API의 모든 사용을 마이그레이션하여 임포트 세트 – insertMultiple 엔드포인트를 대신 사용해야 합니다.

    또한 이 API는 zbooted 인스턴스에 대해 기본적으로 작동하지 않습니다.

    이 API는 (com.snc.cmdb) 플러그인을 구성 관리 데이터베이스(CMDB) 통해 활성화되며 cmdb_import_api_admin 역할이 필요합니다.

    CMDB 데이터 수집 - POST /cmdb/ingest/{data_source_sys_id}

    전달된 sys_id로 식별되는 데이터 소스 기록과 연결된 임포트 세트 테이블에 기록을 삽입합니다.

    경고:
    이 API는 더 이상 권장되지 않습니다. 확장성 및 안정성이 향상된 동일한 기능을 위해 엔드포인트를 임포트 세트 - POST /now/import/{stagingTableName}/insertMultiple 사용합니다. Quebec 릴리스 이후부터는 CMDB 데이터 수집 API의 모든 사용을 마이그레이션하여 임포트 세트 – insertMultiple 엔드포인트를 대신 사용해야 합니다.

    또한 이 API는 zbooted 인스턴스에 대해 기본적으로 작동하지 않습니다.

    요청 본문에는 임포트 세트 테이블에 삽입할 객체의 JSON 배열(페이로드)이 포함되어야 합니다. 각 객체는 테이블의 행과 동일하며, 각 이름-값 쌍은 열과 동일합니다. JSON 페이로드는 "u_" 프리픽스 없이 임포트 세트의 필드 이름을 활용해야 합니다. 예를 들어 필드 이름 "u_matching_record"은 요청 본문 페이로드에서 "matching_record"이어야 합니다. 임포트 세트 테이블이 있는 경우 엔드포인트는 기존 임포트 세트 테이블에 행(객체)을 추가합니다. 중복 확인이나 기존 기록 업데이트는 수행되지 않습니다.

    애플리케이션을 처음 빌드하는 경우 이 엔드포인트를 호출하기 전에 먼저 인스턴스에 연결된 데이터 소스 레코드를 만들어야 합니다. 이 엔드포인트를 사용하여 기존 임포트 세트 테이블에 기록을 추가하는 경우 데이터 소스 기록을 생성할 필요는 없지만 sys_id 알아야 합니다. 데이터 소스 기록은 지정된 페이로드를 삽입할 임포트 세트 테이블을 설명합니다. 이 테이블은 임포트 세트 행 [sys_import_set_row] 테이블을 확장해야 합니다. 또한 데이터 소스를 첨부 파일로 설정하고 형식을 JSON으로 설정해야 합니다. 데이터 원본에 대한 자세한 내용은 데이터 원본을 참조하세요.

    데이터 소스 기록에 정의된 임포트 세트 테이블이 없는 경우, 엔드포인트는 전달된 페이로드를 데이터 소스 기록에 첨부합니다. 초기 임포트 세트 테이블을 생성하려면 데이터를 임포트 세트 테이블로 수동으로 임포트해야 합니다. 데이터를 임포트하려면 연결된 데이터 소스 양식의 관련 링크 섹션에서 20개 기록 로드 테스트 또는 모든 기록 로드 링크를 클릭합니다. 임포트 세트 테이블이 생성되면 이 엔드포인트를 사용하여 테이블에 열을 추가할 수 없습니다. 나중에 임포트 세트 테이블에 존재하지 않는 이름-값 쌍이 전달되면 경고 없이 무시됩니다. 임포트 세트 테이블 내의 열을 수정해야 하는 경우 테이블에 수동으로 추가할 수 있습니다. 임포트 세트 테이블을 삭제하거나 이름을 바꾸고 새 페이로드를 사용하여 엔드포인트를 다시 호출할 수도 있습니다.

    이 엔드포인트에 액세스하려면 cmdb_import_api_admin 역할이 있어야 합니다.

    URL 형식

    버전이 지정된 URL: /api/now/{api_version}/cmdb/ingest/{data_source_sys_id}

    기본 URL: /api/now/cmdb/ingest/{data_source_sys_id}

    지원되는 요청 매개변수

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

    데이터 유형: 문자열

    data_source_sys_id 데이터 소스 기록의 Sys_id입니다.
    표 2. 쿼리 매개변수
    이름 설명
    없음
    표 3. 요청 본문 매개변수(XML 또는 JSON)
    이름 설명
    배열 연결된 임포트 세트 테이블에 추가할 데이터를 설명하는 객체의 자유 형식 배열입니다. 배열의 각 객체는 임포트 세트 테이블의 행을 정의합니다. 각 이름-값은 열을 쌍을 이룹니다.
    주:
    이 배열은 "{\"records\":[{\"hostname\": \"Hostname1\", \"serialnumber\": \"2acd3873-7fc5-454c-8844-e7769e4d6cfc\", \"model\": \"Model Id"},{\"vendor\": \"ABC Co\"}]}"와 같이 이름을 지정해야 합니다.

    헤더

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

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

    기본값: application/json

    컨텐츠-형식 요청 본문의 데이터 형식입니다. 지원되는 유형은 application/json 또는 application/xml입니다.

    기본값: application/json

    표 5. 응답 헤더
    헤더 설명
    없음

    상태 코드

    다음 상태 코드는 이 HTTP 작업에 적용됩니다. REST API에서 사용할 수 있는 상태 코드 목록은 REST API HTTP 응답 코드를 참조하세요.

    표 6. 상태 코드
    상태 코드 설명
    201 만든. 데이터 소스에 첨부 파일이 추가되었습니다.
    202 허용. 임포트 세트 테이블에 행이 추가되었습니다.
    400 잘못된 요청입니다. 잘못된 요청 유형 또는 잘못된 형식의 요청이 탐지되었습니다.
    404 찾을 수 없습니다. 요청한 항목을 찾을 수 없습니다.
    409 상충됩니다. 데이터 소스에 첨부 파일이 이미 있습니다.
    500 내부 서버 오류입니다. 요청을 처리하는 동안 예기치 않은 오류가 발생했습니다. 응답에는 오류에 대한 추가 정보가 포함되어 있습니다.
    501 구현되지 않았습니다. 요청 형식이 지원되지 않습니다.

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

    이름 설명
    오류 발생한 오류에 대해 설명합니다.

    데이터 유형: 객체

    "error": {
      "details": "String",
      "message": "String"
    }
    오류.세부 정보 오류에 대한 추가 정보입니다.

    데이터 유형: 문자열

    오류.메시지 오류를 설명하는 메시지입니다.

    데이터 유형: 문자열

    import_set 페이로드가 추가된 임포트 세트 테이블의 이름입니다.

    데이터 유형: 문자열

    staged_row_count 임포트 세트 테이블에 추가된 행의 수입니다.

    데이터 유형: 숫자

    staging_table 페이로드를 준비하는 데 사용되는 데이터 소스 기록의 이름입니다.

    데이터 유형: 문자열

    상태 오류 상태입니다.

    데이터 유형: 문자열

    샘플 cURL 요청

    curl "instance.service-now.com/api/now/cmdb/ingest/4dd9686d1b9800103d374087bc4bcb3d" \
    --request POST \
    --header "Accept: application/json" \
    --header "Content-Type:application/json" \
    --data "{\"records\":[{\"hostname\": \"Hostname1\", \"serialnumber\": \"2acd3873-7fc5-454c-8844-e7769e4d6cfc\", \"model\": \"Model 5100"},{\"vendor\": \"ABC Co\"},
    {\"hostname\": \"Hostname2\", \"serialnumber\": \"3adb3873-7fc5-564d-8844-e7769e4d6ded\", \"model\": \"Model 5200"},{\"vendor\": \"ACME Co\"}]}"
    --user "username":"password"

    성공적인 응답:

    {
      "result": {
        "staged_row_count": 2,
        "import_set": "ISET0010010",
        "staging_table": "sn_my_demo_integra_demo_data_source_01"
      }
    }