WayPoint v1
    • Auth
      • 소셜 로그인
        GET
      • 토큰 재발급
        POST
      • 로그아웃
        POST
      • [개발 서버] 로그인
        POST
    • Users
      • 유저 조회
        GET
      • 유저 정보 수정 (닉네임)
        PUT
      • 약관 동의
        PATCH
      • 프로필 이미지 변경
        PATCH
      • 프로필 이미지 삭제
        DELETE
      • 계정 탈퇴
        DELETE
    • Places
      • 장소 검색
        GET
    • Collections
      • 컬렉션
        • 컬렉션 목록 조회 [페이징O]
        • 컬렉션 조회
        • 컬렉션과 연결된 플랜 조회
        • 컬렉션 생성
        • 컬렉션 수정
        • 컬렉션 삭제
        • 컬렉션 소유자 변경
      • 컬렉션 멤버
        • 컬렉션 멤버 조회
        • 컬렉션 멤버 강퇴
        • 컬렉션에서 나가기
      • 컬렉션 장소
        • URL 장소 추출
          • URL 콘텐츠 분석을 통한 장소 추출
          • 마지막으로 요청한 추출 작업 조회
          • 추출 작업 결과 조회
          • 추출 작업 무시(삭제)
          • 추출 결과로 컬렉션에 장소 추가
        • 검색 결과에서 컬렉션에 장소 추가
        • 컬렉션 장소 목록 조회
        • 컬렉션 장소 상세 조회
        • 컬렉션 장소 메모 수정
        • 컬렉션 장소 삭제
        • 컬렉션 장소 PICK/PASS
      • 컬렉션 초대
        • 컬렉션 초대 링크 생성
    • Plans
      • 플랜
        • 플랜 목록 조회
        • 플랜 조회
        • 플랜 생성
        • 플랜 수정
        • 플랜 삭제
        • 플랜 소유자 변경
      • 플랜 멤버
        • 플랜 멤버 목록 조회
        • 플랜 멤버 내보내기
        • 플랜에서 나가기
      • 플랜 초대
        • 플랜 초대 링크 생성
      • 플랜 컬렉션
        • 플랜에 연결된 컬렉션 조회
        • 플랜에 연결된 컬렉션의 장소 조회
        • 플랜에 연결된 컬렉션의 장소 상세 조회
        • 플랜에 컬렉션 추가
        • 플랜에 연결된 컬렉션 삭제
    • Blocks
      • 플랜 장소 (블록)
        • 블록 목록 조회 [페이징O]
        • 블록 상세 조회
        • 블록 추가
        • 블록 추가 by place
        • 블록 수동 추가
        • 블록 수정 (일자/시간/메모)
        • 블록 삭제
        • 블록에 후보지 추가
        • 블록에서 후보지 확정 v2
        • 후보지 조회 (지출 포함)
        • 블록에 후보지 삭제 삭제
      • 블록 의견
        • 블록 의견 목록 조회
        • 블록 의견 조회
        • 블록에 의견 추가
        • 블록 의견 수정
        • 블록 의견 삭제
    • Budgets
      • 예산 조회
        GET
      • 예산 수정
        PATCH
      • 지출 추가
        POST
      • 지출 항목 조회 [페이징X]
        GET
      • 지출 수정
        PUT
      • 지출 삭제
        DELETE
    • ShareLinks
      • 초대링크 접속
    • Notification
      • 알림 조회
      • 알림 읽음
      • 알림 전체 읽음
    • Schemas
      • User
        • request
          • UserUpdate
        • User
      • Place
        • PlaceResponse
        • SocialMediaResponse
        • PlaceCategory
        • SocialMediaType
      • Collection
        • PickPass
          • PickPassResponse
        • CollectionResponse
        • CollectionMemberResponse
        • CollectionPlaceResponse
        • CollectionPlaceDetailResponse
        • FromUrlStatus
        • FailureCode
        • ExtractionJobResponse
      • Plan
        • PlanResponse
        • PlanMemberResponse
        • PlanCollectionResponse
        • PlanAddedBy
        • PlanUpdateResponse
        • PlanDay
        • DayInfo
      • Block
        • sub
          • BlockStatus
          • TineBlockType
        • opinion
          • BlockOpinion
          • OpinionType
          • BlockOpinionSummary
        • BlockResponse
        • BlockDetailResponse
        • CandidateResponse
        • CandidateGroupResponse
        • CandidateExpenseResponse
      • Budget
        • BudgetItem_Type
        • BudgetResponse
        • BudgetItemRequest
        • ExpenseResponse
        • ExpenseGroupResponse
        • expenseItemResponse
      • ShareLinks
        • ShareLinkResponse
      • Global
        • ProblemDetail
      • Notification
        • NotificationResponse

    Auth

    {
        "title": "Unauthorized",
        "status": 401,
        "detail": "토큰이 만료되었습니다.",
        "instance": "/plans/123",
        "code": "EXPIRED_TOKEN"
    }
    위와 같은 에러 구조에서 code로 구분할 수 있습니다.
    게스트 관련 로직은 ShareLink를 참고해 주세요.
    [공통 401 에러]
    MISSING_TOKEN: 토큰이 존재하지 않으면 발생합니다.
    EXPIRED_TOKEN: 만료된 토큰입니다. /reissue를 호출해주시면 됩니다.
    만약 /reissue에서도 에러가 발생한다면 만료된 리프레시 토큰이라는 뜻이라서 로그아웃 상태가 된다고 보시면 됩니다. (토큰 재발급 시 리프레시 토큰을 갱신하는 RTR 방식입니다.)
    INVALID_TOKEN: 토큰이 유효하지 않으면 발생합니다.
    [공통 403 에러]
    GUEST_FORBIDDEN: 게스트가 접근할 수 없는 API에서 발생합니다. (각 명세서에 사용 가능 여부가 명시되어 있습니다.)
    로그인을 유도하는 팝업이 뜨거나 로그인 화면으로 이동하는 경우일 것 같습니다.
    FORBIDDEN: 사용자 권한이 부족할 때 발생합니다.
    (FORBIDDEN_NOT_GUEST, FORBIDDEN_NOT_MEMBER 처럼 FORBIDDEN_ 으로 시작하는 코드가 발생합니다. 각 명세에 추가되어 있습니다.)
    TERMS_REQUIRED: 약관 동의 화면으로 이동해주시면 됩니다.

    {
        "title": "Bad Request",
        "status": 400,
        "detail": "유효성 검사에 실패했습니다.",
        "instance": "/projects/123",
        "errors": [
            {
                "field": "age",
                "value": 5,
                "code": "Min",
                "reason": "20 이상이어야 합니다"
            },
            {
                "field": "name",
                "code": "NotBlank",
                "reason": "이름은 필수입니다."
            },
            {
                "field": "tags",
                "code": "NotEmpty",
                "reason": "비어 있을 수 없습니다"
            }
        ]
    }
    [400 에러]
    제약 조건 에러인 경우 errors에 어떤 조건이 실패했는지 배열로 있습니다.
    요청한 값이 null이 아니라면 value에 어떤 값이였는지 반환됩니다.
    field는 요청한 값의 필드 이름입니다.
    code는 어떤 제약 조건에서 실패했는지를 나타냅니다.
    코드
    NotBlank
    NotEmpty
    NotNull
    Size
    Min
    Max
    Size
    Range
    URL
    TitlePolicy한글, 영문, 숫자, 특수문자(' _), 이모지
    NicknamePolicy2~10자, 한글/영문/숫자만 가능 (공백/특수문자 불가)
    MemoPolicy한글, 영문, 숫자, 이모지, 특수문자(!@#$%^&*()-_+=[]{} ,.?/) 및 줄바꿈
    Modified at 2026-03-02 17:47:32
    Next
    소셜 로그인
    Built with