7. Northbound API Specification¶
7.1. About Northbound API Specification¶
OVSE 플랫폼은 인증, 회사 및 단말 관리, 통계를 위한 Northbound API를 제공합니다.
7.2. REST API¶
OVSE northbound는 다음과 같은 REST API를 제공합니다. 상세한 내용은 OVSE Document 내용을 참고하시기 바랍니다.
구분
|
설명
|
Method
|
URL
|
|---|---|---|---|
| Auth | - 로그인
- 토큰 갱신
- 비밀번호 변경
- 임시비밀번호 변경
- 사용자 이메일 검색
|
POST
POST
POST
POST
POST
|
/api/auth/login
/api/auth/token
/api/auth/changePassword
/api/auth/resetPasswordByEmail
/api/auth/findUserEmail
|
| Company | - 회사 정보 등록
- 회사 정보 조회
- 회사 정보 수정
- 회사 삭제
- 내 회사 정보 조회
- 특정 Service Type에 속하는 회사 리스트 조회
- 등록된 전체 회사 수 조회
- 특정 Service Type에 속하는 회사의 수 조회
- 회사 관리자 등록
- 회사 관리자 수정
- 회사 관리자 삭제
- 회사 관리자 리스트 조회
- 소유한 단말 리스트 조회
- 특정 회사 모든 단말에 메시지 전달
|
POST
GET
PUT
DELETE
GET
GET
GET
GET
POST
PUT
DELETE
GET
GET
POST
|
/api/ovs/v1/company
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/me
/api/ovs/v1/companies
/api/ovs/v1/companies/all
/api/ovs/v1/companies/cnt
/api/ovs/v1/company/{companyId}/admin
/api/ovs/v1/company/{companyId}/admin/{adminId}
/api/ovs/v1/company/{companyId}/admin/{adminId}
/api/ovs/v1/company/{companyId}/admins
/api/ovs/v1/company/{companyId}/devices
/api/ovs/v1/company/{companyId}/message
|
| Device | - 단말 등록
- SerialNo로 단말 조회
- 단말 정보 조회
- 단말 정보 수정
- 단말 삭제
- 전체 단말 리스트 조회
- 특정 Service Type에 속하는 단말의 수 조회
- 소유한 전체 단말 수
- 단말별 메시지 전달
|
POST
GET
GET
PUT
DELETE
GET
GET
GET
POST
|
/api/ovs/v1/device
/api/ovs/v1/device
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/devices
/api/ovs/v1/devices/cnt
/api/ovs/v1/devices/owned/cnt
/api/ovs/v1/device/{deviceId}/message
|
| Stats | - 특정 회사 모든 단말의 기간별 이벤트 통계
- 특정 단말 기간별 이벤트 통계
|
GET
GET
|
/api/ovs/v1/company/{companyId}/statistics/event
/api/ovs/v1/device/{deviceId}/statistics/event
|
[API 리스트3]
구분
|
설명
|
Method
|
URL
|
SA
|
|---|---|---|---|---|
| Auth | - 로그인
- 토큰 갱신
- 비밀번호 변경
- 임시비밀번호 변경
- 사용자 이메일 검색
|
POST
POST
POST
POST
POST
|
/api/auth/login
/api/auth/token
/api/auth/changePassword
/api/auth/resetPasswordByEmail
/api/auth/findUserEmail
|
O
O
O
O
O
|
| Company | - 회사 정보 등록
- 회사 정보 조회
- 회사 정보 수정
- 회사 삭제
- 내 회사 정보 조회
- 특정 Service Type에 속하는 회사 리스트 조회
- 등록된 전체 회사 수 조회
- 특정 Service Type에 속하는 회사의 수 조회
- 회사 관리자 등록
- 회사 관리자 수정
- 회사 관리자 삭제
- 회사 관리자 리스트 조회
- 소유한 단말 리스트 조회
- 특정 회사 모든 단말에 메시지 전달
|
POST
GET
PUT
DELETE
GET
GET
GET
GET
POST
PUT
DELETE
GET
GET
POST
|
/api/ovs/v1/company
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/{companyId}
/api/ovs/v1/company/me
/api/ovs/v1/companies
/api/ovs/v1/companies/all
/api/ovs/v1/companies/cnt
/api/ovs/v1/company/{companyId}/admin
/api/ovs/v1/company/{companyId}/admin/{adminId}
/api/ovs/v1/company/{companyId}/admin/{adminId}
/api/ovs/v1/company/{companyId}/admins
/api/ovs/v1/company/{companyId}/devices
/api/ovs/v1/company/{companyId}/message
|
O
O
O
| O
O
O
O
O
O
O
O
O
O
O
|
| Device | - 단말 등록
- SerialNo로 단말 조회
- 단말 정보 조회
- 단말 정보 수정
- 단말 삭제
- 전체 단말 리스트 조회
- 특정 Service Type에 속하는 단말의 수 조회
- 소유한 전체 단말 수
- 단말별 메시지 전달
|
POST
GET
GET
PUT
DELETE
GET
GET
GET
POST
|
/api/ovs/v1/device
/api/ovs/v1/device
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/device/{deviceId}
/api/ovs/v1/devices
/api/ovs/v1/devices/cnt
/api/ovs/v1/devices/owned/cnt
/api/ovs/v1/device/{deviceId}/message
|
O
O
O
O
O
O
O
O
O
|
| Stats | - 특정 회사 모든 단말의 기간별 이벤트 통계
- 특정 단말 기간별 이벤트 통계
|
GET
GET
|
/api/ovs/v1/company/{companyId}/statistics/event
/api/ovs/v1/device/{deviceId}/statistics/event
|
O
O
|
SA: System Admin, CA: Company Admin, D: Director
7.3. Entity Model and Registration¶
REST API에서는 다음과 같은 Entity들이 정의되어 있으며, 세부 데이터 모델과 등록 방법은 :ref:`5. 구성요소(Entity) 등록 <entity-registration>`__ 내용을 참고하시기 바랍니다.
- Company
- Device
- Director
7.4. 인증 Authentication API¶
OVSE Northbound API 사용시 해당 API에 맞는 authentication API를 통해 token을 부여받고, 이를 header에 포함하여야 합니다.
[표 추가: company admin과 director간 호출가능한 API 분류 - 혹은 표에 추가] [ 혹은 company admin만 호출가능한 API 명시]
token을 받기 위한 authentication API는 아래와 같습니다.
| POST | /api/auth/login |
- Header
| option | Type | Default | Description |
|---|---|---|---|
| Content-Type | string | application/json | content type |
- Body
| Key | Type | Description |
|---|---|---|
| username | string | 로그인할 아이디(이메일) |
| password | string | 패스워드 |
- Example Code
Request
content-type:"application/json"
{
"username":"example@example.com",
"password":"1234"
}
Response (code: 200)
{
"token":"eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzeXNhZG1pbkB0aG…",
"refreshToken": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzeXNhZG1…"
}
요청이 성공하면(code:200) Response에서 인증 토큰으로 사용할 token 필드를 얻을 수 있습니다. Token 필드는 HTTP Header에 “X-Authorization”의 값으로 사용되며 로그인할 때마다 변경됩니다. 토큰이 있으면 해당 계정에 접근할 수 있으므로 외부 유출이 안되도록 주의해야 합니다. |br| 토큰을 얻었으면 회사 정보 등록 API를 통해 서비스를 등록합니다. |br|
7.5. 정보 조회 API¶
7.5.1. 회사 정보 조회¶
등록된 회사의 정보를 조회하는 API 입니다. 회사정보를 조회하기 위해서는 회사 Admin 계정으로 인증받은 token이 필요합니다. 관리자(Director) 계정으로는 회사 정보를 조회할 수 없습니다.
- Header
| option | Type | Default | Description |
|---|---|---|---|
| Content-Type | string | application/json | content type |
| X-authorization | string | auth token |
- Body
| Key | Type | Description |
|---|---|---|
| N/A | N/A | N/A |
- Example Code
Request
content-type:"application/json"
X-Authorization: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzeXNhZG1pbkB0aG…"
Response (code: 200)
{
"id": {
"id": "4813f210-73ab-11ea-ac0c-d950be57c747"
},
"createdTime": 1585699007148,
"name": "test_companyname_ovse2",
"serviceType": "test_servicetype_ovse2",
"picPasswd": "null",
"picName": "createcompanynam2e",
"picPhone": "010-1111-1234",
"picEmail": "test_servicetype_ovse2@sktint.com",
"picDivision": "team1",
"description": "additional description",
"tokenPrefix": "enh03"
}
회사ID가 등록되어있고, token이 유효한 경우 정상적으로 조회할 수 있습니다. 나의 소속 회사 ID를 모르는 경우, 소속 회사 조회 API로 검색 가능합니다. |br|
7.5.2. 내 회사 정보 조회¶
나의 계정정보와 내가 속한 회사의 Company ID를 조회하는 API 입니다.
| GET | /api/ovs/v1/company/me |
- Header
| option | Type | Default | Description |
|---|---|---|---|
| Content-Type | string | application/json | content type |
| X-authorization | string | auth token |
- Body
| Key | Type | Description |
|---|---|---|
| N/A | N/A | N/A |
- Example Code
Request
content-type:"application/json"
X-Authorization: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzeXNhZG1pbkB0aG…"
Response (code: 200)
token이 유효한 경우 정상적으로 조회할 수 있습니다.
7.5.3. 회사 관리자(Director) 리스트 조회¶
7.5.4. 단말 정보 조회¶
단말 ID를 통해 단말 정보를 조회하는 API 입니다.
| GET | /api/ovs/v1/device/{deviceId} |
- Header
| option | Type | Default | Description |
|---|---|---|---|
| Content-Type | string | application/json | content type |
| X-authorization | string | auth token |
- Body
| Key | Type | Description |
|---|---|---|
| N/A | N/A | N/A |
- Example Code
Request
content-type:"application/json"
X-Authorization: "Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJzeXNhZG1pbkB0aG…"
Response (code: 200)
token이 유효한 경우 정상적으로 조회할 수 있습니다.