Overview

1. General

1.2. Api Gateway

Api Gateway

Api Gateway 는 pasta 로 이관되었습니다.
개발계 A/G 는 https://prism.pasta-dev.navercorp.com/api-gateway/consumers/10006 여기서 확인가능합니다.
리얼(stage 포함)계 A/G 는 https://prism.pasta.navercorp.com/api-gateway/consumers/10036 에서 확인가능합니다.
Auth API 는 auth-api prism-auth-api 라는 providerId 로 제공합니다.
모든 API 는 hmac 인증키가 필요합니다.

1.3. Response Rule

  • HTTP Status code 로 먼저 분기합니다.

  • 200ok 의 경우,

    • Response 는 Object 또는 Array 타입의 객체가 내려갑니다.

 {
   "nickname" : "AnyNickName",
   "profileThumbnailUrl" : null,
   "authType" : "email",
   "token" : "JDKo9/0iyjlJceU/b1J11wVk1ZxJTz/I+16Vj0Idgvo2MmM/AitdPbbdI1yrS4o7i+2Rj8WLE1zr66DmOSXhYiz51mTZ2eCQ5SIooNQiGIpbqnBNokBE/l5Nfjkj7NiwnpBb3algIuxSK+LBBiQ/nj7L2i7GaPORSHo6M7S8veu07HsNL0Btl1q52QQ8q1HZnYa6ozfZuXhDfDu1i89bV7RNVjfigD20YoDcqbXTgyqkPBcWeq7CVZdsaIT1fNh6UeA+7/M67B6gf656yBnCjgTJBBx+MRINt3xtzpzPHvNJJP+RWOxD9yckEQxWuwHVP0fo8zWzwtfCoQojhzolnvpyueAGKfLPuYbtTTUyNpc=",
   "authStatusCode" : "USE"
 }
  • 그 외의 경우,

    • code, exception, message, param 필드를 응답합니다.

    • 서버에서 미리 파악한 예외로직의 경우엔 미리 정해놓은 code 와 readable exception name, 그리고 다국어지원 message 를 응답합니다.

    • 이때 필요에 따라 param 필드에 Map 형태의 데이터와 함께 응답할 수 있습니다.

    • 서버에서 미처 파악하지 못한 예외의 경우, (ex. NullPointerException) Http Status Code 는 500, code 필드는 -1, readable exception name, 시스템언어(영어)로 된 message 가 응답으로 내려갑니다.

{
   "code" : 120,
   "exception" : "NotImplementedException",
   "message": "login failure",
   "param": {
      "key": "value"
   }
}

1.4. HTTP Request Header

key value optional description default

Content-Type

application/json;charset=utf-8

false

application/x-www-form-urlencoded;charset=utf-8 은 받아들이지 않습니다.

Accept-Language

https://tools.ietf.org/html/rfc7231#section-5.3.5

true

{language iso code}-{iso 2digit country code} message 국제화에 사용됩니다.

ko-KR

X-prism-ip

ex) 111.91.137.58

true

강제로 IP 를 셋팅하기 위해서 사용합니다 (보통 debug 용)

X-prism-mcc

https://en.wikipedia.org/wiki/Mobile_country_code

true

mobile country code 값 (450 이런거)

450 (한국)

X-prism-cc

http://kirste.userpage.fu-berlin.de/diverse/doc/ISO_3166.html

true

country code iso 2digit code, 이 값이 없으면 Accept-Language 값에 명시된 country code 부분을 읽어와 셋팅합니다

KR

X-prism-os

ex) Android 7.1.0, iOS10.3.1

false

App 에서 사용하는 os 값 (os version 도 포함)

X-prism-device

ex) LGE LG-F700S, iPhone7,2

false

App 에서 사용하는 device 정보

X-prism-appversion

ex) 0.9.0.20

false

App 에서 사용하는 app version 정보

X-prism-usercode

ex) PrB2

true

Debug 용 기능입니다. neoid access token 을 구하기 힘들때 로그인을 통해 알고있던 userCode 를 헤더값으로 보내면 neo_ses 쿠키값이 없어도 됩니다.

1.5. HTTP verbs

Verb Usage

GET

DB 수정없이 데이터를 가져올 경우를 의미합니다

POST

새로운 DB 가 생성될 경우를 의미합니다

PUT

DB 수정이 있을 경우를 의미합니다

DELETE

DB 삭제가 일어날 경우를 의미합니다

2. init

Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/init-docs/init/section.adoc[]

3. Email Auth APIs

Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/email-auth-docs/simple-join/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/email-auth-docs/simple-login/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/email-auth-docs/change-pw/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/email-auth-docs/reset-password/section.adoc[]

4. Sns Auth APIs

4.1. Join Or Login

POST /auth/sns/joinLogin

sns 인증을 통해 자동로그인 및 자동가입-로그인을 지원합니다.

4.1.1. Request fields

Path Type Optional Description

snsCd

String

false

sns code.
Must be one of [naver, line, facebook, twitter, google].

accessToken

String

false

앱이나 웹을 통해 얻어온 accessToken.

accessTokenSecret

String

true

accessToken 에 대한 secret key 값이 존재하는 경우.

refreshToken

String

true

refreshToken 을 얻어올 수 있는 경우.

email

String

true

앱에서 sns 앱으로 부터 얻은 email 주소를 별도 등록 (oauth api 로 email 주소를 못가져오는 경우가 많음).
Well-formed Email.

nickname

String

true

sns 앱으로 부터 얻은 닉네임, (oauth api 이용해서 보통 얻을 수 있어서 생략해도됨).

profileThumbnailUrl

String

true

sns 앱으로 부터 얻은 profile 이미지 url, (oauth api 이용해서 보통 얻을 수 있어서 생략해도됨).

agreement

Boolean

true

약관에 모두 동의한 경우엔 true 를 보내주세요. 아니면 비워두거나 false 로 주셔도 됩니다. 이미 가입이 되어 있는 경우엔 해당 값을 사용하지 않습니다.

4.1.2. Response fields

Path Type Optional Description

nickname

String

false

닉네임.

userCode

String

false

Encoding 된 UserSeq.

email

String

true

email.

profileThumbnailUrl

String

true

프로필이미지.

authType

String

true

계정타입 (email, facebook, naver, line..).

token

String

true

Access Token.

authStatusCode

String

true

계정상태코드.

prismLevel

String

true

prism level (null, SUPER_USER).

4.1.3. Response Cookies

cookie name description

NEO_SES

인증에 사용되는 토큰 값이 내려갑니다.

4.1.4. Example request

$ curl 'http://dev-auth.prism.navercorp.com/auth/sns/joinLogin' -i -X POST -H 'Content-Type: application/json;charset=UTF-8' -d '{
  "snsCd" : "facebook",
  "accessToken" : "EAAPAekWvn4kBAMFkb4gc5Su3RGlLNcTF4H9xnAuD6GLiZCKtnwZBsavbeH3k8jgqdMBxsulUTlooPnhdyYqbqydB1aNNK4ZAdEzZApZBp16fI2ugMmI6hWsfuIWLluZAGMQuGCoS7BnHDq7rJkkwBnZBQy4beTbABR43sUZALzZBFU0igY5HRvV99ZAWOXpHuZB4ba2YOvM8EOUSBZBRNdZBtqpOcamCP0NeFbgWhkHX2WuEBnZAZC2hltouF5z",
  "accessTokenSecret" : null,
  "refreshToken" : null,
  "email" : "majbbjeght_1510044105@tfbnw.net",
  "nickname" : null,
  "profileThumbnailUrl" : null
}'

4.1.5. Example response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 787

{
  "nickname" : "Linda Albbhjihijggh Dingleescu",
  "userCode" : "Pr539F",
  "email" : "majbbjeght_1510044105@tfbnw.net",
  "profileThumbnailUrl" : "https://scontent.xx.fbcdn.net/v/t1.0-1/c15.0.50.50/p50x50/1379841_10150004552801901_469209496895221757_n.jpg?oh=b5a77c94ba1b6c649a3b051e9db58d61&oe=5A681333",
  "authType" : "facebook",
  "token" : "peI4QP4NB1bi9c+VMJAz6LTluJxwmapoeG6MosPFRcFZBt32J0QmbQsEvHMtnj8FlMwD9+XWACZri80jPEDrJwWZhTwIEEbL20dbeaDc+FPVeC5f1HSe/BfVKlIys1QVxm/rj1ytFsSgbuXKQ6L15RRltgcIfF7vaTjIaUY0iUIYjTET3LkeURKH701QbctKPZxYDuw6CdlaW76b4JPSdHj0YLRpYNkTlxLAqLa0DdTyCcekW0tc6nJaB2N0v6Gh12XdS/vONtxmz3GaYFZ8HwWVatOf6VbqXc+rJfGG8wzBEXKX5bSGqFU2H+sgjCba/fCmlUUO/EnMvYrz7dwvBi/Z81dRs95XSNsEXh4bnyWQ7FJTYB3jqevFuL20+HMl",
  "authStatusCode" : "USE",
  "prismLevel" : null
}

4.1.6. Error Response

status code exception message param

202

10000

SignupNeedAgreementException

회원가입시 동의가 필요합니다

no param

501

-1

NotImplementedException

지원하지 않는 SNS 로그인

no param

500

-1

HardlyCauseException

NeoId 연동하다 잘발생하지 않는 에러

no param

500

-1

RuntimeException

some unexpected runtime exception

no param

5. Common Auth APIs

Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/auth-docs/logout/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/auth-docs/session/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/auth-docs/signout/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/auth-docs/profile/section.adoc[]

6. RTMP Publisher APIs

Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/add-rtmp-publish/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/update-rtmp-publish/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/list-rtmp-publish/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/list-rtmp-publish-v2/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/find-rtmp-publish/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/rtmp-publisher-docs/delete-rtmp-publish/section.adoc[]

7. User History

Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/history-docs/new-history/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/history-docs/thumb-history/section.adoc[] Unresolved directive in index.adoc - include::D:\IdeaProjects\auth\build\generated-snippets/history-docs/update-history/section.adoc[]

8. V 연동

8.1. GlobalV Platform Publisher

GET /publisher/mapping/globalv

V 계정연동을 위한 V 로그인 페이지로 redirect 합니다. V 로그인이 성공하면 Prism 으로 redirect 하여 토큰을 전송합니다. V 에서 prism 으로 redirect 되는 부분을 캐치하여 브라우저를 닫고 해당 URL 을 hmac 키와 함께 호출해주세요. (hmac 없이 해보려 했는데 답이 안나옵니다.. ㅜㅜ)

cookie name description optional

NEO_SES

join 또는 login 을 통해 받은 token 을 이용합니다. 혹은 response cookie 에 있는 값을 이용합니다.

false

8.1.2. Response fields

Path Type Optional Description

publisherType

String

false

platform publisher code.
Must be one of [google, facebook, globalv].

publisherAccessToken

String

false

해당 platform access_token.

8.1.3. Response Cookies

cookie name description

NEO_SES

인증에 사용되는 토큰 값이 내려갑니다.

8.1.4. Example request

브라우저로 쿠키를 담아 호출해주세요.

8.1.5. Example response

redirect 이후의 응답결과 포맷입니다.

HTTP/1.1 200 OK
P3P: CP="ALL CURa ADMa DEVa TAIa OUR BUS IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE LOC OTC"
Content-Type: application/json;charset=UTF-8
Content-Length: 314

{
  "publisherType" : "globalv",
  "publisherAccessToken" : "EAAPAekWvn4kBABFZAypZCTY9yIW8VZAxkV5M2JMMpsWkhmi4hN474mIUPrFxBVr71ZBQCFfZA55HA0okpFZBKPjCAqYZA5GVy8gyZB5FItpILjnKmn9WZCcfZCPrZAd2wLS9adUV7EyOzoxvbPkkOFgahpYe6ZCOQ2VMeGz1nppeknfHtUpCePrjGBMN5tiLF3AGbncWylXmgvR1Nuj2FZB5NCZASf5h0zFkj8HUxww1bxpvTNtAZDZD"
}

8.1.6. Error Response

status code exception message param

400

8100

NotVCelebException

V celeb 이 아닙니다

no param

400

8000

NeedVSignupException

V 회원가입이 필요한 유저입니다.

no param

500

-1

HardlyCauseException

NeoId 연동하다 잘발생하지 않는 에러

no param

500

-1

RuntimeException

some unexpected runtime exception

no param