사용자 연결하기 — 코드·QR·구독 링크
내 서비스의 사용자 한 명과 그 사람의 EosNoti 앱을 잇는 일입니다. 이 연결이 있어야 이미 쓰고 계신 사용자 아이디만으로 바로 보낼 수 있습니다.
연결이란 무엇인가
EosNoti는 토픽이 아니라 사람에게 보냅니다. 그래서 「내 서비스의 사용자 8821번」과 「그 사람 폰에 깔린 EosNoti 앱」을 한 번 묶어 둡니다. 묶는 열쇠는 external_id — 이미 쓰고 계신 내부 사용자 아이디를 그대로 쓰시면 됩니다. 매핑 테이블을 따로 만들 필요가 없습니다.
① 6자리 코드 — 기본 방법
화면에 6자리를 띄우고 사용자가 EosNoti 앱에 입력하면 연결됩니다. 코드는 10분짜리 1회용이라, 요청할 때마다 새로 발급하십시오. 발급한 쪽이 폴링으로 상태를 확인합니다.
API_KEY=<발급받은 api_key>
# 6자리 발급 — 내 사용자 아이디(external_id)를 실어 둔다
curl -s -X POST https://api.eosnoti.com/v1/pairing-codes \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{"external_id":"user_8821"}'
# ← {"code":"AB7K9P","url":"https://www.eosnoti.com/s/AB7K9P","expires_at":"..."}
# 연결될 때까지 이 하나만 두드린다 (코드 입력이든 QR 스캔이든 같은 폴링)
curl -s https://api.eosnoti.com/v1/pairing-codes/AB7K9P \
-H "Authorization: Bearer $API_KEY"
# ← {"status":"pending|redeemed|expired","subscription_id":...}사용자가 EosNoti 앱에서 코드를 먼저 받아 내 서비스 화면에 붙여 넣는 흐름도 됩니다. 로그인한 웹 화면에 입력란 하나만 두면 되니, 화면에 코드를 띄우기 어려울 때 쓰십시오.
# [역방향] EosNoti 앱이 보여 준 코드를 사용자가 내 화면에 입력 → 서버가 redeem
curl -s -X POST https://api.eosnoti.com/v1/pairing-codes/X9Q3MR/redeem \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{"external_id":"user_8821"}'
# ← {"subscription_id":"...","external_id":"user_8821"}
# 방향이 반대인 코드를 넣으면 409 wrong_direction, 만료·사용된 코드는 410 gone② QR — 같은 코드를 스캔으로
발급 응답의 url을 QR로 그리면 폰 기본 카메라로 찍어도 앱이 열립니다. 앱이 없으면 설치 안내로 넘어갑니다. 코드를 손으로 옮겨 적는 것보다 실수가 적어, 6자리와 QR을 나란히 두는 것을 권합니다. 확인용 폴링은 둘 다 같은 것 하나면 됩니다.
③ 구독 링크 — 화면이 닫혀도 사는 것
메일이나 문자로 보내는 경우처럼 연결 안내가 그 화면보다 오래 살아야 할 때 씁니다. ttl은 초 단위로 기본 24시간, 최대 30일입니다. 다만 상태 조회 경로가 없어 폴링이 안 되니, 화면을 띄워 두고 기다리는 자리에는 6자리 코드를 쓰십시오.
curl -s -X POST https://api.eosnoti.com/v1/subscribe-links \
-H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" \
-d '{"external_id":"user_8821","ttl":86400}' # ttl 초, 0/생략=24h
# 상한 30일(2592000) — 초과·음수는 400
# ← {"url":".../s/<code>","code":"<code>","expires_at":"..."}
# url을 문자·메일로 그대로 보낸다. 탭하면 앱이 열리고(미설치면 설치 안내로 폴백)
# 기기 등록·구독·external_id 바인딩까지 앱이 알아서 끝낸다.연결됐는지 조용히 확인하기
발송해 보지 않고도 확인할 수 있습니다. 쿼터를 쓰지 않고, 구독 중이든 아니든 200에 같은 스키마로 답합니다. 알림 설정 화면에 「연결됨 / 연결 안 됨」을 표시할 때 쓰십시오.
curl -s "https://api.eosnoti.com/v1/subscriptions/lookup?external_id=user_8821" \
-H "Authorization: Bearer $API_KEY"
# ← {"subscribed":true,"device_count":2,"push_enabled":true,"platforms":["ios","android"]}
# 미구독이면 {"subscribed":false,"device_count":0,"push_enabled":false,"platforms":[]}
# push_enabled=false 면 구독은 했는데 폰에서 알림을 꺼 둔 상태다로그아웃할 때 연결 끊기
사용자가 로그아웃하거나 알림을 끄면 external_id로 해제하십시오. 그 사용자의 모든 기기에서 한 번에 풀리고, 이미 풀려 있어도 200에 cleared 0으로 답하므로 로그아웃마다 그냥 부르셔도 됩니다.
curl -X DELETE "https://api.eosnoti.com/v1/subscriptions/external?external_id=user_8821" \
-H "Authorization: Bearer $API_KEY"
# ← {"status":"cleared","cleared":2} 이미 풀려 있어도 200 {"cleared":0}DELETE /v1/subscriptions/{id}/external사용자에게 보낼 안내가 필요합니까?
앱 설치·알림 허용·코드 입력까지 수신자가 해야 하는 일은 저희가 공개 페이지로 만들어 두었습니다. 직접 쓰지 마시고 이 링크를 그대로 보내십시오.
수신자용 안내 페이지 보기