REST API v2

FOSSLight Hub의 기능을 REST API로 호출할 수 있습니다.

시작하기

REST API를 호출하기 위해서는 TOKEN을 발행해야 합니다. 아래 단계를 따라 진행하세요.

  1. Admin 계정으로 로그인합니다.
  2. System > User Management 탭에서 각 User별로 Token을 발행할 수 있습니다.

REST API 종류

:sparkles: API 동작 확인은 하기 링크에서 가능합니다.

- Demo 서비스용 : https://demo.fosslight.org/swagger-ui/index.html (연동 서버 : https://demo.fosslight.org/)

Key Required Type Value
Authorization O String 발급받은 토큰 정보
Swagger UI 사용 시 Token 입력 방법
ℹ️ Swagger UI 사용 시 인증을 편리하게 하기 위해 제공하는 기능입니다. Curl이나 별도의 API 테스트를 진행할 경우, API마다 token 정보를 header에 포함해야 합니다.
• Authorize 버튼을 클릭합니다.
Authorize 버튼
• 팝업에서 Value에 token 정보를 입력한 후, Authorize 버튼을 클릭합니다.
Token 입력

1. OSS & License 정보 조회

API 응답 형식 설명
GET /api/v2/license JSON License 정보를 조회합니다.

  • licenseName: 조회할 라이선스 이름
  • licenseNameExact: true로 설정하면 정확히 일치하는 라이선스만 조회 (default=Y)
  • couterPerPage: 한 번에 조회할 아이템의 개수 (default = 10000)
  • page: 조회할 페이지 번호 (default = 1)
GET /api/v2/oss JSON Open Source 정보를 조회합니다.

  • downloadLocation: 조회할 download location 값
  • downloadLocationExact: true로 설정하면 정확히 일치하는 오픈소스만 조회 (default = Y)
  • ossName: 조회할 오픈소스 이름
  • ossNameExact: true로 설정하면 정확히 일치하는 오픈소스만 조회 (default = Y)
  • ossVersion: 조회할 오픈소스 버전
  • couterPerPage: 한 번에 조회할 아이템의 개수 (default = 10000)
  • page: 조회할 페이지 번호 (default = 1)
POST /api/v2/oss JSON (Admin only) Open Source 를 등록합니다.

  • ossMaster포맷에 맞춰 데이터 입력
GET /api/v2/refine-download-location JSON (Admin only) OSS 정보를 정제합니다.

  • UPDATE DOWNLOAD LOCATION FORMAT: Download location을 업데이트
  • REMOVE DUPLICATED DOWNLOAD LOCATION: 중복 제거
  • PUT PURL: PURL 업데이트
  • REMOVE DUPLICATED PURL: 중복된 PURL 삭제
  • REORDER GITHUB PRIORITY: "github.com" 포함된 download location 우선순위 변경
  • REFINE ALL: 위 사항을 순서대로 실행

2. 3rd Party 정보 조회

API 응답 형식 설명
GET /api/v2/partners JSON 3rd Party의 정보를 조회합니다.

  • createDate: 3rd party 생성 날짜 기준으로 조회 (fromDate-toDate)
  • creator: 3rd party 생성자 정보 기준으로 조회
  • division: division 정보 기준으로 조회
  • partnerIdList: 3rd party ID 기준으로 조회. 리스트 형태로 여러 개 입력 가능
  • status: 3rd party의 상태 기준으로 조회
  • updateDate: 3rd party 수정 날짜 기준으로 조회 (fromDate-toDate)
  • couterPerPage: 한 번에 조회할 아이템의 개수 (default = 1000)
  • page: 조회할 페이지 번호 (default = 1)
GET /api/v2/partners/{id}/bom/file FILE 3rd party BOM export - 파일 형태로 다운로드

  • (required) format: 추출할 파일 포맷
  • (required) id: 조회할 대상인 3rd party ID
GET ​/api​/v2​/partners​/{id}​/bom/json-data JSON 3rd party BOM export - JSON 형태로 받음

  • (required) id: 대상 3rd party ID
POST /api/v2/partners/{id}/editors JSON 3rd party에 editor를 추가함

  • (required) emailList: 추가할 editor의 이메일 정보
  • (required) id: 대상 3rd party ID

3. Project 정보 조회, 생성, FOSSLight Report 등록, Packaging 파일 업로드, BOM Export, Project 비교

API 응답 형식 설명
GET /api/v2/projects JSON 아래 항목을 포함한 Project의 정보를 조회합니다.

  • createDate: Project 생성한 날짜 기준으로 조회 (fromDate-toDate)
  • creator: 생성한 사람 정보 기준으로 조회
  • division: division 정보 기준으로 조회
  • modelName: model 이름 기준으로 조회
  • prjIdList: project ID 기준으로 조회. list형태로 여러개 입력 가능
  • prjName: project 이름 기준으로 조회
  • prjNameExactYn: true로 설정하면 project name에 입력한 값과 정확히 일치하는 프로젝트만 조회
  • status: Project의 status기준으로 조회
  • updateDate: Project의 수정한 날짜 기준으로 조회 (fromDate-toDate)
  • couterPerPage: 한 번에 조회할 아이템의 개수 (default = 1000, max = 1000)
  • page: 조회할 페이지 번호 (default = 1)
POST /api/v2/projects JSON Project 생성을 위한 API. 생성된 project ID가 리턴됨

  • additional Information: 프로젝트의 추가 정보
  • distributionSite: 배포 사이트 선택 (/api/v2/codes 값으로 입력)
  • distributionType: 배포 타입 선택 (/api/v2/codes 값으로 입력)
  • networkServerType: 네트워크 서버 여부 선택
  • noticeType: 고지문 타입 선택 (/api/v2/codes 값으로 입력)
  • noticeTypeEtc: Platform-generate인 경우 타입 선택 (/api/v2/codes 값으로 입력)
  • (required) osType: OS 타입 선택 (/api/v2/codes 값으로 입력)
  • osTypeEtc: 추가적인 OS 타입 정보
  • priority: 프로젝트의 긴급 여부에 따라 우선순위 선택 (/api/v2/codes 값으로 입력)
  • (required) prjName: 프로젝트 이름
  • prjVersion: 프로젝트 버전
  • publicYn: View Permission 정보 (Y: Everyone, N: Creator & Editor) (default = Y)
  • userComment: 유저 커맨트
GET /api/v2/projects/models JSON Project의 모델 정보 조회

  • (required) prjIdList: 조회할 대상인 project ID 정보. list형태로 입력 가능
DELETE /api/v2/projects/{id} JSON Project를 삭제함 (Distribution 진행되지 않은 프로젝트만 삭제 가능)

  • (required) id: 기준 project ID
GET /api/v2/projects/{id}/bom/compare-with/{compareId} JSON Project BOM Compare

  • (required) compareId: 비교할 project ID
  • (required) id: 기준 project ID
GET /api/v2/projects/{id}/bom/file JSON Project BOM export - 파일 형태로 다운로드

  • (required) format: 추출할 파일 포맷
  • (required) id: 대상 project ID
  • saveFlag: API 실행 시점의 정보로, BOM을 최신화 할지 여부 선택 (default = Y)
GET /api/v2/projects/{id}/bom/json-data JSON Project BOM export - JSON 형태로 받음

  • (required) id: 대상 project ID
  • saveFlag: API 실행 시점의 정보로, BOM을 최신화 할지 여부 선택 (default = Y)
POST /api/v2/projects/{id}/editors JSON Project에 editor를 추가함

  • (required) emailList: 추가할 editor의 이메일 정보
  • (required) id: 대상 project ID
POST /api/v2/projects/{id}/models JSON Model 정보 문자열 목록을 통해 Project의 Model 정보를 업데이트합니다.
(단, Model을 추가할 뿐 Distribute 되지는 않습니다. Model 정보를 추가 후 Distribute가 필요한 경우 Distribution탭으로 이동 후 Distribute 진행해주시기 바랍니다.)

  • (required) id: 대상 project ID
  • (required) modelListToUpdate: Model 정보 문자열 목록 (format: MODEL_NAME|Category|Release Date)
    - ex. MODEL_NAME|ETC > Etc|20220428
POST ​/api​/v2​/projects​/{id}​/models​/upload JSON Model List 엑셀 파일을 통해 Project의 Model 정보를 업데이트합니다.
(단, Model을 추가할 뿐 Distribute 되지는 않습니다. Model 정보를 추가 후 Distribute가 필요한 경우 Distribution탭으로 이동 후 Distribute 진행해주시기 바랍니다.)

  • (required) id: 대상 project ID
  • (required) modelReport: Model List의 엑셀 파일 : Project > Project Information 탭 > Download 버튼 클릭
모델 리스트 엑셀 파일
GET /api/v2/projects/{id}/notice JSON Notice 파일을 받을 project ID

  • (required) id: 대상 project ID
POST /api/v2/projects/{id}/packages JSON Project에 package 파일 업로드

  • packageFile: 업로드할 패키지 파일
  • (required) id: 대상 project ID
  • verifyFlag: 업로드 한 파일에 대해 verify 진행 여부 (default = N)
GET /api/v2/projects/{id}/security/json-data JSON Project에서 검출된 보안취약점 정보를 JSON 형태로 받음

  • (required) id: 대상 project ID
POST /api/v2/projects/{id}/{tab_name}/oss-load - Project에 이전 프로젝트에서 리뷰된 오픈소스 정보를 로드함 (Identification confirm 된 프로젝트만 로드 가능)

  • (required) id: 대상 project ID
  • prjToLoad: 로드할 프로젝트 ID (search condition이 id인 경우 입력)
  • prjNameToLoad: 로드할 프로젝트 이름 (search condition이 name인 경우 입력)
  • prjVersionToLoad: 로드할 프로젝트 버전 (search condition이 name인 경우 입력)
  • resetFlag: 로드 할 때, 기존 입력된 정보들을 Reset할지 여부 (default = Y)
  • (required) searchCondition: 로드할 프로젝트를 검색하는 기준
  • (required) tab_name: 대상 탭 이름 (bin/dep/src)
POST /api/v2/projects/{id}/{tab_name}/reports - Project에 오픈소스 분석된 리포트 파일을 업로드함

  • ossReport: 업로드할 리포트 파일
  • comment: 사용자 comment
  • (required) id: 대상 project ID
  • resetFlag: 파일 업로드 시, 기존 입력된 정보들을 Reset할지 여부 (default = Y)
  • sheetNames: 업로드할 리포트 파일에서 특정 sheet name을 업데이트 하고자 하는 경우 입력. 입력하지 않는 경우 기본으로 DEP, SRC, BIN prefix에 맞춰서 정보를 불러옴. , 로 구분하여 여러 Sheet를 입력 가능
  • (required) tab_name: 대상 탭 이름
POST /api/v2/projects/{id}/{tab_name}/reset - Project > Identification에서 선택한 탭을 reset함

  • (required) id: 대상 project ID
  • (required) tab_name: 대상 탭 이름

4. Vulnerability 정보 조회

API 응답 형식 설명
GET /api/v2/max-vulnerabilities JSON OSS Name, Version별 max score와 CVE ID를 확인할 링크 조회

  • (required) OSS Name: 조회할 open source 이름
  • OSS Version: 조회할 open source 버전
GET /api/v2/vulnerabilities JSON CVE ID별 또는 OSS Name, Version별 CVE ID, CVSS Score, CVE ID Link, OSS 정보(OSS name, OSS version, Nickname)를 조회합니다.

  • cveId: 조회할 CVE ID
  • ossName: 조회할 open source 이름
  • ossVersion: 조회할 open source 버전

5. Self-Check 생성, FOSSLight Report 등록

API 응답 형식 설명
POST /api/v2/selfchecks JSON Self-Check Project를 생성하고, 생성된 Self-Check ID를 return 받음

  • (required) prjName: Self check project 이름
  • prjVersion: Self check project 버전
GET /api/v2/selfchecks/{id} JSON Self-Check project 조회

  • (required) id: 조회할 self check project ID
GET /api/v2/selfchecks/{id}/bom/file FILE Self-Check에서 Export한 결과 파일을 다운로드

  • (required) id: 조회할 self check project ID
POST /api/v2/selfchecks/{id}/editors - Self-Check에 Editor를 추가

  • (required) emailList: 추가할 editor의 이메일 정보
  • (required) id: 대상 project ID
POST /api/v2/selfchecks/{id}/report - Self-Check에 오픈소스 분석된 리포트 파일을 업로드함

  • ossReport: 업로드할 리포트 파일
  • (required) id: 대상 self check project ID
  • resetFlag: 파일 업로드 시, 기존 입력된 정보들을 Reset할지 여부. N - 기존 OSS Table에 입력된 사항을 유지한 채 append (default = Y)
  • sheetNames: 업로드할 리포트 파일에서 특정 sheet name을 업데이트 하고자 하는 경우 입력. 입력하지 않는 경우 기본으로 DEP, SRC, BIN prefix에 맞춰서 정보를 불러옴. ,로 구분하여 여러 Sheet를 입력 가능

6. API 활용시, Code 값 확인

API 응답 형식 설명
GET /api/v2/codes JSON Project, 3rd Party 조회, Project 생성 시 사용할 Parameter의 값 List를 조회합니다.

  • (required) codeType: 코드를 조회하고 싶은 카테고리에 대해 약어로 입력합니다.
    • Division: DIV
    • OS Type: OS
    • Distribution Type: DSTT
    • Distribution Site: DSTS
    • Notice Type: NOTI
    • Notice Platform: NP
    • Priority: PRI
  • detailValue: codeType에 입력한 category 내의 상세값 입력

7. Binary DB 정보 조회

API 응답 형식 설명
GET /api/v2/binaries JSON Binary DB에서 하기 정보를 기준으로 조회합니다.

  • Binary Name
  • Checksum
  • TLSH
  • License
  • Download Location
  • OSS Name
  • OSS Version
  • Project Name

8. Compliance Status

API 응답 형식 설명
(enterprise only)POST /api/v2/compliance/3rdparty-status JSON Compliance Status > 3rd Party Status 검색 기능으로 3rd Party 생성 날짜와 Division으로 조회합니다.

  • division: (/api/v2/codes 값으로 입력)
  • schEndDate: 검색할 범위 (생성날짜 기준)
  • schStartDate: 검색할 범위 (생성날짜 기준)
(enterprise only)POST /api/v2/compliance/product-status JSON Compliance Status > Product Status 검색 기능으로 Project 생성 날짜, Model release date와 Division으로 조회합니다.

  • division: (/api/v2/codes 값으로 입력)
  • modelDistributedEndDate: 검색할 범위 (배포 날짜 기준)
  • modelDistributedStartDate: 검색할 범위 (배포 날짜 기준)
  • modelListInfo: 검색할 모델 정보
  • schEndDate: 검색할 범위 (생성날짜 기준)
  • schStartDate: 검색할 범위 (생성날짜 기준)

오류코드

Error 발생 시 HTTP Response Code가 2xx 이외의 값이 리턴 됩니다.