인증
모든 요청에 토큰을 보내고, 토큰이 허용하는 것을 확인하고, 거부된 요청을 해결합니다.
모든 요청에는 터미널의 토큰이 들어갑니다. 토큰은 주문 넣기를 포함해 터미널 창이 할 수 있는 모든 일을 허용합니다.
토큰 보내기
curl -H "Authorization: Bearer $SPECTRE_LOCAL_API_TOKEN" http://127.0.0.1:48180/v1/meta토큰은 spt_ 뒤에 16진수 문자 64개가 붙은 형태입니다. HTTP 요청과
WebSocket 핸드셰이크 모두 Authorization: Bearer 헤더로만 보냅니다.
URL에 넣은 토큰은 받지 않습니다.
클라이언트는 헤더를 대신 추가하고, 오류 메시지와 로그에 토큰이 남지 않게 합니다. 토큰을 복사하는 방법은 토큰 받기를 참고하십시오.
토큰이 허용하는 것 확인하기
meta = terminal.meta()
print(meta.scopes)호출에는 해당 영역의 권한이 필요하며, 토큰은 모든 권한을 가집니다. 거래용 스위치는 따로 없습니다. Local API 스위치가 유일한 스위치입니다.
| 권한 | 허용하는 것 |
|---|---|
market:read | 시장 데이터를 읽습니다. 스트림을 엽니다. |
connections:read | 연결을 읽습니다. |
account:read | 주문, 포지션, 잔고, 체결 내역, 레버리지를 읽습니다. |
trading:write | 주문과 트리거 주문을 넣고 취소합니다. 포지션을 청산합니다. 레버리지와 마진 모드를 설정합니다. |
workspace:read | 레이아웃을 읽습니다. |
workspace:write | 스택, 탭, 창을 열고, 닫고, 선택합니다. |
settings:read | 설정을 읽습니다. |
settings:write | 설정을 변경합니다. |
읽기 권한은 해당 영역의 스트림 토픽에도 적용됩니다. meta()와 health()는
유효한 토큰이면 모두 동작합니다. 이전 버전의 터미널은 자신이 가진 권한만
나열합니다.
요청이 거부될 때
| 상황 | 받는 응답 | 대처 방법 |
|---|---|---|
| 토큰이 없거나, 틀렸거나, API가 꺼져 있음 | 401 unauthorized | 현재 토큰을 복사하고 API가 켜져 있는지 확인합니다 |
브라우저 페이지가 보내는 것처럼 요청에 Origin 헤더가 있음 | 403 forbidden | 스크립트나 프로그램에서 호출합니다 |
주소가 127.0.0.1이나 localhost가 아님 | 403 forbidden | 127.0.0.1을 사용합니다 |
| 토큰에 해당 호출의 권한이 없음 | 403 forbidden_scope | meta().scopes를 확인하고 터미널을 업데이트합니다 |
클라이언트는 같은 코드로 ApiError를 발생시킵니다. 모든 코드는
오류에 있습니다.
토큰 교체
Settings App → 일반 → Local API에서 토큰 재발급을 누릅니다. 이전
토큰은 즉시 동작을 멈춥니다. 요청은 401을 받고, 열려 있는 스트림은 코드
1001로 닫힙니다.
터미널에는 토큰이 하나뿐이므로, API를 쓰는 모든 프로그램에 새 토큰이 필요합니다.
토큰 안전하게 보관하기
토큰은 그것이 필요한 프로그램의 환경 변수나 비밀 저장소에 보관합니다. 소스 코드, 커밋되는 설정 파일, 채팅에는 넣지 않습니다. 유출되면 재발급합니다.
API는 거래소 키를 마스킹된 형태로도 절대 반환하지 않습니다.