REST API
Note
FOSSLight Hub의 기능을 REST API로 호출할 수 있습니다.
시작하기
TOKEN 발행
REST API를 호출하기 위해서 TOKEN을 발행해야 합니다.
- Admin 계정으로 로그인합니다.
- System > User Management 탭에서 User별로 Token을 발행할 수 있습니다.
REST API 테스트 도구
REST API 종류
1. OSS & License 정보 조회
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/downloadlocation_search | JSON | Download Location으로 OSS 정보를 조회합니다. |
/api/v1/license_search | JSON | License Name으로 License 정보를 조회합니다. |
/api/v1/oss_search | JSON | OSS Name, Version으로 OSS 정보를 조회합니다. |
2. 3rd Party 정보 조회
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/partner_search | JSON | 보기 권한이 있는 3rd Party에 대하여 하기 정보를 조회합니다. |
/api/v1/partner_watcher_add | - | 3rd Party의 Watcher를 추가합니다. |
3. Project 정보 조회, 생성, FOSSLight Report 등록, Packaging 파일 업로드, BOM Export, Project 비교
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/create_project | JSON | Project를 생성하고, 생성된 Project ID를 return 받습니다. |
/api/v1/model_search | JOSN | Project에 대하여 Model List를 조회합니다. (최대 Return Item 수 : 1000) - Project ID, Category, Model, Name, Release Date |
/api/v1/model_update | JSON | Model 정보 문자열 목록을 통해 Project의 Model 정보를 업데이트합니다. - Model 정보 문자열 목록 (format . MODEL_NAME|Category|Release Date) - ex) MODEL_NAME|ETC > Etc|20220428 |
/api/v1/model_update_upload_file | JSON | Model List 엑셀 파일을 통해 Project의 Model 정보를 업데이트합니다. - Model List의 엑셀 파일 : Project > Basic Information 탭 > Download 버튼 클릭 |
/api/v1/oss_report_bin | - | BIN 탭에 FOSSLight Report를 업로드합니다.이미 OSS Table이 작성된 경우, Reset한 후 업로드하는 FOSSLight Report를 반영합니다. (반영 Sheet Name: "BIN") |
/api/v1/oss_report_src | - | SRC 탭에 FOSSLight Report를 업로드합니다.이미 OSS Table이 작성된 경우, Reset한 후 업로드하는 FOSSLight Report를 반영합니다. (반영 Sheet Name : "SRC") |
/api/v1/package_upload | - | Packaging 탭에 Packaging 파일을 업로드합니다. 이미 Packaging 파일이 업로드되어 있는 경우, 추가로 Packaging 파일을 업로드합니다. Packaging 파일 업로드 결과가 Mail로 발송됩니다. |
/api/v1/prj_bom_compare | JSON | 두 개의 Project의 BOM의 OSS Name, OSS Version, License를 비교합니다. |
/api/v1/prj_bom_export | File | Project의 BOM에서 Export한 결과 파일을 다운로드 받습니다. |
/api/v1/prj_bom_export_json | JSON | Project의 BOM에서 Export한 결과를 json 포맷으로 return합니다. |
/api/v1/prj_search | JSON | 보기 권한이 있는 Project에 대하여 하기 정보를 조회합니다. |
/api/v1/prj_watcher_add | - | Project의 Watcher를 추가합니다. |
4. Vulnerability 정보 조회
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/vulnerability_data | JSON | OSS Name, Version별 CVE ID, CVSS Score, NVD Link를 조회합니다. |
/api/v1/vulnerability_max_data | JSON | OSS Name, Version별 max score와 CVE ID를 확인할 링크를 조회합니다. |
5. Self-Check 생성, FOSSLight Report 등록
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/create_selfcheck | JSON | Self-Check Project를 생성하고, 생성된 Self-Check ID를 return 받습니다. |
/api/v1/oss_report_selfcheck | - | Self-Check에 FOSSLight Report를 업로드합니다. 이미 OSS Table이 작성된 경우, Reset한 후 업로드하는 FOSSLight Report를 반영합니다.(반영 Sheet Name : "Self-Check") |
/api/v1/export_selfcheck | File | Self-Check에서 Export한 결과 파일을 다운로드 받습니다. |
/api/v1/selfcheck_watcher_add | - | Self-Check의 Watcher를 추가합니다. |
6. API 활용시, Code 값 확인
API | 응답 형식 | 설명 |
---|---|---|
/api/v1/code_search | JSON | Project, 3rd Party 조회, Project 생성시 사용할 하기 Parameter의 값 List를 조회합니다. |
7. Error code
Return Code | Description | Error Message |
---|---|---|
200 | TOKEN이 존재하지 않습니다. | User does not exist. |
210 | 사용자의 TOKEN이 정상적이지 않습니다. | There is an error in the TOKEN value. |
310 | Parameter가 잘못되었습니다. | The parameter is invalid. |
320 | Project, self-check의 create건수가 초과되었습니다.(API를 활용한 생성은 일일 최대 3건) | The number of projects and self-checks that can be created has been exceeded. (Up to 3 per day) |
330 | OSS Report등 파일을 등록할 경우 작성된 data에 대하여 validation check시 오류가 발생하였습니다. | There is an error in the data written in the file. |
400 | 업로드할 파일(ex-OSS Report, NOTICE, result.txt, Packaging 파일)을 누락하여 호출을 한 경우 | The file to upload is missing. |
410 | OSS Report, Packaging file의 size가 초과된 경우입니다.(최대 Size: OSS Report -5MB, Packaging file- 4GB) | File size exceeded. (Max size: 5MB for oss report, 4GB for packaging file) |
420 | 등록한 file들이 지원하지 않은 확장자입니다. | The registered files are extensions that are not supported. |
430 | 업로드할 Tab이 활성화되지 않았습니다.Distribution Type 및 업로드할 Tab을 확인하세요. | The tab you are trying to upload is not active. |
440 | Load 할 Sheet 명이 없는 경우 | The [Sheet_name] sheet name cannot be found |
440 | 업로드한 파일에 load할 row가 없는 경우 | There is no data to load. |
500 | 호출된 대상에 권한이 없습니다. (ex : public 이 아닌 Project를 Watcher 또는 Creator가 아닌 user가 조회할 경우) | You do not have permission. |
999 | 알수 없는 Error. | Unknown error. |
REST API 활용 Sample
prj_search 를 이용하여 user과 admin 계정의 Project 정보를 조회하는 예제
# SPDX-FileCopyrightText: Copyright 2023 LG Electronics Inc.
# SPDX-License-Identifier: Apache-2.0
import csv
import requests
from datetime import datetime
from collections import OrderedDict
header_list = ['prjId', 'prjName', 'prjVersion', 'createDate', 'updateDate', 'identificationStatus', 'verificationStatus', 'distributionStatus', 'status', 'vulnerabilityScore', 'distributionType', 'notice', 'networkService', 'priority', 'noticePlatform']
def get_data(period, user):
url = "https://demo.fosslight.org/api/v1/prj_search"
querystring = {"createDate":period,"creator":user}
payload = ""
headers = {"_token": "abCDe...."}
response = requests.request("GET", url, data=payload, headers=headers, params=querystring, verify=False)
# print(response.text)
data = response.json()['data']
content_list = data['content']
data_list = []
for content in content_list:
data = OrderedDict()
for header in header_list:
if header in content.keys():
data[header] = content[header]
else:
data[header] = ''
data_list.append(data)
return data_list
if __name__ == "__main__":
current_year = datetime.now().year
content_list = []
content_list.extend(get_data('20220101-{0}1231'.format(current_year), "user"))
content_list.extend(get_data('20220101-{0}1231'.format(current_year), "admin"))
content_list.sort(key=lambda x:x['prjId'],reverse=True)
with open('api_data.csv','w',encoding='utf-8',newline='') as f:
wr = csv.writer(f)
wr.writerow(header_list)
for content in content_list:
wr.writerow(list(content.values()))