Skip to content

SnapSpot API

YEJI edited this page Sep 22, 2023 · 46 revisions

Auth

์ผ๋ฐ˜ ํšŒ์›๊ฐ€์ž…

  • ํšŒ์›๊ฐ€์ž… ์œ ํ˜•์„ ์„ ํƒํ•˜๊ณ  ํ•„์š” ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•œ ๋’ค ์ผ๋ฐ˜ ํšŒ์›๊ฐ€์ž…์„ ํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /auth/signup
  • Request Body
    {
        "role" : "ROLE_MEMBER",
        "email" : "[email protected]",
        "nickname" : "traveler",
        "password" : "tourlover123" 
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "nickname" : "traveler",
        "email" : "[email protected]",
        "role" : "ROLE_MEMBER"
    }

์ผ๋ฐ˜ ๋กœ๊ทธ์ธ

  • ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜๊ณ  ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /auth/signin
  • Request Body
    {
        "email" : "[email protected]",
        "password" : "tourlover123"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "email": "[email protected]",
        "token": {
            "accessToken": "Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ0b3VybG92ZXJAZ21haWwuY29tIiwicm9sZSI6IlJPTEVfTUVNQkVSIiwiZXhwIjoxNjk0NDQ1Mjk0fQ.pwTjZdx6KFGWiq5w0hm9hlUUgeiAUBmOx4lYbfCyggI",
            "refreshToken": "eyJhbGciOiJIUzI1NiJ9.eyJleHAiOjE2OTQ3OTA4OTR9.zGIAE1sXwgMvT1C44S0c8INrXM_kkGOqF1uaMw7o_Vc"
        }
    }

์นด์นด์˜ค ํšŒ์›๊ฐ€์ž…

  • ํšŒ์›๊ฐ€์ž… ์œ ํ˜•์„ ์„ ํƒํ•˜๊ณ  ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ํšŒ์›๊ฐ€์ž…ํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /auth/kakao/signup
  • Request Body
    {
        "accessToken" : "Mg6j23h5mUCy0yZkzx9TVpu6kJXggo7tcsd070VmCiolTwAAAYpACPLH",
        "refreshToken" : "Mg6j23h5mUCy0yZkzx9TVpu6kJXggo7tcsd070VmCiolTwAAAYpACPLH",
        "role" : "ROLE_PHOTOGRAPHER"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "nickname" : "happysnap",
        "email" : "[email protected]",
        "role" : "ROLE_PHOTOGRAPHER"
    }

์นด์นด์˜ค ๋กœ๊ทธ์ธ

  • ์นด์นด์˜ค ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /auth/kakao/signin
  • Request Body
    {
        "accessToken" : "Mg6j23h5mUCy0yZkzx9TVpu6kJXggo7tcsd070VmCiolTwAAAYpACPLH",
        "refreshToken" : "Mg6j23h5mUCy0yZkzx9TVpu6kJXggo7tcsd070VmCiolTwAAAYpACPLH"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "email" : "[email protected]",
        "token": {
            "accessToken": "Bearer eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJwaG90b2xvdmVAZ21haWwuY29tIiwicm9sZSI6IlJPTEVfTUVNFSKLDJjkldjfkSALmcnkQxNzIxfQ.ZBobiIRrAyeTlRKRu0BCsfdjl_jkj24ljsodjf55LSQ",
            "refreshToken": "eyJhbGciOiJIUzI1NiJ9.eysdfjlkEOXMXczMjF9.vVO8xEbzklkmnmzncbzCBNXMCiIgE1340tlW_5Q"
        }
    }

Member

๊ณ ๊ฐ ๊ณ„์ • ์ •๋ณด ์กฐํšŒ

  • ํ† ํฐ์œผ๋กœ ๊ณ ๊ฐ ๊ณ„์ • ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /members/me
  • Request Body
    Headers: Authorization
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "email": "[email protected]",
        "nickname": "traveler",
        "profile" : null,
        "role": "ROLE_MEMBER"
    }

๊ณ ๊ฐ ๊ณ„์ • ์ •๋ณด ์ˆ˜์ •

  • ๊ณ ๊ฐ ๊ณ„์ • ์ •๋ณด(๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ, ํ”„๋กœํ•„ ์‚ฌ์ง„)๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /members/setting
  • Request Body
    Headers: Authorization
    {
        "nickname" : "์˜ˆ์ง€",
        "profileImage" : "http://profile.com/profile123",
        "email" : "[email protected]",
        "password" : "yeji"
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "email": "[email protected]",
        "nickname": "์˜ˆ์ง€",
        "profile" : "http://profile.com/profile123",
        "role": "ROLE_MEMBER"
    }

Photographer

์‚ฌ์ง„ ์ž‘๊ฐ€ ๊ณ„์ • ์ •๋ณด ์กฐํšŒ

  • ํ† ํฐ์œผ๋กœ ์‚ฌ์ง„ ์ž‘๊ฐ€ ๊ณ„์ • ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photographers/me
  • Request Body
    Headers: Authorization
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "member": {
            "email": "[email protected]",
            "nickname": "happysnap",
          "profile": null,
            "role": "ROLE_PHOTOGRAPHER"
        },
        "photographerId": 19,
        "lowestPay": null,
        "paymentImage": null,
        "bio": null,
        "images": {
            "image1": null,
            "image2": null,
            "image3": null,
            "image4": null,
            "image5": null,
            "image6": null,
            "image7": null,
            "image8": null,
            "image9": null,
            "image10": null
        },
        "areas": [],
        "unableSchedules": {
            "unableDates": []
        },
        "sns": {
            "homepage": null,
            "instagram": null,
            "kakaoChannel": null,
            "twitter": null,
            "naverBlog": null
        },
        "specialList": {
            "keywords": []
        },
        "tags": {
            "tag1": null,
            "tag2": null,
            "tag3": null
        }
    }

์‚ฌ์ง„ ์ž‘๊ฐ€ ๊ณ„์ • ์ •๋ณด ์ˆ˜์ •

  • ์‚ฌ์ง„ ์ž‘๊ฐ€ ๊ณ„์ • ์ •๋ณด(๋‹‰๋„ค์ž„, ์ด๋ฉ”์ผ, ํ”„๋กœํ•„ ์‚ฌ์ง„)๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /photographers/setting
  • Request Body
    Headers: Authorization
    {
        "nickname" : "์‚ฌ์ง„์ž‘๊ฐ€์˜ˆ์ง€",
        "profileImage" : "http://ewha.com/ewha",
        "email" : "[email protected]",
        "password" : "kimyeji"
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "email": "[email protected]",
        "nickname": "์‚ฌ์ง„์ž‘๊ฐ€์˜ˆ์ง€",
        "profile" : "http://ewha.com/ewha",
        "role": "ROLE_PHOTOGRAPHER"
    }

์‚ฌ์ง„ ์ž‘๊ฐ€ ํ”„๋กœํ•„ ์ˆ˜์ • (์ž‘๊ฐ€ ํŽ˜์ด์ง€ ์ปค์Šคํ…€)

  • ์‚ฌ์ง„ ์ž‘๊ฐ€ ํ”„๋กœํ•„ ์ •๋ณด๋ฅผ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /photographers/me
  • Request Body
    Headers: Authorization
    {
        "nickname" : "ํ–‰๋ณต์Šค๋ƒ…",
        "profileImage" : "https://test.profile.com",
        "paymentImage" : "https://test.payment.com",
        "lowestPay" : 50000,
        "bio" : "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์„ ๋‹ด์•„๋“œ๋ ค์š”",
        "areaId" : [1, 2, 3],
        "sns" : {
            "instagram" : "happysnap_",
            "twitter" : "happysnap_",
            "kakaoChannel" : "https://pf.kakao.com/_happySNAP",
            "naverBlog" : "https://blog.naver.com",
            "homepage" : "https://happysnap.com"          
         },
        "specialList" : ["FRIEND"],
        "tag" : {
            "tag1" : "์นœ๊ตฌ",
            "tag2" : "์ถ”์–ต",
            "tag3" : "๋ชฝํ™˜์ "
        },
        "unableDates" : ["2023-11-11T00:00:00"],
        "image" : {
            "image1" : "https://test.image1.com",
            "image2" : "https://test.image2.com",
            "image3" : "https://test.image3.com",
            "image4" : "https://test.image4.com",
            "image5" : "https://test.image5.com"
        }
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "member": {
            "email": "[email protected]",
            "nickname": "ํ–‰๋ณต์Šค๋ƒ…",
            "profile": "https://test.profile.com",
            "role": "ROLE_PHOTOGRAPHER"
        },
        "photographerId": 19,
        "lowestPay": 50000,
        "paymentImage": "https://test.payment.com",
        "bio": "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์„ ๋‹ด์•„๋“œ๋ ค์š”",
        "images": {
            "image1": "https://test.image1.com",
            "image2": "https://test.image2.com",
            "image3": "https://test.image3.com",
            "image4": "https://test.image4.com",
            "image5": "https://test.image5.com",
            "image6": null,
            "image7": null,
            "image8": null,
            "image9": null,
            "image10": null
        },
        "areas": [],
        "unableSchedules": {
            "unableDates": [
                "2023-11-11T00:00:00"
            ]
        },
        "sns": {
            "homepage": "https://happysnap.com",
            "instagram": "happysnap_",
            "kakaoChannel": "https://pf.kakao.com/_happySNAP",
            "twitter": "happysnap_",
            "naverBlog": "https://blog.naver.com"
        },
        "specialList": {
            "keywords": [
                "FRIEND"
            ]
        },
        "tags": {
            "tag1": "์นœ๊ตฌ",
            "tag2": "์ถ”์–ต",
            "tag3": "๋ชฝํ™˜์ "
        }
    }

์‚ฌ์ง„ ์ž‘๊ฐ€ ๊ฐœ๋ณ„ ์กฐํšŒ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€ ํ•œ ๋ช…์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photographers/{photographerId}
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "member": {
            "email": "[email protected]",
            "nickname": "ํ–‰๋ณต์Šค๋ƒ…",
            "profile": "https://test.profile.com",
            "role": "ROLE_PHOTOGRAPHER"
        },
        "photographerId": 19,
        "lowestPay": 50000,
        "paymentImage": "https://test.payment.com",
        "bio": "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์„ ๋‹ด์•„๋“œ๋ ค์š”",
        "images": {
            "image1": "https://test.image1.com",
            "image2": "https://test.image2.com",
            "image3": "https://test.image3.com",
            "image4": "https://test.image4.com",
            "image5": "https://test.image5.com",
            "image6": null,
            "image7": null,
            "image8": null,
            "image9": null,
            "image10": null
        },
        "areas": [
            {
                "areaId": 1,
                "metropolitan": "์„œ์šธ",
                "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
            },
            {
                "areaId": 2,
                "metropolitan": "์„œ์šธ",
                "city": "์„œ์ดˆ/์‹ ์‚ฌ/๋ฐฉ๋ฐฐ"
            },
            {
                "areaId": 3,
                "metropolitan": "์„œ์šธ",
                "city": "์ž ์‹ค/์‹ ์ฒœ"
            }
        ],
        "unableSchedules": {
            "unableDates": [
                "2023-11-11T00:00:00"
            ]
        },
        "sns": {
            "homepage": "https://happysnap.com",
            "instagram": "happysnap_",
            "kakaoChannel": "https://pf.kakao.com/_happySNAP",
            "twitter": "happysnap_",
            "naverBlog": "https://blog.naver.com"
        },
        "specialList": {
            "keywords": [
                "FRIEND"
            ]
        },
        "tags": {
            "tag1": "์นœ๊ตฌ",
            "tag2": "์ถ”์–ต",
            "tag3": "๋ชฝํ™˜์ "
        }  
    }

์‚ฌ์ง„ ์ž‘๊ฐ€ ๋ชฉ๋ก ์กฐํšŒ

  • ์ง€์—ญ, ์ „๋ฌธ๋ถ„์•ผ, ๊ฐ€๋Šฅ์ผ์ž๋ฅผ ์กฐ๊ฑด์œผ๋กœ ์‚ฌ์ง„ ์ž‘๊ฐ€ ๋ชฉ๋ก์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • ๊ธฐ๋ณธ, ๊ฐ€๊ฒฉ ๋‚ฎ์€ ์ˆœ, ๋ณ„์  ๋†’์€ ์ˆœ, ๋ฆฌ๋ทฐ ๋งŽ์€ ์ˆœ ์ •๋ ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ํ•œ ํŽ˜์ด์ง€์— 15๊ฐœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photographers
  • Query Parameter (์„ ํƒ)
    • areaId (์ง€์—ญ id, ์ˆซ์ž)
    • special (์ „๋ฌธ๋ถ„์•ผ, ๋ฌธ์ž)
    • ableDate (๊ฐ€๋Šฅ์ผ์ž, yyyy-MM-ddTHH:mm:ss)
    • sort (์ •๋ ฌ, PAY / SCORE / REVIEW) - ์„ ํƒ ์•ˆ ํ•  ์‹œ ๊ธฐ๋ณธ ์ •๋ ฌ
    • page (ํŽ˜์ด์ง€, ์ˆซ์ž | ์ฒซ๋ฒˆ์งธ ํŽ˜์ด์ง€=0, ๋‘๋ฒˆ์งธ ํŽ˜์ด์ง€=1, ...) - ์„ ํƒ ์•ˆ ํ•  ์‹œ ์ฒซ๋ฒˆ์งธ ํŽ˜์ด์ง€
  • Request Body
  • Success Response
    • URI: /photographers
    • HTTP Status Code: 200 OK
    [
        {
            "photographerId": 1,
            "nickname": "sunnasdfy",          
            "lowestPay": null,
            "image": null,
            "areas": [],
            "specialList": {
                "keywords": [
                    "FAMILY"
                ]
            },
            "tags": {
                "tag1": null,
                "tag2": null,
                "tag3": null
            }
        },
        {
            "photographerId": 2,
            "nickname": "sunnasrtdfgdfy",
            "lowestPay": null,
            "image": null,
            "areas": [],
            "specialList": {
                "keywords": [
                    "FAMILY"
                ]
            },
            "tags": {
                "tag1": null,
                "tag2": null,
                "tag3": null
            }
        },
        "..." 
    ]
  • Success Response
    • URI: /photographers?areaId=1&special=WEDDING&ableDate=2023-11-01T00:00:00
    • HTTP Status Code: 200 OK
    [
        {
            "photographerId": 5,
            "nickname": "์„œ๋‹ˆ์„œ๋‹ˆ",
            "lowestPay": 5000,
            "image": "https://test.image3.com",
            "areas": [
                {
                    "areaId": 1,
                    "metropolitan": "์„œ์šธ",
                    "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
                },
                {
                    "areaId": 2,
                    "metropolitan": "์„œ์šธ",
                    "city": "์„œ์ดˆ/์‹ ์‚ฌ/๋ฐฉ๋ฐฐ"
                },
                {
                    "areaId": 3,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ž ์‹ค/์‹ ์ฒœ"
                }
            ],
            "specialList": {
                "keywords": [
                    "WEDDING"
                ]
            },
            "tags": {
                "tag1": "์›…๋ƒฅ",
                "tag2": "๋ฐœ๋ž„",
                "tag3": "์งฑ๊ท€"
            }
        },
        {
            "photographerId": 24,
            "nickname": "์ดํ•ด์—ฐ",
            "lowestPay": 250000,
            "image": "https://images.unsplash.com/photo-1537633552985-df8429e8048b?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Njd8fCVFQyU5QiVBOCVFQiU5NCVBOSUyMCVFQiU4RiU5OSVFQyU5NiU5MXxlbnwwfHwwfHx8MA%3D%3D&auto=format&fit=crop&w=500&q=60",
            "areas": [
                {
                    "areaId": 1,
                    "metropolitan": "์„œ์šธ",
                    "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
                },
                {
                    "areaId": 2,
                    "metropolitan": "์„œ์šธ",
                    "city": "์„œ์ดˆ/์‹ ์‚ฌ/๋ฐฉ๋ฐฐ"
                },
                {
                    "areaId": 3,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ž ์‹ค/์‹ ์ฒœ"
                },
                {
                    "areaId": 4,
                    "metropolitan": "์„œ์šธ",
                    "city": "์—ฌ์˜๋„/๋‹น์‚ฐ/๋ฌธ๋ž˜"
                },
                {
                    "areaId": 24,
                    "metropolitan": "๊ฒฝ๊ธฐ",
                    "city": "์ˆ˜์› ์ธ๊ณ„"
                },
                {
                    "areaId": 25,
                    "metropolitan": "๊ฒฝ๊ธฐ",
                    "city": "์ˆ˜์›์—ญ/๊ตฌ์šด/ํ–‰๊ถ/์žฅ์•ˆ๊ตฌ"
                },
                {
                    "areaId": 26,
                    "metropolitan": "๊ฒฝ๊ธฐ",
                    "city": "์ˆ˜์›์‹œ์ฒญ/๊ถŒ์„ /์˜ํ†ต/์„ธ๋ฅ˜"
                },
                {
                    "areaId": 27,
                    "metropolitan": "๊ฒฝ๊ธฐ",
                    "city": "์•ˆ์–‘/ํ‰์ดŒ/์ธ๋•์›/๊ณผ์ฒœ"
                }
            ],
            "specialList": {
                "keywords": [
                    "WEDDING",
                    "FAMILY"
                ]
            },
            "tags": {
                "tag1": "๋ถ€๋ถ€",
                "tag2": "๊ฐ€์กฑ",
                "tag3": "์‚ฌ๋ž‘"
            }
        }
    ]

๊ฒ€์ƒ‰์–ด๋กœ ์‚ฌ์ง„ ์ž‘๊ฐ€ ๋ชฉ๋ก ์กฐํšŒ

  • ๊ฒ€์ƒ‰์–ด์— ํ•ด๋‹นํ•˜๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ฑฐ๋‚˜, ๊ฒ€์ƒ‰์–ด์— ํ•ด๋‹นํ•˜๋Š” ์ง€์—ญ์—์„œ ํ™œ๋™ํ•˜๋Š” ์‚ฌ์ง„ ์ž‘๊ฐ€ ๋ชฉ๋ก์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photographers/search?keyword={keyword}
  • Query Parameter
    • keyword (๊ฒ€์ƒ‰์–ด, ๋ฌธ์ž ๋ฐ ์ˆซ์ž)
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "nicknameResult": [
            {
                "photographerId": 5,
                "nickname": "์„œ๋‹ˆ์„œ๋‹ˆ",
                "lowestPay": 5000,
                "image": "https://test.image3.com",
                "areas": [
                    {
                        "areaId": 1,
                        "metropolitan": "์„œ์šธ",
                        "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
                    },
                    {
                        "areaId": 2,
                        "metropolitan": "์„œ์šธ",
                        "city": "์„œ์ดˆ/์‹ ์‚ฌ/๋ฐฉ๋ฐฐ"
                    },
                    {
                        "areaId": 3,
                        "metropolitan": "์„œ์šธ",
                        "city": "์ž ์‹ค/์‹ ์ฒœ"
                    }
                ],
                "specialList": {
                    "keywords": [
                        "WEDDING"
                    ]  
                },
                "tags": {
                    "tag1": "์›…๋ƒฅ",
                    "tag2": "๋ฐœ๋ž„",
                    "tag3": "์งฑ๊ท€"
                }
            }
        ],
        "areaResult": []
    }

์‚ฌ์ง„ ์ž‘๊ฐ€ ์ด๋ฆ„ ๋ชฉ๋ก ์กฐํšŒ

  • ๋ชจ๋“  ์‚ฌ์ง„ ์ž‘๊ฐ€ ์ด๋ฆ„์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photographers/name
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    [
        {
            "photographerId": 1,
            "nickname": "sunnasdfy"
        },
        {
            "photographerId": 2,
            "nickname": "sunnasrtdfgdfy"
        },
        {
            "photographerId": 3,
            "nickname": "sunnasrtdfgdfy"
        },
        {
            "photographerId": 4,
            "nickname": "sunnasrtdfgdfy"
        },
        {
            "photographerId": 5,
            "nickname": "์„œ๋‹ˆ์„œ๋‹ˆ"
        },
        "..."
    ]

Spot

์ŠคํŒŸ ๊ฐœ๋ณ„ ์กฐํšŒ

  • ์ŠคํŒŸ ํ•˜๋‚˜๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /spots/{spotId}
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "spotId": 1,
        "name": "2012_๋น„๋ณด์ด R16 Korea",
        "address": "์„œ์šธ ์†กํŒŒ๊ตฌ ์˜ฌ๋ฆผํ”ฝ๊ณต์› ์˜ฌ๋ฆผํ”ฝํ™€",
        "theme": null,
        "images": []
    }

์ง€์—ญ์œผ๋กœ ์ŠคํŒŸ ๋ชฉ๋ก ์กฐํšŒ

  • ์ง€์—ญ์„ ๊ธฐ์ค€์œผ๋กœ ์ŠคํŒŸ์„ ๋ชฉ๋ก ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /spots/area
  • Request Body
    {
        "areaId" : 17
    }
  • Success Response
    • HTTP Status Code: 200 OK
    [
        {
            "spotId": 7,
            "name": "9.81 ํŒŒํฌ",
            "address": "์ œ์ฃผํŠน๋ณ„์ž์น˜๋„ ์ œ์ฃผ์‹œ ์• ์›”์",
            "theme": null,
            "images": []
        },
        {
            "spotId": 11,
            "name": "์• ์›” ๊ตฌ์—„๋ฆฌ ๋Œ์—ผ์ „",
            "address": "์ œ์ฃผํŠน๋ณ„์ž์น˜๋„ ์ œ์ฃผ์‹œ ์• ์›”์",
            "theme": null,
            "images": []
        }
    ]

์ŠคํŒŸ ์ด๋ฏธ์ง€ ๊ฐœ๋ณ„ ์กฐํšŒ

  • ์ŠคํŒŸ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /images/{imageId}
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "imageId": 1,
        "spot": {
            "spotId": 1,
            "area": {
                "areaId": 1,
                "metropolitan": "์„œ์šธ",
                "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
            },
            "name": "2012_๋น„๋ณด์ด R16 Korea",
            "address": "์„œ์šธ ์†กํŒŒ๊ตฌ ์˜ฌ๋ฆผํ”ฝ๊ณต์› ์˜ฌ๋ฆผํ”ฝํ™€",
            "theme": null
        },
        "image": null
    }

์ง€์—ญ ๊ฐœ๋ณ„ ์กฐํšŒ

  • ์ง€์—ญ ํ•˜๋‚˜๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /areas/{areaId}
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "areaId": 1,
        "metropolitan": "์„œ์šธ",
        "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
    }

Plan

์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ ๊ฐœ๋ณ„ ์กฐํšŒ

  • ์ดฌ์˜ ์˜ˆ์•ฝ ๊ฐœ๋ณ„ ์กฐํšŒ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /plans/{planId}
  • Request Body
    Headers: Authorization(ํ•„์ˆ˜) Body:
  {
    "planId": "18ad30a9-3fec-4013-b192-cf7252a42d26",
    "customer": 7,
    "photographer": 1,
    "planDate": "2023-09-15T12:30:00",
    "category": "COUPLE",
    "people": 2,
    "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
    "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
    "price": null,
    "placeName": null,
    "placeAddress": null,
    "status": "DELIVERY",
    "messages": [
        {
            "messageId": 1,
            "isMine": true,
            "sender": "MEMBER",
            "contents": "hey"
        },
        {
            "messageId": 2,
            "isMine": true,
            "sender": "MEMBER",
            "contents": "hey"
        },
        {
            "messageId": 3,
            "isMine": true,
            "sender": "MEMBER",
            "contents": "hey"
        },
        {
            "messageId": 4,
            "isMine": false,
            "sender": "PHOTOGRAPHER",
            "contents": "hey"
        },
        {
            "messageId": 5,
            "isMine": false,
            "sender": "PHOTOGRAPHER",
            "contents": "๋‚˜๋Š”์•ผ ์‚ฌ์ง„์ž‘๊ฐ€"
        }
    ]
  }

์ž‘๊ฐ€ ์ดฌ์˜ ์š”์ฒญ ๋ชฉ๋ก ์กฐํšŒ

  • ๊ณ ๊ฐ์ด ์ž์‹ ์˜ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ๋ชจ๋‘ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /plans/photographer/client
  • Request Body
    Headers: Authorization
{
    "request": [
        {
            "planId": "3bdb4bbb-fa41-49dd-a600-8d27eefb222b",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "55db891e-cb1f-439a-bbc9-81eef74fcb30",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "63e57713-dfa7-4020-8b50-4c1b71f37f49",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "a837aae4-8fcf-4b52-b022-f752d987fd4f",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "cfd4d397-43f1-4c80-93cd-cbf21f716cc5",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "ddf82a29-7a15-49e3-ab7f-80afa9610227",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "de054f04-e875-4596-8348-f55a6ba73108",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        },
        {
            "planId": "f1079490-792d-4a61-97a2-21291c846831",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T12:30:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "REQUEST"
        }
    ],
    "reserved": [
        {
            "planId": "5c510b42-a682-4f94-9854-2ba0942530e7",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T00:00:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "TODAY"
        },
        {
            "planId": "67abe74e-208c-4f8d-b995-05baac263062",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T00:00:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "TODAY"
        },
        {
            "planId": "b1649bec-20f3-4424-b3b7-c8d9aca97ca2",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T00:00:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "TODAY"
        },
        {
            "planId": "f8328bf9-9f99-4576-950f-09c8203f8a00",
            "customer": 7,
            "photographer": 1,
            "planDate": "2023-09-15T00:00:00",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "price": null,
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "COMPLETE"
        }
    ]
}

๊ณ ๊ฐ ์˜ˆ์•ฝ ๋‚ด์—ญ ์กฐํšŒ

  • ๊ณ ๊ฐ์ด ์ž์‹ ์˜ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ๋ชจ๋‘ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /plans/member
  • Request Body
    Headers: Authorization
  • Success Response
  • HTTP Status Code: 200 OK

์‚ฌ์ง„ ์ž‘๊ฐ€ ์˜ˆ์•ฝ ๋‚ด์—ญ ์กฐํšŒ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์ž์‹ ์˜ ์˜ˆ์•ฝ ๋‚ด์—ญ์„ ๋ชจ๋‘ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /plans/photographer
  • Request Body
    Headers: Authorization
  • Success Response
    • HTTP Status Code: 200 OK
    [
      {
            "planId": "57351f46-e6b7-4fd6-b826-174a71a71284",
            "customer": 25,
            "photographer": 14,
            "planDate": "2022-11-10 12:30",
            "category": "COUPLE",
            "people": 2,
            "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
            "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
            "status": "RESERVED"
        },
        "..."
    ]

์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ ์‹ ์ฒญ

  • ๊ณ ๊ฐ์ด ์‚ฌ์ง„ ์ž‘๊ฐ€์—๊ฒŒ ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ์„ ์‹ ์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /plans
  • Request Body
    Headers: Authorization
    {
        "photographerId" : 19,
        "planDate" : "2022-11-01T14:00:00",
        "time" : "12:30",
        "category" : "FRIEND",
        "people" : 4,
        "wishPlace" : "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
        "request" : "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
        "customer": 21,
        "photographer": 19,
        "planDate": "2022-11-01T14:00:00",
        "category": "FRIEND",
        "people": 4,
        "time" : "12:30",
        "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
        "price": null,
        "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
        "status": "REQUEST"
    }

์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ ๊ฑฐ์ ˆ ๋ฐ ์ทจ์†Œ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์‹ ์ฒญ๋œ ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ์„ ๊ฑฐ์ ˆ ๋ฐ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /plans/refuse
  • Request Body
    Headers: Authorization
    {
        "planId" : "57351f46-e6b7-4fd6-b826-174a71a71284",
        "contents" : "์•ˆ๋…•ํ•˜์„ธ์š”^^ ์ง„์‹ฌ์„ ๋‹ด์•„ ์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์„ ๋‹ด์•„๋‚ด๋Š” ํ•ดํ”ผ์Šค๋ƒ…์ž…๋‹ˆ๋‹ค. ์‹ ์ฒญํ•ด์ฃผ์‹  ๋‚ ์€ ๋‹ค๋ฅธ ์ผ์ •์ด ์žˆ์–ด์„œ ์ดฌ์˜์ด ์–ด๋ ค์šธ ๊ฒƒ ๊ฐ™์•„์š”ใ…œใ…œ ํ˜น์‹œ 11์›” 15์ผ์ด๋‚˜ 17์ผ์€ ์–ด๋– ์‹ ๊ฐ€์š”? ๋‚ ์งœ ๊ดœ์ฐฎ์œผ์‹œ๋‹ค๋ฉด ๋‹ค์‹œ ์˜ˆ์•ฝ ์‹ ์ฒญ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ์ข‹์€ ํ•˜๋ฃจ ๋ณด๋‚ด์„ธ์š”~ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค^^"
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "status": 200,
        "code": "OK",
        "message": "์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ ๊ฑฐ์ ˆ ๋ฐ ์ทจ์†Œ",
        "details": "์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ์„ ๊ฑฐ์ ˆํ–ˆ์Šต๋‹ˆ๋‹ค."
    }

์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ๋น„์šฉ ์ž…๊ธˆ ์š”์ฒญ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ๋น„์šฉ ์ž…๊ธˆ์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /plans/deposit
  • Request Body
    Headers: Authorization
    {
        "planId" : "57351f46-e6b7-4fd6-b826-174a71a71284",
        "price" : 120000,
        "placeName" : "์—ฌ์˜๋„ ํ•œ๊ฐ•๊ณต์›",
        "placeAddress" : "์„œ์šธํŠน๋ณ„์‹œ ์˜๋“ฑํฌ๊ตฌ ์—ฌ์˜๋™๋กœ 330",
        "message" : "์ž…๊ธˆ ๊ณ„์ขŒ๋Š” ๊ตญ๋ฏผ์€ํ–‰ 1234-5678์ž…๋‹ˆ๋‹ค."
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "planId": "57351f46-e6b7-4fd6-b826-174a71a71284",
        "customer": 25,
        "photographer": 14,
        "planDate": "2022-11-10 12:30",
        "category": "COUPLE",
        "people": 2,
        "wishPlace": "ํ•œ๊ฐ•๊ณต์›",
        "time" : "12:30",
        "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
        "price": 120000,
        "placeName": "์—ฌ์˜๋„ ํ•œ๊ฐ•๊ณต์›",
        "placeAddress": "์„œ์šธํŠน๋ณ„์‹œ ์˜๋“ฑํฌ๊ตฌ ์—ฌ์˜๋™๋กœ 330",
        "message": "์ž…๊ธˆ ๊ณ„์ขŒ๋Š” ๊ตญ๋ฏผ์€ํ–‰ 1234-5678์ž…๋‹ˆ๋‹ค.",
        "status": "DEPOSIT"
    }

์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์˜ˆ์•ฝ ์™„๋ฃŒ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์ดฌ์˜ ๋น„์šฉ ์ž…๊ธˆ์„ ํ™•์ธํ•˜๊ณ  ์˜ˆ์•ฝ ์ผ์ •์„ ํ™•์ •ํ•˜์—ฌ ์˜ˆ์•ฝ์„ ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /plans/reserve
  • Request Body
    Headers: Authorization
    {
        "planId" : "57351f46-e6b7-4fd6-b826-174a71a71284",
        "contents" : "์ž…๊ธˆ ํ™•์ธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ดฌ์˜ ์‹œ ์†Œํ’ˆ์€ ์ž์œ ๋กญ๊ฒŒ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค! ์ดฌ์˜์ผ์— ๋ต™๊ฒ ์Šต๋‹ˆ๋‹ค^^"
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "status": 200,
        "code": "OK",
        "message": "์Šค๋ƒ… ์‚ฌ์ง„ ์˜ˆ์•ฝ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
        "details": "์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์ดฌ์˜์— ๋Œ€ํ•œ ์ž…๊ธˆ์„ ํ™•์ธํ–ˆ๊ณ , ์ดฌ์˜ ์ผ์ •์„ ํ”ฝ์Šคํ–ˆ์Šต๋‹ˆ๋‹ค."
    }

์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์ผ์ • ์ทจ์†Œ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€ ๋˜๋Š” ๊ณ ๊ฐ์ด ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์ผ์ •์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /plans/cancel
  • Request Body
    Headers: Authorization
    {
        "planId" : "57351f46-e6b7-4fd6-b826-174a71a71284",
        "reason" : "๊ฐœ์ธ ์ผ์ •",
        "refundAccount" : "์‹ ํ•œ์€ํ–‰ 2222-4444"
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "status": 200,
        "code": "OK",
        "message": "์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์ผ์ •์„ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.",
        "details": "์‚ฌ์ง„ ์ž‘๊ฐ€ ํ˜น์€ ์ผ๋ฐ˜ ๊ณ ๊ฐ์ด ์Šค๋ƒ… ์‚ฌ์ง„ ์ดฌ์˜ ์ผ์ •์„ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค."
    }

์Šค๋ƒ… ์‚ฌ์ง„ ํŒŒ์ผ ์ „๋‹ฌ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ๊ณ ๊ฐ์—๊ฒŒ ์Šค๋ƒ… ์‚ฌ์ง„ ํŒŒ์ผ์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.
  • Method: PUT
  • URI: /plans/delivery
  • Request Body
    Headers: Authorization img.png
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "status": 200,
        "code": "OK",
        "message": "์Šค๋ƒ… ์‚ฌ์ง„ ํŒŒ์ผ์„ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค.",
        "details": "์‚ฌ์ง„ ์ž‘๊ฐ€๊ฐ€ ์Šค๋ƒ… ์‚ฌ์ง„์„ ์ „๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค."
    }

Review

๋ฆฌ๋ทฐ ์ž‘์„ฑ

  • ๊ณ ๊ฐ์ด ๋ฆฌ๋ทฐ๋ฅผ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /reviews
  • Request Body
    Headers: Authorization
    {
        "planId" : "f2ce844d-1b18-480f-ac78-548818e5c417",
        "score" : 5,
        "title" : "์ธ์ƒ์‚ฌ์ง„ ์ฐ์—ˆ์–ด์š”!",
        "comment" : "์ž‘๊ฐ€๋‹˜ ๋•๋ถ„์— ์นœ๊ตฌ๋“ค๊ณผ ์ข‹์€ ์ถ”์–ต ๋งŒ๋“ค์—ˆ์–ด์š”~ ์˜ˆ์˜๊ฒŒ ์ฐ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!",
        "image" : "tourlover.jpg"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "status": 201,
        "code": "CREATED",
        "message": "๋ฆฌ๋ทฐ๊ฐ€ ๋“ฑ๋ก๋˜์—ˆ์Šต๋‹ˆ๋‹ค.",
        "details": null
    }

์‚ฌ์ง„ ์ž‘๊ฐ€์˜ ๋ฆฌ๋ทฐ ์กฐํšŒ

  • ์‚ฌ์ง„ ์ž‘๊ฐ€๋ณ„ ๋ฆฌ๋ทฐ๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /reviews/photographer/{photographerId}
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "photographer": {
            "member": {
                "email": "[email protected]",
                "nickname": "ํ–‰๋ณต์Šค๋ƒ…",
                "profile": "https://test.profile.com",
                "role": "ROLE_PHOTOGRAPHER"
            },
            "photographerId": 19,
            "lowestPay": 100000,
            "paymentImage": "https://test.payment.com",
            "bio": "์ž์—ฐ์Šค๋Ÿฌ์šด ๋ชจ์Šต์„ ๋‹ด์•„๋“œ๋ ค์š”",
            "images": {
                "image1": "https://test.image1.com",
                "image2": "https://test.image2.com",
                "image3": "https://test.image3.com",
                "image4": "https://test.image4.com",
                "image5": "https://test.image5.com",
                "image6": null,
                "image7": null,
                "image8": null,
                "image9": null,
                "image10": null
            },
            "areas": [
                {
                    "areaId": 1,
                    "metropolitan": "์„œ์šธ",
                    "city": "๊ฐ•๋‚จ/์—ญ์‚ผ/์‚ผ์„ฑ/๋…ผํ˜„"
                },
                {
                    "areaId": 2,
                    "metropolitan": "์„œ์šธ",
                    "city": "์„œ์ดˆ/์‹ ์‚ฌ/๋ฐฉ๋ฐฐ"
                },
                {
                    "areaId": 3,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ž ์‹ค/์‹ ์ฒœ"
               }
            ],
            "unableSchedules": {
                "unableDates": [
                    "2023-11-11T00:00:00"
                ]
            },
            "sns": {
                "homepage": "https://happysnap.com",
                "instagram": "happysnap_",
                "kakaoChannel": "https://pf.kakao.com/_happySNAP",
                "twitter": "happysnap_",
                "naverBlog": "https://blog.naver.com"
            },
            "specialList": {
                "keywords": [
                    "FRIEND"
                ]
            },
            "tags": {
                "tag1": "์นœ๊ตฌ",
                "tag2": "์ถ”์–ต",
                "tag3": "๋ชฝํ™˜์ "
            }
        },
        "totalReview": 4,
        "averageScore": 4.5,
        "reviews": [
            {
                "reviewId": 7,
                "plan": {
                    "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                    "customer": 21,
                    "photographer": 19,
                    "planDate": "2022-11-01T14:00:00",
                    "category": "FRIEND",
                    "people": 4,
                    "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                    "price": null,
                    "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                    "status": "DELIVERY"
                },
                "score": 5,
                "image": "snap.jpg",
                "title": "๋ฉ‹์ง„ ์‚ฌ์ง„ ๊ฐ์‚ฌํ•ด์š”",
                "comment": "์‚ฌ์ง„ ๋„ˆ๋ฌด ์˜ˆ์˜๋„ค์š”~ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค"
            },
            {
                "reviewId": 8,
                "plan": {
                    "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                    "customer": 21,
                    "photographer": 19,
                    "planDate": "2022-11-01T14:00:00",
                    "category": "FRIEND",
                    "people": 4,
                    "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                    "price": null,
                    "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                    "status": "DELIVERY"
                },
                "score": 5,
                "image": "tourlover.jpg",
                "title": "์ธ์ƒ์‚ฌ์ง„ ์ฐ์—ˆ์–ด์š”!",
                "comment": "์ž‘๊ฐ€๋‹˜ ๋•๋ถ„์— ์นœ๊ตฌ๋“ค๊ณผ ์ข‹์€ ์ถ”์–ต ๋งŒ๋“ค์—ˆ์–ด์š”~ ์˜ˆ์˜๊ฒŒ ์ฐ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!"
            },  
            {
                "reviewId": 6,
                "plan": {
                    "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                    "customer": 21,
                    "photographer": 19,
                    "planDate": "2022-11-01T14:00:00",
                    "category": "FRIEND",
                    "people": 4,
                    "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                    "price": null,
                    "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                    "status": "DELIVERY"
                },
                "score": 4,
                "image": "",
                "title": "",
                "comment": ""
            },
            {
                "reviewId": 5,
                "plan": {
                    "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                    "customer": 21,
                    "photographer": 19,
                    "planDate": "2022-11-01T14:00:00",
                    "category": "FRIEND",
                    "people": 4,
                    "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                    "price": null,
                    "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                    "status": "DELIVERY"
                },
                "score": 3,
                "image": "",
                "title": "",
                "comment": ""
            }
        ]
    }

์ผ๋ฐ˜ ๊ณ ๊ฐ์˜ ๋ฆฌ๋ทฐ ์กฐํšŒ

  • ์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ „์ฒด์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /reviews/member
  • Request Body
    Headers: Authorization
  • Success Response
    • HTTP Status Code: 200 OK
    [
        {
            "reviewId": 7,
            "plan": {
                "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                "customer": 21,
                "photographer": 19,
                "planDate": "2022-11-01T14:00:00",
                "category": "FRIEND",
                "people": 4,
                "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                "price": null,
                "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                "status": "DELIVERY"
            },
            "score": 5,
            "image": "snap.jpg",
            "title": "๋ฉ‹์ง„ ์‚ฌ์ง„ ๊ฐ์‚ฌํ•ด์š”",
            "comment": "์‚ฌ์ง„ ๋„ˆ๋ฌด ์˜ˆ์˜๋„ค์š”~ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค"
        },
        {
            "reviewId": 8,
            "plan": {
                "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                "customer": 21,
                "photographer": 19,
                "planDate": "2022-11-01T14:00:00",
                "category": "FRIEND",
                "people": 4,
                "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                "price": null,
                "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                "status": "DELIVERY"
            },
            "score": 5,
            "image": "tourlover.jpg",
            "title": "์ธ์ƒ์‚ฌ์ง„ ์ฐ์—ˆ์–ด์š”!",
            "comment": "์ž‘๊ฐ€๋‹˜ ๋•๋ถ„์— ์นœ๊ตฌ๋“ค๊ณผ ์ข‹์€ ์ถ”์–ต ๋งŒ๋“ค์—ˆ์–ด์š”~ ์˜ˆ์˜๊ฒŒ ์ฐ์–ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!"
        },
        {
            "reviewId": 6,
            "plan": {
                "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                "customer": 21,
                "photographer": 19,
                "planDate": "2022-11-01T14:00:00",
                "category": "FRIEND",
                "people": 4,
                "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                "price": null,
                "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                "status": "DELIVERY"
            },
            "score": 4,
            "image": "",
            "title": "",
            "comment": ""
        },
        {
            "reviewId": 5,
            "plan": {
                "planId": "f2ce844d-1b18-480f-ac78-548818e5c417",
                "customer": 21,
                "photographer": 19,
                "planDate": "2022-11-01T14:00:00",
                "category": "FRIEND",
                "people": 4,
                "wishPlace": "์ดํ™”์—ฌ์ž๋Œ€ํ•™๊ต",
                "price": null,
                "request": "์ž˜ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค!",
                "status": "DELIVERY"
            },
            "score": 3,
            "image": "",
            "title": "",
            "comment": ""
        }  
    ]

Message

Heart

์ข‹์•„์š” ์ƒ์„ฑ

  • ์ข‹์•„ํ•˜๋Š” ์ž‘๊ฐ€์˜ ID๋ฅผ body๋กœ ๋ฐ›์•„์„œ ์ข‹์•„์š”๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /hearts
  • Request Body
    {
        "photographerId" : 23
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "heartId": 4,
        "memberName": "yeji",
        "photographerName": "๊ฐ•์ง€์„",
        "message": "์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €์Šต๋‹ˆ๋‹ค."
    }

์ข‹์•„์š” ์ทจ์†Œ

  • ์ข‹์•„์š”๋ฅผ ๋ˆŒ๋ €๋˜ ์ž‘๊ฐ€์˜ ID๋ฅผ body๋กœ ๋ฐ›์•„์„œ ์ข‹์•„์š”๋ฅผ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.
  • Method: DELETE
  • URI: /hearts
  • Request Body
    {
        "photographerId" : 23
    }
  • Success Response
    • HTTP Status Code: 200 OK
    {
        "memberName": "yeji",
        "photographerName": "๊ฐ•์ง€์„",
        "message": "์ข‹์•„์š”๋ฅผ ์ทจ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค."
    }

์ข‹์•„์š” ๋ชจ์•„๋ณด๊ธฐ

  • ์ข‹์•„์š” ๋ˆ„๋ฅธ ์ž‘๊ฐ€๋“ค์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /hearts
  • Request Body
  • Success Response
    • HTTP Status Code: 200 OK
    [
        {
            "photographerId": 21,
            "nickname": "ํ•œ๋‚˜๋ผ",
            "lowestPay": 120000,
            "image": "https://images.unsplash.com/photo-1536010305525-f7aa0834e2c7?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8MTEyfHwlRUQlOTUlOUMlRUElQjUlQUQlMjAlRUMlOTclQUMlRUMlODQlQjF8ZW58MHx8MHx8fDA%3D&auto=format&fit=crop&w=500&q=60",
            "areas": [],
            "specialList": {
                "keywords": [
                    "FRIEND"
                ]
            },
            "tags": {
                "tag1": "์•„๋ จ",
                "tag2": "๋‚ญ๋งŒ",
                "tag3": "๋ชฝํ™˜์ "
            }
        },
        {
            "photographerId": 22,
            "nickname": "์œ ์ง„์•„",
            "lowestPay": 100000,
            "image": "https://images.unsplash.com/photo-1541339907198-e08756dedf3f?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8ODR8fCVFQyVBMSVCOCVFQyU5NyU4NSVFQyU4QSVBNCVFQiU4MyU4NXxlbnwwfHwwfHx8MA%3D%3D&auto=format&fit=crop&w=500&q=60",
            "areas": [
                {
                    "areaId": 5,
                    "metropolitan": "์„œ์šธ",
                    "city": "์‹ ๋ฆผ/์„œ์šธ๋Œ€/์‚ฌ๋‹น/๋™์ž‘"
                },
                {
                    "areaId": 9,
                    "metropolitan": "์„œ์šธ",
                    "city": "์‹ ์ดŒ/ํ™๋Œ€/ํ•ฉ์ •/์—ฐ๋‚จ"
                },
                {
                    "areaId": 12,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ข…๋กœ/๋Œ€ํ•™๋กœ/๋™๋ฌ˜"
                },
                {
                    "areaId": 13,
                    "metropolitan": "์„œ์šธ",
                    "city": "์„ฑ์‹ ์—ฌ๋Œ€/์„ฑ๋ถ/์›”๊ณก"
                },
                {
                    "areaId": 14,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ดํƒœ์›/์šฉ์‚ฐ/์„œ์šธ์—ญ"
                },
                {
                    "areaId": 18,
                    "metropolitan": "์„œ์šธ",
                    "city": "ํšŒ๊ธฐ/๊ณ ๋ ค๋Œ€/์ฒญ๋Ÿ‰๋ฆฌ/์‹ ์„ค๋™"
                },
                {
                    "areaId": 20,
                    "metropolitan": "์„œ์šธ",
                    "city": "์™•์‹ญ๋ฆฌ/์„ฑ์ˆ˜/๊ธˆํ˜ธ"
                },
                {
                    "areaId": 22,
                    "metropolitan": "์„œ์šธ",
                    "city": "์ƒ๋ด‰/์ค‘๋ž‘/๋ฉด๋ชฉ"
                },
                {
                    "areaId": 23,
                    "metropolitan": "์„œ์šธ",
                    "city": "ํƒœ๋ฆ‰/๋…ธ์›/๋„๋ด‰/์ฐฝ๋™"
                }
            ],
            "specialList": {
                "keywords": [
                    "FRIEND",
                    "GRADUATION"
                ]
            },
            "tags": {
                "tag1": "์šฐ์ •",
                "tag2": "์ฒญ์ถ˜",
                "tag3": "ํ–‰๋ณต"
            }
        },
        {
            "photographerId": 23,
            "nickname": "๊ฐ•์ง€์„",
            "lowestPay": 200000,
            "image": "https://images.unsplash.com/photo-1603367563698-67012943fd67?ixlib=rb-4.0.3&ixid=M3wxMjA3fDB8MHxzZWFyY2h8Njh8fCVFQSVCMCU4MCVFQyVBMSVCMSVFQyU4MiVBQyVFQyVBNyU4NHxlbnwwfHwwfHx8MA%3D%3D&auto=format&fit=crop&w=500&q=60",
            "areas": [],
            "specialList": {
                "keywords": [
                    "FAMILY"
                ]
            },
            "tags": {
                "tag1": "๊ฐ€์กฑ",
                "tag2": "์‚ฌ๋ž‘",
                "tag3": "ํ–‰๋ณต"
            }
        }
    ]

Snap Photo

๋ฒ ์ŠคํŠธ ์Šค๋ƒ…์‚ฌ์ง„ ๋“ฑ๋ก

  • ๊ณ ๊ฐ์ด ๋ฒ ์ŠคํŠธ ์Šค๋ƒ…์‚ฌ์ง„์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.
  • Method: POST
  • URI: /photos
  • Request Body
    Headers: Authorization
    {
        "imageUrl" : "http://image.co.kr",
        "photoDate" : "2023-09-10T20:32:00",
        "location" : "์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์šฐ๋ฆฌ์ง‘",
        "photographerId" : 25,
        "tag1" : "tag1",
        "tag2" : "tag2",
        "tag3" : "tag3"
    }
  • Success Response
    • HTTP Status Code: 201 Created
    {
        "snapPhotoId": 1,
        "imageUrl": "http://image.co.kr",
        "photoDate": "2023-09-10T20:32:00",
        "location": "์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์šฐ๋ฆฌ์ง‘",
        "photographerId": 25,
        "photographerName": "์‚ฌ์ง„์ž‘๊ฐ€์˜ˆ์ง€",
        "tag1": "tag1",
        "tag2": "tag2",
        "tag3": "tag3"
    }

๋ฒ ์ŠคํŠธ ์Šค๋ƒ…์‚ฌ์ง„ ๋ชจ์•„๋ณด๊ธฐ

  • ๊ณ ๊ฐ์ด ๋“ฑ๋กํ•œ ๋ฒ ์ŠคํŠธ ์Šค๋ƒ…์‚ฌ์ง„๋“ค์„ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.
  • ํ•œ ํŽ˜์ด์ง€์— 6๊ฐœ ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.
  • Method: GET
  • URI: /photos
  • Query Parameter (์„ ํƒ)
    • page (ํŽ˜์ด์ง€, ์ˆซ์ž | ์ฒซ๋ฒˆ์งธ ํŽ˜์ด์ง€=0, ๋‘๋ฒˆ์งธ ํŽ˜์ด์ง€=1, ...) - ์„ ํƒ ์•ˆ ํ•  ์‹œ ์ฒซ๋ฒˆ์งธ ํŽ˜์ด์ง€
  • Request Body
    Headers: Authorization
  • Success Response
    • HTTP Status Code: 200 OK
    [
        {
            "snapPhotoId": 1,
            "imageUrl": "http://image.co.kr",
            "photoDate": "2023-09-10T20:32:00",
            "location": "์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์šฐ๋ฆฌ์ง‘",
            "photographerId": 25,
            "photographerName": "์‚ฌ์ง„์ž‘๊ฐ€์˜ˆ์ง€",
            "tag1": "tag1",
            "tag2": "tag2",
            "tag3": "tag3"
        },
        {
            "snapPhotoId": 2,
            "imageUrl": "http://image.com",
            "photoDate": "2023-09-21T00:16:00",
            "location": "์„œ์šธ์‹œ ๋งˆํฌ๊ตฌ ์ค‘๋™๋™",
            "photographerId": 25,
            "photographerName": "์‚ฌ์ง„์ž‘๊ฐ€์˜ˆ์ง€",
            "tag1": "ํƒœ๊ทธ1",
            "tag2": "ํƒœ๊ทธ2",
            "tag3": "ํƒœ๊ทธ๊ทธ3"
        }
    ] 
Clone this wiki locally