사용자 API 가이드
오소리 프로젝트가 사용자에게 제공하는 API 사용법에 대해서 설명합니다.
API 사용 제한: 오소리 사용자 API는 다음과 같은 사용제한이 걸려 있습니다.
한시간당 최대 5,000번 이상의 API 호출이 시도되면, Too Many Request 예외가 발생합니다.
사용자 API URL 주소
오소리 사용자 API v1.0 (Swagger UI): 링크
라이선스 목록 조회
/api/v1/licenses
오소리에 등록되어 있는 라이선스 정보를 조회할 수 있는 API 입니다.
Query 매개변수 정보
매개변수 이름 | 세부 설명 |
---|---|
name | 라이선스 이름 예) MIT License |
spdxIdentifier | spdx 라이선스 identifier 예) MIT |
webpage | 라이선스 고지문 URL 주소 예) https://opensource.org/licenses/MIT |
equalFlag | 검색결과 대상을 지정할 때 사용합니다. - ‘Y’: 검색어가 정확히 일치하는 검색 결과 표시 - ‘N’(기본값): 검색어가 포함된 모든 검색 결과 표시 |
modifiedDate | 수정일 |
page | 시작 page 숫자(필수값) - 기본값: 0 |
size | page에서 가져올 데이터 개수(필수값) |
sort | 정렬 기준 항목(필수값) 정렬 기준에 사용할 수 있는 항목은 아래와 같습니다. - name - nickname - id - version - oss_version_id |
direction | 정렬 방향 - ASC: 오름차순 (기본값) - DESC: 내림차순 |
사용 예제
curl –location –request GET ‘https://{osori_base_url}/api/v1/licenses?name=MIT%20License&equalFlag=Y&page=0&size=1&sort=name&direction=ASC
응답 Header
Content-Type application/json
응답 Body
{
"code": "200",
"messageList": {
"list": [
{
"id": 24,
"name": "MIT License",
"obligation_disclosing_src": "NONE",
"obligation_notification": true,
"osi_approval": false
}
],
"count": 1
},
"success": true
}
응답 항목 의미
이름 | 의미 |
---|---|
code | API 응답 상태값 200: 성공 |
id | 조회 대상의 ID (primary Key) |
name | 라이선스 이름 |
obligation_disclosing_src | 배포시 소스 코드 공개 범위 - NONE - ORIGINAL - FILE - MODULE - LIBRARY - DERIVATIVE WORK - EXECUTABLE - DATA - SOFTWARE USING THIS - UNSPECIFIED |
obligation_notification | 배포시 고지 의무 - false : 고지 의무 없음 - true : 고지 의무 있음 |
osi_approval | OSI에서 승인한 라이선스인지 여부 (https://opensource.org/licenses/) |
count | 조회된 항목 전체 개수 |
success | API 동작 결과 - false : 실패 - true : 성공 |
라이선스 상세 정보 조회
/api/v1/licenses/{category}?searchWord={search keyword}
오소리에 등록되어 있는 라이선스 상세 정보를 조회할 수 있는 API 입니다.
Query 매개변수 정보
매개변수 이름 | 세부 설명 |
---|---|
category | 검색에 사용할 항목을 선택 - name - spdx_identifier - url |
searchWord | 검색에 사용할 단어를 입력합니다. 예) MIT |
사용 예제
curl –location –request GET ‘https://{osori_base_url}/api/v1/licenses/spdx_identifier?searchWord=MIT
응답 Header
Content-Type application/json
응답 Body
{
"code": "200",
"messageList": {
"detailInfo": [
{
"id": 63,
"name": "MIT License",
"obligation_disclosing_src": "NONE",
"obligation_notification": true,
"spdx_identifier": "MIT",
"webpage": null,
"description": "To distribute the software, copyright and license notice is required.\n\n",
"description_ko": null,
"license_text": "Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.",
"osi_approval": false,
"modifier": "soim",
"created_date": "2023-10-16 10:08:58",
"modified_date": "2023-10-17 21:51:33",
"reviewed": true,
"nicknameList": [
"Bouncy Castle Licence",
"The MIT License",
"The MIT License (MIT)"
],
"webpageList": [
"https://spdx.org/licenses/MIT.html"
],
"restrictionList": null
}
]
},
"success": true
}
응답 항목 의미
이름 | 의미 |
---|---|
code | API 응답 상태값 200: 성공 |
id | 조회 대상의 ID (primary Key) |
name | 라이선스 이름 |
obligation_disclosing_src | 배포시 소스 코드 공개 범위 - NONE - ORIGINAL - FILE - MODULE - LIBRARY - DERIVATIVE WORK - EXECUTABLE - DATA - SOFTWARE USING THIS - UNSPECIFIED |
obligation_notification | 배포시 고지 의무 - false : 고지 의무 없음 - true : 고지 의무 있음 |
spdx_idetifier | spdx identifier 이름 |
webpage | 라이선스 url |
description | 라이선스에 대한 설명 |
license_text | 라이선스 고지문 |
osi_approval | OSI에서 승인한 라이선스인지 여부 (https://opensource.org/licenses/) |
reviewed | 오소리 운영 위원회로부터의 라이선스 리뷰 여부 - false : 리뷰 안됨 - true : 리뷰 완료 |
nicknameList | 라이선스의 별명 목록 |
webpageList | 라이선스 고지문 출처 등 url 목록 |
restrictionList | 라이선스가 가지고 있는 제약사항 목록 |
오픈소스 목록 조회
/api/v1/oss
오소리에 등록되어 있는 오픈소스 정보를 조회할 수 있는 API 입니다.
Query 매개변수 정보
매개변수 이름 | 세부 설명 |
---|---|
ossName | 오픈소스 이름 |
version | 오픈소스 버전 정보 |
downloadLocation | 오픈소스 다운로드 URL 주소 예) github/aerogear-attic/aerogear-android-stor |
equalFlag | 검색결과 대상을 지정할 때 사용합니다. - ‘Y’: 검색어가 정확히 일치하는 검색 결과 표시 - ‘N’(기본값): 검색어가 포함된 모든 검색 결과 표시 |
modifiedDate | 수정일 |
page | 시작 page 숫자(필수값) - 기본값: 0 |
size | page에서 가져올 데이터 개수(필수값) |
sort | 정렬 기준 항목(필수값) 정렬 기준에 사용할 수 있는 항목은 아래와 같습니다. - name - nickname - id - version - oss_version_id |
direction | 정렬 방향 - ASC: 오름차순 (기본값) - DESC: 내림차순 |
사용 예제
curl –location –request GET ‘https://{osori_base_url}/api/v1/oss?ossName=android&equalFlag=Y&page=0&size=10&sort=name&direction=ASC
응답 Header
Content-Type application/json
응답 Body
{
"code": "200",
"messageList": {
"list": [
{
"oss_master_id": 8681,
"name": "aerogear-android-store",
"version": [
{
"version": "4.0.0",
"version_id": "8259",
"declaredLicense": null
}
],
"version_license_diff": "false",
"purl": "pkg:github/aerogear-attic/aerogear-android-store"
}
],
"count": 1
},
"success": true
}
응답 항목 의미
이름 | 의미 |
---|---|
code | API 응답 상태값 200: 성공 |
oss_master_id | 오픈소스 ID (primary Key) |
name | 오픈소스 이름 |
version_id | 오픈소스 버전 ID (primary key) |
version | 오픈소스 버전 정보 |
declaredLicense | 오픈소스 버전에 정의된 대표 라이선스 |
detectedLicense | 오픈소스 버전에 추가로 발견된 라이선스 |
version_license_diff | 오픈소스가 가지고 있는 버전별로 라이선스가 다른 경우: true |
purl | OSS 대표 링크에 대한 purl (https://github.com/package-url/purl-spec) |
count | 조회된 항목 전체 개수 |
success | API 동작 결과 - false : 실패 - true : 성공 |
오픈소스 상세 정보 조회
/api/v1/oss/{category}/versions?searchWord={search keyword}
오소리에 등록되어 있는 오픈소스의 상세 정보를 조회할 수 있는 API 입니다.
Query 매개변수 정보
매개변수 이름 | 세부 설명 |
---|---|
category | 검색에 사용할 항목을 선택 - name - download_location |
searchWord | 검색에 사용할 단어를 입력합니다. 예) facebook |
사용 예제
curl –location –request GET ‘https://{osori_base_url}/api/v1/oss/name/versions?searchWord=facebook
응답 Header
Content-Type application/json
응답 Body
{
"code": "200",
"messageList": {
"detailInfo": {
"oss_master": [
{
"oss_master_id": 5901,
"name": "facebook",
"download_location": "https://github.com/huandu/facebook",
"purl": "pkg:github/huandu/facebook",
"homepage": null,
"description": null,
"compliance_notice": null,
"compliance_notice_ko": null,
"version_license_diff": false,
"attribution": null,
"publisher": null,
"downloadLocationList": [],
"purlList": [],
"nicknameList": [
"huandu/facebook"
],
"modifier": "sean.gold",
"modified_date": "2023-10-20 17:08:26",
"created_date": "2023-10-20 17:08:25",
"oss_version": [
{
"oss_version_id": 14740,
"version": "2.3.1+incompatible",
"description": null,
"description_ko": null,
"attribution": null,
"license_combination": null,
"release_date": null,
"modifier": "sean.gold",
"declaredLicenseList": [
"MIT License"
],
"detectedLicenseList": null,
"restrictionList": null,
"created_date": "2023-10-20 17:08:26",
"modified_date": "2023-10-20 17:08:26"
}
]
}
]
}
},
"success": true
}
응답 항목 의미
이름 | 의미 |
---|---|
code | API 응답 상태값 200: 성공 |
oss_master_id | 오픈소스 ID (primary Key) |
name | 오픈소스 이름 |
download_location | 오픈소스 URL 주소 |
purl | OSS 대표 링크에 대한 purl (https://github.com/package-url/purl-spec) |
homepage | 오픈소스 홈페이지 URL |
description | 오픈소스에 대한 부가 설명 |
compliance_notice | 오픈소스 제약 사항에 대한 설명 (항목이 있을 때만 값이 존재) |
version_license_diff | 오픈소스가 가지고 있는 버전별로 라이선스가 다른 경우: true |
attribution | 별도로 Notification이 필요한 사항 |
publisher | 배포자 또는 소유자 (또는 단체) |
downloadLocationList | 오픈소스를 다운로드 받을 수 있는 URL 리스트 예) http://github.com 등 |
nicknameList | OSS를 일컫는 또 다른 이름 |
oss_version | 오픈소스 버전 리스트 |
oss_version_id | 오픈소스 버전 ID (primary key) |
version | 버전 정보 |
description | 버전별 요약 설명 (영문) |
attribution | 별도로 Notification이 필요한 사항 |
license_combination | declaredLicenseList에 기술된 라이선스들 사이의 논리적 결합 관계 (입력 가능 값 : AND, OR, null) |
declaredLicense | 오픈소스 버전에 정의된 대표 라이선스 |
detectedLicense | 오픈소스 버전에 추가로 발견된 License |
restrictionList | 제약 조건 목록 |