Skip to content

API Docs

Hyeonu Yun edited this page Dec 7, 2020 · 49 revisions

API Documentation

⚠️ 꾸준히 업데이트 중입니다 ⚠️

API 개발할 때마다 요청 변수(서브 쿼리 내용), reqeust body, response, 요청문 샘플을 적어주기

  • GET일때는 요청문 예시, 응답 정보, 응답 예시
  • POST일때는 요청 변수 정보, 응답 정보, 응답 예시
  • PATCH일때는 요청 변수 정보, 응답 정보, 응답 예시
  • DELETE일때는 요청문 예시, 응답 정보, 응답 예시

Summary

메서드 요청 URI 설명
GET api/oauth/login/:provider OAuth를 활용한 로그인
GET api/oauth/logout 로그아웃
메서드 요청 URI 설명
POST api/accountbooks 가계부 생성
GET api/accountbooks 유저가 소유한 가계부 목록 조회
PATCH api/accountbooks/:accountbook_id 관리자가 수행하는 가계부 설정 수정
PATCH api/accountbooks/:accountbook_id 일반구성원이 수행하는 가계부 표지 수정
DELETE api/accountbooks/:id 가계부 삭제
메서드 요청 URI 설명
POST api/social 가계부에 구성원을 추가
GET api/social/users/?accountbook_id 가계부에 있는 유저 목록 조회
GET api/social/?user_email email을 통해서 특정 유저 조회
PATCH api/social 특정 구성원에게 관리자 권한 부여
DELETE api/social/?user_id 가계부 내 특정 유저를 추방
메서드 요청 URI 설명
POST api/transactions/income 가계부 수입 내역 생성
POST api/transactions/expenditure 가계부 지출 내역 생성
POST api/transactions/income/text-parsing 수입 관련 SMS/MMS 내용을 적절하게 파싱
POST api/transactions/expenditure/text-parsing 지출 관련 SMS/MMS 내용을 적절하게 파싱
GET api/transacions?accountbook_id&start_date&end_date 가계부 수입 지출 내역 조회
PATCH api/transactions/income/:income_id 가계부 내 특정 수입 내역 수정
PATCH api/transactions/expenditure/:expenditure_id 가계부 내 특정 지출 내역 수정
DELETE api/transactions/income/:income_id 가계부 내 특정 수입 내역 삭제
DELETE api/transactions/expenditure/:expenditure_id 가계부 내 특정 지출 내역 삭제
메서드 요청 URI 설명
POST api/categories/income 수입 카테고리 생성
POST api/categories/expenditure 지출 카테고리 생성
GET api/categories/income/?accountbook_id 수입 카테고리 조회
GET api/categories/expenditure/?accountbook_id 지출 카테고리 조회
PATCH api/categories/income/:income_category_id 수입 카테고리 수정
PATCH api/categories/expenditure/:expenditure_category_id 지출 카테고리 수정
DELETE api/categories/income/:income_category_id 수입 카테고리 삭제
DELETE api/categories/expenditure/:expenditure_category_id 지출 카테고리 삭제
메서드 요청 URI 설명
POST api/accounts 새로운 계좌(결제수단) 생성
GET api/accounts/?accountbook_id 계좌(결제수단) 목록 조회
PATCH api/accounts/:accounts_id 계좌(결제수단) 수정
DELETE api/accounts/:accounts_id 계좌(결제수단) 삭제
메서드 요청 URI 설명
POST api/csv 사용자가 업로드한 CSV 파일을 전체 거래내역에 추가
GET api/csv/?accountbook_id 전체 거래내역을 CSV 파일로 만들어 반환

1. 유저 (User)

1-1. OAuth 로그인

메서드 요청 URI 설명
GET api/oauth/login/:provider OAuth를 활용한 로그인

요청 (Request)

요청문 예시

http://localhost:5000/api/oauth/login/naver

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
provider String Y - OAuth 인증 제공자 이름
1) 네이버 로그인: 'naver'
2) 카카오 로그인: 'kakao'

응답 (Response)

  • ctx.cookies에 jwt 토큰값이 담긴다.
  • ctx.state.user에 다음과 같은 정보가 담겨 반환된다.
{
  id: 1,
  provider: 'naver',
  nickname: 'testNickname',
  profileUrl: 'https://i.imgur.com/0kGli9o.jpg'
}

응답 정보

필드 데이터 타입 설명
id Integer 사용자 고유 회원번호
provider String 인증 제공자 이름
nickname String 사용자 별명
profileUrl String 사용자 프로필사진 URL

1-2. 로그아웃

메서드 요청 URI 설명
GET api/oauth/logout 로그아웃

요청 (Request)

요청문 예시

http://localhost:5000/api/oauth/logout

응답 (Response)

  • ctx.cookies에 jwt 토큰값이 사라진다.

응답 코드

  • 로그아웃이 성공적으로 수행될 경우, status 204
  • 로그아웃이 실패했을 경우, status 500

2. 가계부 (Accountbook)

2-2. 가계부 목록 조회

메서드 요청 URI 설명
GET api/accountbooks 유저가 소유한 가계부 목록 조회

요청 (Request)

요청문 예시

http://localhost:5000/api/accountbooks

응답 (Response)

응답 예시

[
    {
        "id": 2,
        "authority": false,
        "description": "테스트용 accountbook",
        "color": "#1E90FF",
        "accountbookId":1
    },
    ...
]

응답 정보

필드 데이터 타입 설명
id Integer 사용자와 가계부 간 관계 테이블 내 고유 식별 번호
authority Boolean 해당 가계부에 대한 관리자 권한 여부
description String 사용자가 설정해놓은 가계부에 대한 설명
color String 사용자가 설정해놓은 가계부 색상
accountbookId Integer 해당 가계부의 고유 식별 번호

4. 거래 내역 (Transaction)

4.1 수입 거래내역 생성

메서드 요청 URI description
POST api/transactions/income 수입 거래내역 생성

요청 (Request)

요청문 예시

localhost:5000/api/transactions/income

body

{ 
    "accountbookId":1, 
    "incomeCategoryId":1,
    "accountId":1, 
    "amount":5000, 
    "content":"안녕하세요", 
    "date":"2020-12-04", 
    "memo":"반갑습니다."
}

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
accountbookId Integer Y - 가계부 id
incomeCategoryId Integer Y - 수입 카테고리 id
accountId Integer Y - 결제수단 Id
amount Integer Y - 거래금액
content string Y - 거래내역 내용
date date format Y - 거래일
memo string N - 거래내역 메모

응답 (Response)

응답 예시

{
    "id": 23,
    "amount": 5000,
    "content": "안녕하세요",
    "date": "2020-12-04T00:00:00.000Z",
    "memo": "반갑습니다.",
    "category": {
        "id": 1,
        "name": "타행이체",
        "color": "#1E90FF"
    },
    "account": {
        "id": 1,
        "name": "삼성카드",
        "color": "#1E90FF"
    }
}

응답 정보

필드 데이터 타입 설명
id Integer 거래내역 id
amount Integer 거래금액
content string 거래내역 내용
date date format 거래일
memo string 거래내역 메모
category object 수입 카테고리
account object 결제수단 카테고리

4.2 수입 거래내역 생성

메서드 요청 URI description
POST api/transactions/expenditure 수입 거래내역 생성

요청 (Request)

요청문 예시

localhost:5000/api/transactions/expenditure

body

{ 
    "accountbookId":1, 
    "expenditureCategoryId":1,
    "accountId":1, 
    "amount":5000, 
    "place":"안녕하세요", 
    "date":"2020-12-04", 
    "memo":"반갑습니다."
}

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
accountbookId Integer Y - 가계부 id
incomeCategoryId Integer Y - 수입 카테고리 id
accountId Integer Y - 결제수단 Id
amount Integer Y - 거래금액
place string Y - 거래내역 내용
date date format Y - 거래일
memo string N - 거래내역 메모

응답 (Response)

응답 예시

{
    "id": 16,
    "amount": 5000,
    "place": "장소",
    "date": "2020-12-04T00:00:00.000Z",
    "memo": "반갑습니다.",
    "category": {
        "id": 1,
        "name": "식사",
        "color": "#1E90FF"
    },
    "account": {
        "id": 1,
        "name": "삼성카드",
        "color": "#1E90FF"
    }
}

응답 정보

필드 데이터 타입 설명
id Integer 거래내역 id
amount Integer 거래금액
place string 거래내역 내용
date date format 거래일
memo string 거래내역 메모
category object 수입 카테고리
account object 결제수단 카테고리

4.5 가계부 수입 지출 내역 조회

메서드 요청 URI description
GET api/transacions?accountbook_id&start_date&end_date 수입 거래내역 생성

요청 (Request)

요청문 예시

localhost:5000/api/transactions?accountbook_id=1&start_date=2020.11.01&end_date=2020.12.31

응답 (Response)

응답 예시

[
    {
        "id": 1,
        "amount": 7500,
        "place": "맘스터치",
        "date": "2020-11-30T15:00:00.000Z",
        "memo": null,
        "category": {
            "id": 3,
            "name": "경조사",
            "color": "red"
        },
        "account": {
            "id": 1,
            "name": "삼성카드",
            "color": "tomato"
        }
    }
]

응답 정보

필드 데이터 타입 설명
id Integer 거래내역 id
amount Integer 거래금액
place string 거래내역 내용
date date format 거래일
memo string 거래내역 메모
category object 수입 카테고리
account object 결제수단 카테고리

5. 카테고리 (Category)

5.3 수입 카테고리 조회

메서드 요청 URI description
GET api/categories/income/?accountbook_id 수입 카테고리 조회

요청 (Request)

요청문 예시

localhost:5000/api/categories/income?accountbook_id=1

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
accountbook_id Integer Y - 조회하고자 하는 가계부 고유 식별 번호

응답 (Response)

응답 예시

[
    {
        "id": 1,
        "name": "타행이체",
        "color": "tomato"
    },
    {
        "id": 2,
        "name": "중고판매",
        "color": "dodgerblue"
    },
    {
        "id": 3,
        "name": "급여",
        "color": "red"
    },
    ...
]

응답 정보

필드 데이터 타입 설명
id Integer 해당 가계부 내에 존재하는 수입 카테고리 고유 식별 번호
name String 해당 가계부 내에 존재하는 수입 카테고리 이름
color String 해당 가계부 내에 존재하는 수입 카테고리 라벨의 색상

5.4 지출 카테고리 조회

메서드 요청 URI description
GET api/categories/expenditure/?accountbook_id 가계부에 속한 지출 카테고리 조회

요청 (Request)

요청문 예시

localhost:5000/api/categories/expenditure?accountbook_id=1

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
accountbook_id Integer Y - 조회하고자 하는 가계부 고유 식별 번호

응답 (Response)

응답 예시

[
    {
        "id": 1,
        "name": "식사",
        "color": "tomato"
    },
    {
        "id": 2,
        "name": "생활",
        "color": "dodgerblue"
    },
    {
        "id": 3,
        "name": "경조사",
        "color": "red"
    },
    {
        "id": 4,
        "name": "교육",
        "color": "green"
    }
]

응답 정보

필드 데이터 타입 설명
id Integer 해당 가계부 내에 존재하는 지출 카테고리 고유 식별 번호
name String 해당 가계부 내에 존재하는 지출 카테고리 이름
color String 해당 가계부 내에 존재하는 지출 카테고리 라벨의 색상

6. 계좌/결제수단 (Account)

6.2 지출 카테고리 조회

메서드 요청 URI description
GET api/accounts/?accountbook_id 계좌(결제수단) 목록 조회

요청 (Request)

요청문 예시

localhost:5000/api/accounts?accountbook_id=1

요청 변수 정보

요청 변수명 데이터 타입 필수 여부 기본값 설명
accountbook_id Integer Y - 조회하고자 하는 가계부 고유 식별 번호

응답 (Response)

응답 예시

[
    {
        "id": 1,
        "name": "삼성카드",
        "color": "tomato"
    },
    {
        "id": 2,
        "name": "국민카드",
        "color": "dodgerblue"
    },
    {
        "id": 3,
        "name": "농협카드",
        "color": "red"
    },
    {
        "id": 4,
        "name": "우리카드",
        "color": "blue"
    },
    {
        "id": 5,
        "name": "신한카드",
        "color": "green"
    }
]

응답 정보

필드 데이터 타입 설명
id Integer 해당 가계부 내에 존재하는 결제수단 고유 식별 번호
name String 해당 가계부 내에 존재하는 결제수단 이름
color String 해당 가계부 내에 존재하는 결제수단 라벨의 색상
Clone this wiki locally