Skip to content

Project API

Jin Young Park edited this page Dec 11, 2020 · 9 revisions

Project

Project CRUD

Method url description
GET api/project project ์ „์ฒด ์ •๋ณด ์กฐํšŒ
GET api/project/:projectId project ๊ฐœ๋ณ„ ์กฐํšŒ
POST api/project project ์ƒ์„ฑ
PATCH api/project/:projectId project ์ œ๋ชฉ ์ˆ˜์ •
PUT api/project/:projectId project ์ˆ˜์ •
DELETE api/project/:projectId project ์‚ญ์ œ

Section CUD

Method url description
POST api/project/:projectId/section section ์ƒ์„ฑ
PATCH api/project/:projectId/section/:sectionId section ์ œ๋ชฉ ์ˆ˜์ •
DELETE api/project/:projectId/section/:sectionId section ์‚ญ์ œ

Project GET API (ํ”„๋กœ์ ํŠธ ์ „์ฒด ์กฐํšŒ)

URL

GET /api/project

Response Description

Name Type Description
id UUID ํ”„๋กœ์ ํŠธ ID
title STRING ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
taskCount INT ์ž‘์—… ๊ฐœ์ˆ˜(ํ•˜์œ„ ์ž‘์—… ํฌํ•จ)
defaultSectionId INT ์ฒซ๋ฒˆ์งธ ์„น์…˜ ID

Response

[
    {
        id: UUID,
        title: 'ํ”„๋กœ์ ํŠธ ์ด๋ฆ„',
        color: '#111111',
        isFavorite: true,
        isList: true,
        taskCount: 3,
        defaultSectionId: UUID    
    }
]

Failed Response

Code Common Message Return Message Description
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project GET API (ํ”„๋กœ์ ํŠธ ๊ฐœ๋ณ„ ์กฐํšŒ)

URL

GET /api/project/:projectId

Response Description

Name Type Description
id UUID ํ”„๋กœ์ ํŠธ ID
title STRING ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
isList BOOLEAN ๋ชฉ๋ก๋ทฐ์ผ๊ฒฝ์šฐ true, ์นธ๋ฐ˜๋ทฐ์ผ๊ฒฝ์šฐ false
sections ARRAY ํ•˜์œ„ ์„น์…˜ ๋ฐ์ดํ„ฐ
section.id UUID ์„น์…˜ ID
section.tasks ARRAY ํ•˜์œ„ ์ž‘์—… ์ •๋ณด Task API ์ฐธ์กฐ

Response

{
    id : 1,
    title: 'ํ”„๋กœ์ ํŠธ ์ด๋ฆ„',
    isList: true,
    sections: 
    [
        {
            id: 1,
            tasks: 
            [
                {
                    id : 1,
                    title: '์ž‘์—…1',
                    dueDate: '2020-11-18',
                    createdAt: '2020-11-18T07:12:41.000Z',
                    updatedAt: '2020-11-18T07:12:41.000Z'
                    tasks: [{id: 2, title: ...},{}, ...],
                }
            ]
        }
    ]
    
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ID๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ์ž‘์—…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ํ•ด๋‹น ์ž‘์—…์ด ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํ”„๋กœ์ ํŠธ id์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project Post API

URL

POST /api/project

Request Description

Name Required Type Description
title REQUIRED STRING ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
isList REQUIRED BOOLEAN ๋ชฉ๋ก๋ทฐ: true, ์นธ๋ฐ˜๋ทฐ: false
isFavorite CONDITIONAL (default=false) BOOLEAN ์ฆ๊ฒจ์ฐพ๊ธฐ์— ์ถ”๊ฐ€ ์—ฌ๋ถ€

Request

{
    title : 'ํ”„๋กœ์ ํŠธ ์ด๋ฆ„',
    isList: true || false,
    color: '#111111',
    isFavorite : true || false,
}

Response Description

Name Type Description
message STRING ์š”์ฒญ ์„ฑ๊ณต์‹œ 'OK'

Response

{
    message: 'ok',
}

Failed Response

Code Common Message Return Message Description
400 Bad Request title๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํƒ€์ดํ‹€์ด String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project Patch API

URL

PATCH /api/project/:projectID

Request Description

Name Required Type Description
title OPTIONAL STRING ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
color OPTIONAL STRING ํ”„๋กœ์ ํŠธ ์ƒ‰์ƒ
isList OPTIONAL Boolean ํ”„๋กœ์ ํŠธ ๋ชฉ๋กํ˜• ์—ฌ๋ถ€
isFavorite OPTIONAL Boolean ํ”„๋กœ์ ํŠธ ์ฆ๊ฒจ์ฐพ๊ธฐ ์—ฌ๋ถ€

Request

{
    title : '์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ ์ด๋ฆ„', 
}

Response Description

Name Type Description
message STRING ์š”์ฒญ ์„ฑ๊ณต์‹œ 'OK'

Response

{
    message: 'ok'
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ID๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
isList๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค isList์ด Boolean ํƒ€์ž…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
color๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค color ๊ฐ’์ด String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ hexa code๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
isFavorite๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค isFavorite์ด Boolean ํƒ€์ž…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” id์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project Put API

URL

PUT /api/project/projectId

Request Description

Name Required Type Description
title REQUIRED STRING ํ”„๋กœ์ ํŠธ ์ด๋ฆ„
color OPTIONAL STRING ํ”„๋กœ์ ํŠธ ์ƒ‰์ƒ
isList REQUIRED BOOLEAN ๋ชฉ๋ก๋ทฐ: true, ์นธ๋ฐ˜๋ทฐ: false
isFavorite CONDITIONAL (default=false) BOOLEAN ์ฆ๊ฒจ์ฐพ๊ธฐ์— ์ถ”๊ฐ€ ์—ฌ๋ถ€

Request

{
    title : 'ํ”„๋กœ์ ํŠธ ์ด๋ฆ„',
    isList: false,
    color: "#eeeeee"
    isFavorite : true || false
}

Response Description

Name Type Description
message STRING ์š”์ฒญ ์„ฑ๊ณต์‹œ 'OK'

Response

{
    message: 'ok'
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ID๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
isList๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค isList์ด Boolean ํƒ€์ž…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
color๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค color ๊ฐ’์ด String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ hexa code๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
isFavorite๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค isFavorite์ด Boolean ํƒ€์ž…์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” id์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project Delete API

URL

DELETE /api/project/:projectId

Response

{
    message: 'ok'
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ID๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” id์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project - Section POST API

URL

POST /api/project/:projectId/section

Request Description

Name Required Type Description
title REQUIRED STRING ์„น์…˜ ์ด๋ฆ„

Request

{
    title : '์ƒˆ๋กœ์šด ์„น์…˜ ์ด๋ฆ„', 
}

Response

{
    message: 'ok'
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค projectId๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
title๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํƒ€์ดํ‹€์ด String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” projectId์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project - Section PATCH API

URL

PATCH /api/project/:projectId/section/:sectionId

Request Description

Name Required Type Description
title REQUIRED STRING ์„น์…˜ ์ด๋ฆ„

Request

{
    title : '์ƒˆ๋กœ์šด ์„น์…˜ ์ด๋ฆ„', 
}

Response

{
    message: 'ok'
}

Failed Response

Code Common Message Return Message Description
400 Bad Request id๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํ”„๋กœ์ ํŠธ ID๊ฐ€ String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ UUID4 ๊ฐ’์ด ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
title๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค ํƒ€์ดํ‹€์ด String ํƒ€์ž…์ด ์•„๋‹ˆ๊ฑฐ๋‚˜ ๋นˆ ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
401 Unauthorized Unauthorized ์œ ํšจํ•œ ํ† ํฐ์„ header์— ํฌํ•จํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
403 Forbidden Forbidden ํ•ด๋‹น ์œ ์ €์˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹Œ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
404 Not Found ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ž‘์—…์ž…๋‹ˆ๋‹ค. ์กด์žฌํ•˜์ง€ ์•Š๋Š” id์ธ ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.
500 Internal Server Error Internal Server Error ์„œ๋ฒ„์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๊ฒฝ์šฐ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Project - Section Position PATCH API

URL

PATCH /api/project/:projectId/section/:sectionId/position

Request Description

Name Required Type Description
orderedTasks REQUIRED ARRAY ํ™”๋ฉด์— ๋ณด์—ฌ์งˆ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋œ task id ๋ฐฐ์—ด

Request

{
    orderedTasks : [uuid1, uuid2, uuid3, ...]
}

Response

{
    message: 'ok'
}

Project - Section DELETE API

URL

DELETE /api/project/:projectId/section/:sectionId

Response

{
    message: 'ok'
}
Clone this wiki locally