A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z | AA | AB | AC | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 분류 | Description | 담당자 | URI | Method | http header | request_body | http status code | response_body | db query | 비고 | ||||||||||||||||||
2 | Member(User) | 회원가입 | 곽승환 | api/v1/members/register | POST | { "email": "sh@gmail.com", "name": "곽승환", "password": "pw123" } | 201 | { "status_code": 201, "message": "Success" } | INSERT INTO member ( email, name, password) VALUE("sh@gmail.com", "곽승환", "pw123"); | ||||||||||||||||||||
3 | 로그인 | 곽승환 | api/v1/members/login | POST | { "email": "sh@gmail.com", "password": "pw123" } | 200 | { "status_code": 200, "message": "Success", "member": { "id": 1, "email": "sh@gmail.com", "name": "곽상환", "image": null, "created_at": "2024-04-03T02:50:57.796692Z", "updated_at": "2024-04-03T02:50:57.796716Z" } "access": Access_token, "refresh": Refresh_token } | ||||||||||||||||||||||
4 | 소셜 로그인 | 곽승환 | api/v1/members/kakao/login | POST | { "code": 카카오 인가코드 } | 200 | { "status_code": 200, "message": "Success", "member": { "id": 1, "email": "sh@gmail.com", "name": "곽상환", "image": null, "created_at": "2024-04-03T02:50:57.796692Z", "updated_at": "2024-04-03T02:50:57.796716Z" } "access": Access_token, "refresh": Refresh_token } | ||||||||||||||||||||||
5 | 토큰 리프레쉬 | 곽승환 | api/v1/members/login/refresh | POST | ACCESS-TOKEN | { "refresh": Refresh_Token } | { "access": Access_Token } | ||||||||||||||||||||||
6 | 로그아웃 | 곽승환 | api/v1/members/logout | POST | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success" } | ||||||||||||||||||||||
7 | 프로필 사진 등록 | 곽승환 | api/v1/members/image-upload | POST | ACCESS-TOKEN | { "image": 이미지 파일 } | { "status_code": 200, "message": "Success" } | ||||||||||||||||||||||
8 | 회원정보 수정 | 곽승환 | api/v1/members/detail | PUT | ACCESS-TOKEN | { "name": "곽상환", "password": "sh123" } | 201 | { "status_code": 201, "message": "Success", "member": { "id": 1, "email": "sh@gmail.com", "name": "곽상환", "image": null, "created_at": "2024-04-03T02:50:57.796692Z", "updated_at": "2024-04-03T02:50:57.796716Z" } } | UPDATE member SET name = "곽상환", password="sh123" WHERE id=111; | ||||||||||||||||||||
9 | 회원조회 | 곽승환 | api/v1/members/detail/ | GET | ACCESS-TOKEN | { "status_code": 200, "message": "Success", "member": { "id": 1, "email": "sh@gmail.com", "name": "곽승환", "image": null, "created_at": "2024-04-03T02:50:57.796692Z", "updated_at": "2024-04-03T02:50:57.796716Z" } } | SELECT id, email, name, created_at, updated_at FROM member WHERE id=111; | ||||||||||||||||||||||
10 | 회원탈퇴 | 곽승환 | api/v1/members/detail | DELETE | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success" } | DELETE FROM member WHERE id=111; | |||||||||||||||||||||
11 | Budget | 예산 생성 | 임희연 | api/v1/budgets/list | POST | ACCESS-TOKEN | { "value": 600000 } | 201 | { "status_code": 201, "message": "Success" } | INSERT INTO budget (value, member_id) VALUES ( 600000, 111 ); | |||||||||||||||||||
12 | 예산 조회 | 임희연 | api/v1/budgets/list?year=2024&month=4 | GET | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success", "budget_list" : [ { "id": 1, "value": 600000, "created_at": "2024-04-01:10:20:12", "updated_at": "2024-04-01:11:22:12" } ,,,, ], "budget_total": 600000 } | SELECT value FROM budget WHERE member_id = 111 AND YEAR(created_at) = 2024 AND MONTH(created_at) = 4; | limit 가 있습니다. | ||||||||||||||||||||
13 | 예산 수정 | 임희연 | api/v1/budgets/detail/{budget_id} | PUT | ACCESS-TOKEN | { "value": 800000 } | 201 | { "status_code": 201, "message": "Success", "budget" : { "id": 1, "value": 800000, "created_at": "2024-04-01:10:20:12", "updated_at": "2024-04-01:11:22:12" } } | UPDATE budget SET value = 800000 WHERE id = 1; | ||||||||||||||||||||
14 | 예산 삭제 | 임희연 | api/v1/budgets/detail/{budget_id} | DELETE | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success" } | DELETE FROM budget WHERE id = 1; | |||||||||||||||||||||
15 | Category | 카테고리 조회 | 곽승환 | api/v1/expenses/categories | GET | 200 | { "status_code": 200, "message": "Success", "categories" : [ { "id": 1, "content": "식비" }, ,,,, ] } | SELECT * FROM category; | |||||||||||||||||||||
16 | Payment | 지불 형태 조회 | 곽승환 | api/v1/expenses/payments | GET | 200 | { "status_code": 200, "message": "Success", "payments" : [ { "id": 1, "type": "현금" }, ,,,, ] } | SELECT * FROM payment; | |||||||||||||||||||||
17 | Fixed-Expense | 고정지출 생성 | 임희연 | api/v1/expenses/fix/list | POST | ACCESS-TOKEN | [ { "category": 1, "price": 300000, }, ... ] | 201 | { "status_code": 201, "message": "Success" } | INSERT INTO fixed_expense (member_id, category_id, price) VALUES ( 111, 1, 300000), ...; | |||||||||||||||||||
18 | 고정지출 목록 조회 | 임희연 | api/v1/expenses/fix/list | GET | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success", "fixed_expenses_list": [ { "id": 1, "category": 1, "price": 12000, "created_at": "2024-04-01:10:20:12", "updated_at": "2024-04-01:11:22:12" }, ... ], "fixed_expenses_per_categories": [ { "category": 1, "total_price": 100000 } ... ], "total_expense_fixed_expense": "400000" } | - 고정 지출 리스트 - SELECT id, category_id, price, created_at, updated_at FROM fixed_expense; - 카테고리별 고정 지출내역 - SELECT id, category_id, SUM(price) as total_price, created_at, updated_at FROM fixed_expense WHERE member_id = 111 GROUP BY category_id; - 총 고정지출 + 총 지출 - | limit 가 있습니다. | ||||||||||||||||||||
19 | 고정지출 수정 | 임희연 | api/v1/expenses/fix/detail/{fixed_expense_id} | PUT | ACCESS-TOKEN | { "category": 1, "price": 150000, } | 201 | { "status_code": 201, "message": "Success", "fixed_expense" : { "id": 1, "category": 1, "price": 150000 "created_at": "2024-04-01:10:20:12", "updated_at": "2024-04-01:11:22:12" } } | UPDATE fixed_expense SET price = 150000 WHERE id = 1; | ||||||||||||||||||||
20 | 고정지출 삭제 | 임희연 | api/v1/expenses/fix/detail/{fixed_expense_id} | DELETE | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success" } | DELETE FROM fixed_expense WHERE id=3; | |||||||||||||||||||||
21 | Expense | 지출 생성 | 곽승환 | api/v1/expenses/list | POST | ACCESS-TOKEN | [ { "category": 3, "payment": 1, "location": "스타벅스", "price": 18000, "content": "아메리카노 3잔", "date": "2024-04-01", }, .... ] | 201 | { "status_code": 201, "message": "Success" } | INSERT INTO expense (member_id, category_id, payment_id, location, price, content, date) VALUES (111, 3, 1, "스타벅스", 18000, "아메리카노 3잔", "2024-04-01"), ....; | |||||||||||||||||||
22 | 지출 목록 조회 | 곽승환 | api/v1/expenses/list?year=2024&month=4 | GET | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success", "target_month" : "2024-04", "expenses_list": [ { "id": 1, "category": 3, "payment": 1, "location": "스타벅스", "price": 12000, "content": "아메리카노 2잔", "created_at": "2024-04-01:00:00:00", "updated_at": "2024-04-01:00:00:00" }, ... ], "total_expense_value:"100000" } | - 지출 리스트 - SELECT id, category_id, payment_id, location, price, content, created_at, updated_at FROM expense WHERE member_id = 111 AND YEAR(date) = 2024 AND MONTH(date) = 4; - 총 지출 내역 - SELECT SUM(e.price) + COALESCE(SUM(fe.price), 0) AS total_expense FROM expense AS e LEFT JOIN fixed_expense AS fe ON e.member_id = fe.member_id WHERE member_id = 111 AND YEAR(e.date) = 2024 AND MONTH(e.date) = 4 GROUP BY member_id; | limit 가 있습니다. | limit 가 있습니다. | |||||||||||||||||||
23 | 지출 수정 | 곽승환 | api/v1/expenses/detail/{expense_id} | PUT | ACCESS-TOKEN | { "category": 3, "payment": 2, "location": "투썸플레이스", "price": 15000, "content": "아메리카노 3잔", "date": "2024-04-01", } | 201 | { "status_code": 201, "message": "Success", "expense" : { "id": 1, "category": 3, "payment": 1, "location": "투썸플레이스", "price": 15000, "content": "아메리카노 3잔", "created_at": "2024-04-01:11:00:00", "updated_at": "2024-04-01:00:00:00" } } | UPDATE expense SET payment_id = 2, location = "투썸플레이스", price = 15000 WHERE id = 1; | ||||||||||||||||||||
24 | 지출 삭제 | 곽승환 | api/v1/expenses/detail/{expense_id} | DELETE | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success" } | DELETE FROM expense WHERE id = 1 | |||||||||||||||||||||
25 | Report | 보고서 목록 조회 | 곽승환 | api/v1/reports/list?year=2024&month=4 | GET | ACCESS-TOKEN | 200 | { "status_code": 200, "message": "Success", "total_expenses_by_category": [ { "id": 1, "content": "식비", "total_price": 1111 }, { "id": 2, "content": "주거/통신", "total_price": 1111 }, { "id": 3, "content": "생활용품", "total_price": 1111 }, { "id": 4, "content": "의복/미용", "total_price": 1111 }, { "id": 5, "content": "건강/문화", "total_price": 1111 }, ... ], "total_expenses_by_location": [ { "location": "하나은행", "total_price": 1111 }, { "location": "CU", "total_price": 1111 }, { "location": "CGV", "total_price": 1111 }, { "location": "김밥천국", "total_price": 1111 }, { "location": "스타벅스", "price": 1111 }, ... ] } | - 카테고리 별 지출 내역 - SELECT category_id, SUM(price) + COALESCE(SUM(fe.price), 0) as total_price FROM expense AS e LEFT JOIN fixed_expense AS fe ON e.member_id = fe.member_id WHERE user_id = 111 AND YEAR(e.date) = 2024 AND MONTH(e.date) = 4 GROUP BY category_id; - 사용처 별 지출 내역 - SELECT location, SUM(price) as total_price FROM expense WHERE user_id = 111 GROUP BY location; | limit 가 있습니다. | |||||||||||||||||||
26 | |||||||||||||||||||||||||||||
27 | |||||||||||||||||||||||||||||
28 | |||||||||||||||||||||||||||||
29 | |||||||||||||||||||||||||||||
30 | |||||||||||||||||||||||||||||
31 | |||||||||||||||||||||||||||||
32 | |||||||||||||||||||||||||||||
33 | |||||||||||||||||||||||||||||
34 | |||||||||||||||||||||||||||||
35 | |||||||||||||||||||||||||||||
36 | |||||||||||||||||||||||||||||
37 | |||||||||||||||||||||||||||||
38 | |||||||||||||||||||||||||||||
39 | |||||||||||||||||||||||||||||
40 | |||||||||||||||||||||||||||||
41 | |||||||||||||||||||||||||||||
42 | |||||||||||||||||||||||||||||
43 | |||||||||||||||||||||||||||||
44 | |||||||||||||||||||||||||||||
45 | |||||||||||||||||||||||||||||
46 | |||||||||||||||||||||||||||||
47 | |||||||||||||||||||||||||||||
48 | |||||||||||||||||||||||||||||
49 | |||||||||||||||||||||||||||||
50 | |||||||||||||||||||||||||||||
51 | |||||||||||||||||||||||||||||
52 | |||||||||||||||||||||||||||||
53 | |||||||||||||||||||||||||||||
54 | |||||||||||||||||||||||||||||
55 | |||||||||||||||||||||||||||||
56 | |||||||||||||||||||||||||||||
57 | |||||||||||||||||||||||||||||
58 | |||||||||||||||||||||||||||||
59 | |||||||||||||||||||||||||||||
60 | |||||||||||||||||||||||||||||
61 | |||||||||||||||||||||||||||||
62 | |||||||||||||||||||||||||||||
63 | |||||||||||||||||||||||||||||
64 | |||||||||||||||||||||||||||||
65 | |||||||||||||||||||||||||||||
66 | |||||||||||||||||||||||||||||
67 | |||||||||||||||||||||||||||||
68 | |||||||||||||||||||||||||||||
69 | |||||||||||||||||||||||||||||
70 | |||||||||||||||||||||||||||||
71 | |||||||||||||||||||||||||||||
72 | |||||||||||||||||||||||||||||
73 | |||||||||||||||||||||||||||||
74 | |||||||||||||||||||||||||||||
75 | |||||||||||||||||||||||||||||
76 | |||||||||||||||||||||||||||||
77 | |||||||||||||||||||||||||||||
78 | |||||||||||||||||||||||||||||
79 | |||||||||||||||||||||||||||||
80 | |||||||||||||||||||||||||||||
81 | |||||||||||||||||||||||||||||
82 | |||||||||||||||||||||||||||||
83 | |||||||||||||||||||||||||||||
84 | |||||||||||||||||||||||||||||
85 | |||||||||||||||||||||||||||||
86 | |||||||||||||||||||||||||||||
87 | |||||||||||||||||||||||||||||
88 | |||||||||||||||||||||||||||||
89 | |||||||||||||||||||||||||||||
90 | |||||||||||||||||||||||||||||
91 | |||||||||||||||||||||||||||||
92 | |||||||||||||||||||||||||||||
93 | |||||||||||||||||||||||||||||
94 | |||||||||||||||||||||||||||||
95 | |||||||||||||||||||||||||||||
96 | |||||||||||||||||||||||||||||
97 | |||||||||||||||||||||||||||||
98 | |||||||||||||||||||||||||||||
99 | |||||||||||||||||||||||||||||
100 |