Skip to content

Instantly share code, notes, and snippets.

@dj-shin
Last active February 5, 2017 07:42
Show Gist options
  • Save dj-shin/4ae086e03c5f048154adc61cc96a4854 to your computer and use it in GitHub Desktop.
Save dj-shin/4ae086e03c5f048154adc61cc96a4854 to your computer and use it in GitHub Desktop.
GongSee API

공씨 API 명세

1. 로그인 하기

[Request]

POST /login
Parameter Description Example
username SNU ID dyd1928
password SNU Password ...
auto 자동 로그인 여부 false

autotrue이면, usernamepassword는 필요없습니다
autotrue이면, 후술할 token이 필요합니다

[Response]

로그인이 성공했을 경우

{
  "result": true,
  "token": "나중에 엄청 써야 하는 토큰"
}

로그인 하기 이외의 API에는 HTTP Request Header에 위의 토큰이 포함되어야 합니다.

x-user-token=token

로그인에 실패했을 경우

{
  "result": false,
  "message": "실패 사유"
}

2. FCM 토큰 등록하기

로그인에 성공했으면, 푸시 알림을 위해서 FCM 토큰을 등록해야합니다. Firebase Cloud Messaging 문서를 참고하여 토큰을 발급받은 후 아래의 API로 우리 서버에 토큰을 보내주세요.

x-user-token을 싣는 것을 잊지 말아주세요.

[Request]

POST /fcm
Parameter Description
token (required) 발급받은 FCM 토큰

[Response]

{
  "success": 성공 여부
}

3. 공지 목록 가져오기

특정 게시판의 공지 목록을 가져옵니다

x-user-token을 싣는 것을 잊지 말아주세요.

[Request]

GET /notices
Parameter Description Example Remarks
board 볼 게시판 SNU 필수
count 가져올 글 개수 10 default = 15
max_id 이전 글 아이디
since_id 다음 글 아이디
query 검색어

게시판 코드는 다음을 참고하세요

게시판 이름 코드
마이스누 SNU
공과대학 ENG
건설환경공학부 CEE
기계공학전공 ME
우주항공공학전공 AER
재료공학부 MSE
전기정보공학부 EE
컴퓨터공학부 CSE
화학생물공학부 CBE
건축학부 ARC
산업공학과 IE
에너지자원공학과 ERE
원자핵공학과 NUC
조선해양공학과 SHI
경력개발센터 CAR
국제협력본부 OIA
장학/학자금지원안내 SCH

max_idsince_id에 대해서는 트위터 timeline API 문서를 참고하세요

대략적인 동작은 다음과 같습니다

  • id가 클수록 최신의 글입니다
  • max_idsince_id 사이의 count만큼의 아이템을 줍니다
  • max_id부터 세어나갑니다
    • 없으면 처음부터 셉니다
  • since_id를 만나면 그만둡니다
    • 없으면 count 개수가 차거나 끝까지 셉니다

[Response]

{
  "notices": [
    {
      "pk": 1,
      "fields" : {
        "title": ,
        "category": ,
        "date": ,
        "url": ,
      }
    },
    ...
  ],
}

카테고리 코드표는 다음을 참고하세요

카테고리 이름 코드
장학/학자금 SCLR
채용 HIRE
수업/성적 STUD
학사 STAT
교환학생 EXCH
공모전 CONT
봉사/멘토링 SERV
학회/세미나 CONF
교육 EDUC
대학원 GRAD
기타 EXTC

4. 공지 가져오기

[Request]

GET /notices/:id
Parameter Description Example

|

[Response]

공지 객체가 내려옵니다

{
  "pk": 1,
  "fields" : {
    "title": ,
    "category": ,
    "date": ,
    "url": ,
    "file_count": ,
  }
}

5. 공지 첨부 파일 가져오기

[Request]

GET /notices/:id/files

[Response]

{
  "file_count": ,
  "files" [
	{
	  "url": 주소,
	  "title": 파일제목,
	}
  ],
}

6. FCM 메시지

서버로부터 오는 메시지입니다

아까의 FCM 문서를 참고하세요

[Response]

@dj-shin
Copy link
Author

dj-shin commented Jan 14, 2017

[Request]

POST /alarm/
Parameter Description Example
category 재난 카테고리 사칭, 허위
location 위치 301동
content 내용
department 학과 컴퓨터공학부
student_id 학번 2014-11111
name 이름 이인용
username 마이스누 아이디 dyd1928
password 마이스누 비밀번호 ****

[Response]

알람 전송에 성공한 경우

{
  "success": True,
}

마이스누 인증에 실패한 경우

{
  "success": False,
  "error": "Login Failed"
}

[FCM Mesasge]

{
	"title": "재난 알림",
	"category" : 카테고리,
	"location" : 위치,
	"content" : 내용,
}

@dj-shin
Copy link
Author

dj-shin commented Feb 5, 2017

푸시 알림 데이터

{
	"title": "새 공지가 등록되었습니다",
	"message" : 게시글 제목,
	"category" : 카테고리,
	"board_code" : 게시판 코드,
	"article_id" : 게시글 id,
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment