Auth

회원 가입

HTTP request

POST /auth/signup HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 101
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com",
  "password" : "password1234",
  "nickname" : "강철멘탈"
}

HTTP response

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 283

{
  "statusCode" : 201,
  "message" : "회원 가입",
  "data" : {
    "email" : "mytamin@naver.com",
    "nickname" : "강철멘탈",
    "profileImgUrl" : null,
    "beMyMessage" : "마음 면역력이 높아질",
    "mytaminHour" : null,
    "mytaminMin" : null
  }
}

Request fields

Path Type Description

email

String

*이메일

password

String

*비밀번호 (8 ~ 30자)

nickname

String

*닉네임 (1 ~ 9자)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.email

String

이메일

data.nickname

String

닉네임

data.profileImgUrl

Null

프로필 이미지 URL (default : null)

data.beMyMessage

String

'되고싶은 내 모습' 메세지 (default : "마음 면역력이 높아질")

data.mytaminHour

Null

마이타민 섭취 지정 시간 HH (24시간) (default : null)

data.mytaminMin

Null

마이타민 섭취 지정 시간 MM (default : null)

Exception response

  • EMAIL_PATTERN_ERROR : 이메일 형식이 정해진 패턴("^(.[_a-z0-9-])*@(?:\w+\.)\w$") 과 다를 경우

  • PASSWORD_PATTERN_ERROR : 비밀번호가 정해진 패턴("^(?=.*[0-9])(?=.*[A-Za-z]).{8,30}$") 과 다를 경우

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 147

{
  "statusCode" : 400,
  "errorCode" : 2000,
  "errorName" : "EMAIL_PATTERN_ERROR",
  "message" : "잘못된 형식의 이메일입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 184

{
  "statusCode" : 400,
  "errorCode" : 2001,
  "errorName" : "PASSWORD_PATTERN_ERROR",
  "message" : "비밀번호는 영문, 숫자를 포함한 8 ~ 30자리여야 합니다."
}
HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 409,
  "errorCode" : 2002,
  "errorName" : "USER_ALREADY_EXIST_ERROR",
  "message" : "이미 가입된 유저입니다."
}

기본 로그인

  • 로그인 성공 시 accessToken과 refreshToken을 발급한다.

HTTP request

POST /auth/default/login HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 69
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com",
  "password" : "password1234"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 164

{
  "statusCode" : 200,
  "message" : "기본 로그인",
  "data" : {
    "accessToken" : "{{ACCESS_TOKEN}}",
    "refreshToken" : "{{REFRESH_TOKEN}}"
  }
}

Request fields

Path Type Description

email

String

*이메일

password

String

*비밀번호 (8 ~ 30자)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.accessToken

String

액세스 토큰 (유효 기간 : 30일)

data.refreshToken

String

리프레쉬 토큰 (유효 기간 : 180일)

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 145

{
  "statusCode" : 404,
  "errorCode" : 3000,
  "errorName" : "USER_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 유저입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 144

{
  "statusCode" : 400,
  "errorCode" : 3001,
  "errorName" : "PASSWORD_MISMATCH_ERROR",
  "message" : "잘못된 비밀번호입니다."
}

이메일 중복 체크

  • 중복된 이메일이 존재할 경우 true, 존재하지 않을 경우 false를 리턴한다.

HTTP request

GET /auth/check/email/mytamin@naver.com HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Disposition: inline;filename=f.txt
Content-Type: application/json;charset=UTF-8
Content-Length: 86

{
  "statusCode" : 200,
  "message" : "이메일 중복 체크",
  "data" : true
}

Path parameters

/auth/check/email/{email}
Parameter Description

email

*이메일

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data

Boolean

이메일 중복 여부

닉네임 중복 체크

  • #TIP '닉네임 중복' 조건을 더이상 체크하지 않기 때문에, FE에 반영된 후 삭제될 예정

  • 중복된 닉네임이 존재할 경우 true, 존재하지 않을 경우 false를 리턴한다.

HTTP request

GET /auth/check/nickname/mental-zzang HTTP/1.1
Content-Type: application/json;charset=UTF-8
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 86

{
  "statusCode" : 200,
  "message" : "닉네임 중복 체크",
  "data" : true
}

Path parameters

/auth/check/nickname/{nickname}
Parameter Description

nickname

*닉네임

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data

Boolean

닉네임 중복 여부

토큰 재발급

  • 새로 발급한 accessToken과 기존의 refreshToken을 리턴한다.

    • refreshToken의 만료 기간이 2일 이내로 남았을 경우 refreshToken 또한 새로 발급한다.

  • 만약 403 응답(= INVALID_TOKEN_ERROR)일 경우에는 재로그인하도록 한다.

HTTP request

POST /auth/reissue HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 78
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com",
  "refreshToken" : "{{REFRESH_TOKEN}}"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 164

{
  "statusCode" : 200,
  "message" : "토큰 재발급",
  "data" : {
    "accessToken" : "{{ACCESS_TOKEN}}",
    "refreshToken" : "{{REFRESH_TOKEN}}"
  }
}

Request fields

Path Type Description

email

String

*이메일

refreshToken

String

*리프레쉬 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.accessToken

String

액세스 토큰 (유효 기간 : 30일)

data.refreshToken

String

리프레쉬 토큰 (유효 기간 : 180일)

Exception response

  • INVALID_TOKEN_ERROR

    • DB에 저장된 refreshToken과 일치하지 않는 경우

    • refreshToken 자체가 잘못 되었거나 만료된 경우

HTTP/1.1 403 Forbidden
Content-Type: application/json;charset=UTF-8
Content-Length: 134

{
  "statusCode" : 403,
  "errorCode" : 1001,
  "errorName" : "INVALID_TOKEN_ERROR",
  "message" : "잘못된 토큰입니다."
}
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 145

{
  "statusCode" : 404,
  "errorCode" : 3000,
  "errorName" : "USER_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 유저입니다."
}

이메일 인증 코드 전송 1

  • 회원 가입을 위한 이메일 인증 코드 전송 API이다.

HTTP request

POST /auth/signup/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 37
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 84

{
  "statusCode" : 200,
  "message" : "회원가입을 위한 이메일 인증"
}

Request fields

Path Type Description

email

String

*인증할 이메일

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

이메일 인증 코드 전송 2

  • 비밀번호 재설정을 위한 이메일 인증 코드 전송 API이다.

  • '이메일 인증 코드 전송 1' API와 다르게, 가입된 유저인지 확인하는 로직이 추가적으로 존재하므로, 두 API를 구분하여 사용한다.

HTTP request

POST /auth/reset/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 37
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 94

{
  "statusCode" : 200,
  "message" : "비밀번호 재설정을 위한 이메일 인증"
}

Request fields

Path Type Description

email

String

*인증할 이메일

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

이메일 인증 코드 확인

  • 인증이 완료되었을 경우 true, 완료되지 않았을 경우 false를 리턴한다.

  • '이메일 인증 코드 전송 1', ''이메일 인증 코드 전송 2' API에서 전송한 인증 코드를 확인하는 로직은 동일하므로, 같은 API를 사용하여 인증한다.

HTTP request

POST /auth/code HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 65
Host: MY-TAMIN-URL

{
  "email" : "mytamin@naver.com",
  "authCode" : "xx0m98Fw"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 93

{
  "statusCode" : 200,
  "message" : "이메일 인증 코드 확인",
  "data" : true
}

Request fields

Path Type Description

email

String

*인증할 이메일

authCode

String

*사용자가 입력한 인증번호

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data

Boolean

인증 코드 일치 여부

비밀번호 재설정

  • 유저가 비밀번호를 잊어버렸을 경우 해당 API를 사용해 비밀번호를 재설정한다.

  • 비밀번호 재설정 이전, 이메일 인증 과정을 거쳤다고 가정한다.

HTTP request

PUT /auth/password HTTP/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 68
Host: MY-TAMIN-URL

{
  "password" : "newnew1234!",
  "email" : "mytamin@naver.com"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 67

{
  "statusCode" : 200,
  "message" : "비밀번호 재설정"
}

Request fields

Path Type Description

email

String

*이메일

password

String

*재설정할 비밀번호 (8 ~ 30자)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 145

{
  "statusCode" : 404,
  "errorCode" : 3000,
  "errorName" : "USER_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 유저입니다."
}

Home

웰컴 메세지

  • 조건에 따라 웰컴 메시지를 리턴한다.

  • 조건 1, 2, 3 순으로 높은 우선 순위가 적용된다.

  • 조건

    • 조건 1. 마이타민 섭취 완료

      • 오늘 하루도 수고 많았어요 :)

    • 조건 2. 마이타민 섭취 지정 시간 및 섭취 여부

      • 섭취 지정 시간 2시간 전 : 오늘의 마이타민 섭취를 잊지마세요 :)

      • 섭취 지정 시간 2시간 후 : 마이타민 섭취.. 잊으시면 안 돼요 !

    • 조건 3. 시간에 따른 웰컴 메세지

      • am 5:00 ~ am 11:59 : 오늘도 힘차게 시작해볼까요 ?

      • pm 12:00 ~ pm 18:59 : 어떤 하루를 보내고 계신가요 ?

      • pm 19:00 ~ am 4:59 : 푹 쉬고 내일 만나요

HTTP request

GET /home/welcome HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 176

{
  "statusCode" : 200,
  "message" : "웰컴 메세지",
  "data" : {
    "nickname" : "강철멘탈",
    "comment" : "어떤 하루를 보내고 계신가요 ?"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.nickname

String

닉네임

data.comment

String

웰컴 메세지

행동 완료 상태

  • 1 ~ 4번 행동에 대해 유저가 행동을 완료했다면 true, 완료하지 않았다면 false를 리턴한다.

HTTP request

GET /home/progress/status HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 195

{
  "statusCode" : 200,
  "message" : "행동 완료 상태",
  "data" : {
    "breathIsDone" : true,
    "senseIsDone" : true,
    "reportIsDone" : false,
    "careIsDone" : false
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.breathIsDone

Boolean

숨 고르기 행동 완료 여부

data.senseIsDone

Boolean

감각 깨우기 행동 완료 여부

data.reportIsDone

Boolean

하루 진단 행동 완료 여부

data.careIsDone

Boolean

칭찬 처방 행동 완료 여부

Mytamin

숨 고르기 완료

  • 유저가 '숨 고르기' 행동을 완료했다면 해당 API를 요청한다.

  • 해당 API를 요청하면 유저가 '숨 고르기’를 완료한 최종 시간이 업데이트되고, 이 정보는 행동 완료 상태 API에서 유저가 행동을 완료했는지 여부를 계산하는 데에 활용된다.

HTTP request

PATCH /mytamin/breath HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 65

{
  "statusCode" : 200,
  "message" : "숨 고르기 완료"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

감각 깨우기 완료

  • 유저가 '감각 깨우기' 행동을 완료했다면 해당 API를 요청한다.

  • 해당 API를 요청하면 유저가 '감각 깨우기’를 완료한 최종 시간이 업데이트되고, 이 정보는 행동 완료 상태 API에서 유저가 행동을 완료했는지 여부를 계산하는 데에 활용된다.

HTTP request

PATCH /mytamin/sense HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 68

{
  "statusCode" : 200,
  "message" : "감각 깨우기 완료"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

최근 섭취한 마이타민

  • 하루 진단 or 칭찬 처방 중 완료하지 않은 행동이 있다면 null로 리턴된다.

  • 하루 진단/칭찬 처방은 작성 후 24시간 이내일 경우 수정이 가능하다.

    • report.canEdit, care.canEdit은 수정 가능할 경우 true, 불가능할 경우 false를 리턴한다.

  • mentalConditionCode

    • 1 : "매우 나빠요 .."

    • 2 : "나쁜 편이에요 :("

    • 3 : "그럭저럭이에요"

    • 4 : "좋은 편이에요 :)"

    • 5 : "매우 좋아요 !"

HTTP request

GET /mytamin/latest HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 670

{
  "statusCode" : 200,
  "message" : "최근 섭취한 마이타민",
  "data" : {
    "takeAt" : "11.17.Thu",
    "report" : {
      "reportId" : 1,
      "canEdit" : true,
      "mentalConditionCode" : 5,
      "mentalCondition" : "매우 좋아요 !",
      "feelingTag" : "#신나는 #즐거운 #재밌는",
      "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
    },
    "care" : {
      "careId" : 1,
      "canEdit" : true,
      "careCategory" : "이루어 낸 일",
      "careMsg1" : "오늘 할 일을 전부 했어",
      "careMsg2" : "성실히 노력하는 내 모습이 좋아"
    }
  }
}

Other response-1

  • 최근 섭취한 마이타민이 없을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 670

{
  "statusCode" : 200,
  "message" : "최근 섭취한 마이타민",
  "data" : null
}

Other response-2

  • 하루 진단만 완료했을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 670

{
  "statusCode" : 200,
  "message" : "최근 섭취한 마이타민",
  "data" : {
    "takeAt" : "10.21.Fri",
    "report" : {
      "reportId" : 1,
      "canEdit" : true,
      "mentalConditionCode" : 5,
      "mentalCondition" : "매우 좋아요 !",
      "feelingTag" : "#신나는 #즐거운 #재밌는",
      "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
    },
    "care" : null
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.takeAt

String

마이타민 섭취 날짜

data.report.reportId

Number

하루 진단 id

data.report.canEdit

Boolean

'하루 진단' 수정 가능 여부

data.report.mentalConditionCode

Number

마음 컨디션 코드

data.report.mentalCondition

String

마음 컨디션 메세지

data.report.feelingTag

String

감정 태그

data.report.todayReport

String

하루 진단

data.care.careId

Number

칭찬 처방 id

data.care.canEdit

Boolean

'칭찬 처방' 수정 가능 여부

data.care.careCategory

String

칭찬 카테고리

data.care.careMsg1

String

칭찬 처방 메세지 1

data.care.careMsg2

String

칭찬 처방 메세지 2

월간 마이타민 기록 조회

  • date는 yyyy.MM 형식으로 요청한다. (ex. 22년 1월 → 2022.01)

  • date의 모든 날짜(1일 ~ 마지막날)의 마이타민 기록을 조회한다.

  • 해당하는 날짜에

    • 하루 진단 기록이 있는 경우 → mentalConditionCode : 하루 진단에 기록되어있는 마음 컨디션 코드

    • 칭찬 처방 기록만 있는 경우 → mentalConditionCode : 9

    • 하루 진단/칭찬 처방 기록이 모두 없는 경우 → mentalConditionCode : 0

  • mentalConditionCode

    • 1 : "매우 나빠요 .."

    • 2 : "나쁜 편이에요 :("

    • 3 : "그럭저럭이에요"

    • 4 : "좋은 편이에요 :)"

    • 5 : "매우 좋아요 !"

HTTP request

GET /mytamin/monthly/2022.10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 484

{
    "statusCode" : 200,
    "message" : "월간 마이타민 기록 조회",
    "data" : [
        // 1 ~ 18일 데이터 생략 ...
        {
        "day" : 18,
        "mentalConditionCode" : 0
        }, {
        "day" : 19,
        "mentalConditionCode" : 5
        }, {
        "day" : 20,
        "mentalConditionCode" : 9
        // 21 ~ 31일 데이터 생략 ...
    } ]
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/mytamin/monthly/{date}
Parameter Description

date

*조회할 날짜 (yyyy.MM)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data[].day

Number

날짜

data[].mentalConditionCode

Number

마음 컨디션 코드

주간 마이타민 기록 조회

  • date는 yyyy.MM.dd 형식으로 요청한다. (ex. 22년 1월 1일 → 2022.01.01)

  • date가 포함된 week의 월 ~ 일요일의 마이타민 기록을 '날짜:마이타민' 형태로 조회한다.

  • 마이타민 기록이 없는 날은 null로 리턴된다. (ex. data.날짜 : null)

  • 하루 진단 or 칭찬 처방 중 완료하지 않은 행동이 있다면 null로 리턴된다.

HTTP request

GET /mytamin/weekly/2022.10.19 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 889

{
  "statusCode" : 200,
  "message" : "주간 마이타민 기록 조회",
  "data" : {
    "17" : {
      "mytaminId" : 1,
      "takeAt" : "10월 17일의 마이타민",
      "report" : {
        "reportId" : 1,
        "canEdit" : false,
        "mentalConditionCode" : 5,
        "mentalCondition" : "매우 좋아요 !",
        "feelingTag" : "#신나는",
        "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
      },
      "care" : null
    },
    "18" : {
      "mytaminId" : 2,
      "takeAt" : "10월 18일의 마이타민",
      "report" : null,
      "care" : {
        "careId" : 1,
        "canEdit" : false,
        "careCategory" : "이루어 낸 일",
        "careMsg1" : "오늘 할 일을 전부 했어",
        "careMsg2" : "성실히 노력하는 내 모습이 좋아"
      }
    },
    "19" : null,
    "20" : {
      "mytaminId" : 3,
      "takeAt" : "10월 20일의 마이타민",
      "report" : null,
      "care" : {
        "careId" : 1,
        "canEdit" : false,
        "careCategory" : "노력하고 있는 부분",
        "careMsg1" : "너무 늦게 잠들지 않기 위해 노력 중이야",
        "careMsg2" : "치만 오늘도 해가 뜰 때쯤 잠들었어"
      }
    },
    "21" : {
      "mytaminId" : 4,
      "takeAt" : "10월 21일의 마이타민",
      "report" : {
        "reportId" : 1,
        "canEdit" : false,
        "mentalConditionCode" : 3,
        "mentalCondition" : "그럭저럭 이에요",
        "feelingTag" : "#평온한 #무념무상의",
        "todayReport" : "별거 없었던 오늘의 하루"
      },
      "care" : {
        "careId" : 1,
        "canEdit" : false,
        "careCategory" : "노력하고 있는 부분",
        "careMsg1" : "너무 늦게 잠들지 않기 위해 노력 중이야",
        "careMsg2" : "그치만 오늘도 해가 뜰 때쯤 잠들었어"
      }
    },
    "22" : null,
    "23" : null
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/mytamin/weekly/{date}
Parameter Description

date

*조회할 날짜 (yyyy.MM.dd)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.*

Object

날짜

data.*.mytaminId

Number

마이타민 id

data.*.takeAt

String

마이타민 섭취 날짜

data.*.report.reportId

Number

하루 진단 id

data.*.report.canEdit

Boolean

'하루 진단' 수정 가능 여부

data.*.report.mentalConditionCode

Number

마음 컨디션 코드

data.*.report.mentalCondition

String

마음 컨디션 메세지

data.*.report.feelingTag

String

감정 태그

data.*.report.todayReport

String

하루 진단

data.*.care.careId

Number

칭찬 처방 id

data.*.care.canEdit

Boolean

'칭찬 처방' 수정 가능 여부

data.*.care.careCategory

String

칭찬 카테고리

data.*.care.careMsg1

String

칭찬 처방 메세지 1

data.*.care.careMsg2

String

칭찬 처방 메세지 2

마이타민 삭제

HTTP request

DELETE /mytamin/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 69

{
  "statusCode" : 200,
  "message" : "1번 마이타민 삭제"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/mytamin/{mytaminId}
Parameter Description

mytaminId

*삭제할 마이타민 id

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 152

{
  "statusCode" : 404,
  "errorCode" : 5003,
  "errorName" : "MYTAMIN_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 mytaminId 입니다."
}

Report

하루 진단

  • 하루 진단하기는 하루에 한 번만 가능하다. (하루 기준 : AM 5:00 ~ AM 4:59)

  • 마음 컨디션은 각 마음 컨디션에 해당하는 int 타입의 코드를 보낸다.

  • mentalConditionCode

    • 1 : "매우 나빠요 .."

    • 2 : "나쁜 편이에요 :("

    • 3 : "그럭저럭이에요"

    • 4 : "좋은 편이에요 :)"

    • 5 : "매우 좋아요 !"

HTTP request

POST /report/new HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 202
Host: MY-TAMIN-URL

{
  "mentalConditionCode" : 5,
  "tag1" : "신나는",
  "tag2" : "즐거운",
  "tag3" : "재밌는",
  "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
}

HTTP response

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 352

{
  "statusCode" : 201,
  "message" : "하루 진단",
  "data" : {
    "reportId" : 1,
    "canEdit" : true,
    "mentalConditionCode" : 5,
    "mentalCondition" : "매우 좋아요 !",
    "feelingTag" : "#신나는 #즐거운 #재밌는",
    "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

mentalConditionCode

Number

*마음 컨디션 코드

tag1

String

*감정 태그1

tag2

String

감정 태그2

tag3

String

감정 태그3

todayReport

String

*하루 진단

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.reportId

Number

하루 진단 id

data.canEdit

Boolean

'하루 진단' 수정 가능 여부

data.mentalConditionCode

Number

마음 컨디션 코드

data.mentalCondition

String

마음 컨디션 메세지

data.feelingTag

String

감정 태그

data.todayReport

String

하루 진단

Exception response

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 183

{
  "statusCode" : 400,
  "errorCode" : 4000,
  "errorName" : "INVALID_CONDITION_CODE_ERROR",
  "message" : "마음 컨디션 코드는 1 ~ 5 사이의 값이어야 합니다."
}
HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 175

{
  "statusCode" : 409,
  "errorCode" : 4001,
  "errorName" : "REPORT_ALREADY_DONE_ERROR",
  "message" : "오늘의 '하루 진단하기'를 이미 완료했습니다."
}

하루 진단 조회

  • '하루 진단' 작성 시 발급받은 reportId를 통해 데이터를 조회한다.

HTTP request

GET /report/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 364

{
  "statusCode" : 200,
  "message" : "1번 하루 진단 조회",
  "data" : {
    "reportId" : 1,
    "canEdit" : true,
    "mentalConditionCode" : 5,
    "mentalCondition" : "매우 좋아요 !",
    "feelingTag" : "#신나는 #즐거운 #재밌는",
    "todayReport" : "아무래도 아침형 인간이 되는건 너무 어려운 것 같다."
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/report/{reportId}
Parameter Description

reportId

*하루 진단 id

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.reportId

Number

하루 진단 id

data.canEdit

Boolean

'하루 진단' 수정 가능 여부

data.mentalConditionCode

Number

마음 컨디션 코드

data.mentalCondition

String

마음 컨디션 메세지

data.feelingTag

String

감정 태그

data.todayReport

String

하루 진단

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 150

{
  "statusCode" : 404,
  "errorCode" : 4002,
  "errorName" : "REPORT_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 reportId 입니다."
}

하루 진단 수정

HTTP request

PUT /report/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 165
Host: MY-TAMIN-URL

{
  "mentalConditionCode" : 5,
  "tag1" : "신나는",
  "tag2" : "즐거운",
  "tag3" : "재밌는",
  "todayReport" : "하루 진단 기록 수정 중..."
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 70

{
  "statusCode" : 200,
  "message" : "1번 하루 진단 수정"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/report/{reportId}
Parameter Description

reportId

*수정할 하루 진단 id

Request fields

Path Type Description

mentalConditionCode

Number

*마음 컨디션 코드

tag1

String

*감정 태그1

tag2

String

감정 태그2

tag3

String

감정 태그3

todayReport

String

*하루 진단

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

  • EDIT_TIMEOUT_ERROR : 작성 시간 기준, 24시간이 지났다면 수정이 불가능하다.

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 150

{
  "statusCode" : 404,
  "errorCode" : 4002,
  "errorName" : "REPORT_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 reportId 입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 144

{
  "statusCode" : 400,
  "errorCode" : 7000,
  "errorName" : "EDIT_TIMEOUT_ERROR",
  "message" : "수정 가능 시간이 아닙니다."
}

주간 마음 컨디션 조회

  • '오늘’을 기준으로 이전 7일 간의 마음 컨디션 기록을 조회한다. (= 총 8일 간의 데이터 리턴)

  • 해당하는 날짜에 하루 진단 기록이 존재하지 않을 경우, mentalConditionCode는 '0’이다.

  • mentalConditionCode

    • 1 : "매우 나빠요 .."

    • 2 : "나쁜 편이에요 :("

    • 3 : "그럭저럭이에요"

    • 4 : "좋은 편이에요 :)"

    • 5 : "매우 좋아요 !"

HTTP request

GET /report/weekly/mental HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 614

{
  "statusCode" : 200,
  "message" : "주간 마음 컨디션 조회",
  "data" : [ {
    "dayOfWeek" : "수",
    "mentalConditionCode" : 0
  }, {
    "dayOfWeek" : "목",
    "mentalConditionCode" : 3
  }, {
    "dayOfWeek" : "금",
    "mentalConditionCode" : 1
  }, {
    "dayOfWeek" : "토",
    "mentalConditionCode" : 0
  }, {
    "dayOfWeek" : "일",
    "mentalConditionCode" : 0
  }, {
    "dayOfWeek" : "월",
    "mentalConditionCode" : 3
  }, {
    "dayOfWeek" : "화",
    "mentalConditionCode" : 2
  }, {
    "dayOfWeek" : "오늘",
    "mentalConditionCode" : 5
  } ]
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data[].dayOfWeek

String

요일

data[].mentalConditionCode

Number

마음 컨디션 코드

이번 달 감정 TOP3

  • 이번 달을 기준으로, 가장 많이 태그된 감정 1 ~ 3순위를 감정이 기록된 횟수가 높은 순으로 리턴한다.

HTTP request

GET /report/feeling/rank HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 254

{
  "statusCode" : 200,
  "message" : "이번 달 감정 TOP3",
  "data" : [ {
    "feeling" : "신나는",
    "count" : 5
  }, {
    "feeling" : "즐거운",
    "count" : 3
  }, {
    "feeling" : "무념무상의",
    "count" : 1
  } ]
}

Other response-1

  • 이번 달 느낀 감정이 3개가 되지 않을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 270

{
  "statusCode" : 200,
  "message" : "이번 달 감정 TOP3",
  "data" : [{
    "feeling" : "신나는",
    "count" : 5
  }]
}

Other response-2

  • 이번 달 느낀 감정이 하나도 없을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 270

{
    "statusCode" : 200,
    "message" : "이번 달 감정 TOP3",
    "data" : []
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data[].feeling

String

감정 태그

data[].count

Number

감정이 기록된 횟수

Care

칭찬 처방

  • 칭찬 처방하기는 하루에 한 번만 가능하다. (하루 기준 : AM 5:00 ~ AM 4:59)

  • 칭찬 카테고리는 각 카테고리에 해당하는 int 타입의 코드를 보낸다.

  • careCategoryCode

    • 1 : "이루어 낸 일"

    • 2 : "잘한 일이나 행동"

    • 3 : "노력하고 있는 부분"

    • 4 : "긍정적인 변화나 깨달음"

    • 5 : "감정, 생각 혹은 신체 일부분"

    • 6 : "과거의 나"

    • 7 : "기타"

HTTP request

POST /care/new HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 144
Host: MY-TAMIN-URL

{
  "careCategoryCode" : 1,
  "careMsg1" : "오늘 할 일을 전부 했어",
  "careMsg2" : "성실히 노력하는 내 모습이 좋아"
}

HTTP response

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 280

{
  "statusCode" : 201,
  "message" : "칭찬 처방",
  "data" : {
    "careId" : 1,
    "canEdit" : true,
    "careCategory" : "이루어 낸 일",
    "careMsg1" : "오늘 할 일을 전부 했어",
    "careMsg2" : "성실히 노력하는 내 모습이 좋아"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

careCategoryCode

Number

*칭찬 카테고리 코드

careMsg1

String

*칭찬 처방 메세지 1

careMsg2

String

*칭찬 처방 메세지 2

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.careId

Number

칭찬 처방 id

data.canEdit

Boolean

'칭찬 처방' 수정 가능 여부

data.careCategory

String

칭찬 카테고리

data.careMsg1

String

칭찬 처방 메세지 1

data.careMsg2

String

칭찬 처방 메세지 2

Exception response

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 178

{
  "statusCode" : 400,
  "errorCode" : 5000,
  "errorName" : "INVALID_CATEGORY_CODE_ERROR",
  "message" : "카테고리 코드는 1 ~ 7 사이의 값이어야 합니다."
}
HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 173

{
  "statusCode" : 409,
  "errorCode" : 5001,
  "errorName" : "CARE_ALREADY_DONE_ERROR",
  "message" : "오늘의 '칭찬 처방하기'를 이미 완료했습니다."
}

칭찬 처방 조회

  • '칭찬 처방' 작성 시 발급받은 careId를 통해 데이터를 조회한다.

HTTP request

GET /care/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 292

{
  "statusCode" : 200,
  "message" : "1번 칭찬 처방 조회",
  "data" : {
    "careId" : 1,
    "canEdit" : true,
    "careCategory" : "이루어 낸 일",
    "careMsg1" : "오늘 할 일을 전부 했어",
    "careMsg2" : "성실히 노력하는 내 모습이 좋아"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/care/{careId}
Parameter Description

careId

*칭찬 처방 id

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.careId

Number

칭찬 처방 id

data.canEdit

Boolean

'칭찬 처방' 수정 가능 여부

data.careCategory

String

칭찬 카테고리

data.careMsg1

String

칭찬 처방 메세지 1

data.careMsg2

String

칭찬 처방 메세지 2

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 5002,
  "errorName" : "CARE_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 careId 입니다."
}

칭찬 처방 수정

HTTP request

PUT /care/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 109
Host: MY-TAMIN-URL

{
  "careCategoryCode" : 2,
  "careMsg1" : "칭찬 처방을 수정하고 싶어",
  "careMsg2" : "^,^"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 70

{
  "statusCode" : 200,
  "message" : "1번 칭찬 처방 수정"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/care/{careId}
Parameter Description

careId

*수정할 칭찬 처방 id

Request fields

Path Type Description

careCategoryCode

Number

*수정할 칭찬 카테고리 코드

careMsg1

String

*수정할 칭찬 처방 메세지 1

careMsg2

String

*수정할 칭찬 처방 메세지 2

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

  • EDIT_TIMEOUT_ERROR : 작성 시간 기준, 24시간이 지났다면 수정이 불가능하다.

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 5002,
  "errorName" : "CARE_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 careId 입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 144

{
  "statusCode" : 400,
  "errorCode" : 7000,
  "errorName" : "EDIT_TIMEOUT_ERROR",
  "message" : "수정 가능 시간이 아닙니다."
}

칭찬 처방 랜덤 조회

  • 전체 칭찬 처방 기록 중 랜덤으로 하나를 리턴한다.

HTTP request

GET /care/random HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 237

{
  "statusCode" : 200,
  "message" : "칭찬 처방 랜덤 조회",
  "data" : {
    "careMsg1" : "오늘 할 일을 전부 했어",
    "careMsg2" : "성실히 노력하는 내 모습이 좋아",
    "takeAt" : "22.10.19"
  }
}

Other response

  • 칭찬 처방 기록이 하나도 없는 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 237

{
  "statusCode" : 200,
  "message" : "칭찬 처방 랜덤 조회",
  "data" : null
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.careMsg1

String

칭찬 처방 메세지 1

data.careMsg2

String

칭찬 처방 메세지 2

data.takeAt

String

마이타민 섭취 날짜

칭찬 처방 히스토리

  • 년/월을 기준으로 그룹핑하여 최신순으로 리턴한다.

  • date는 yyyy.MM 형식으로 요청한다. (ex. 22년 1월 → 2022.01)

  • careCategoryCodeList에 잘못된 값이 들어올 경우 따로 오류가 발생하지는 않지만, 해당 조건은 적용되지 않는다.

  • 칭찬 카테고리는 각 카테고리에 해당하는 int 타입의 코드를 보낸다.

  • careCategoryCode

    • 1 : "이루어 낸 일"

    • 2 : "잘한 일이나 행동"

    • 3 : "노력하고 있는 부분"

    • 4 : "긍정적인 변화나 깨달음"

    • 5 : "감정, 생각 혹은 신체 일부분"

    • 6 : "과거의 나"

    • 7 : "기타"

HTTP request

POST /care/list HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 41
Host: MY-TAMIN-URL

{
  "careCategoryCodeList" : [ 1, 5 ]
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 542

{
  "statusCode" : 200,
  "message" : "칭찬 처방 히스토리",
  "data" : {
    "2022년 10월" : [ {
      "careMsg1" : "오늘 할 일을 전부 했어",
      "careMsg2" : "성실히 노력하는 내 모습이 좋아",
      "careCategory" : "#이루어 낸 일",
      "takeAt" : "10.13.Thu"
    }, {
      "careMsg1" : "꾸준히 칭찬 기록 중이야",
      "careMsg2" : "꾸준한 내 모습을 칭찬해 !",
      "careCategory" : "#긍정적인 변화나 깨달음",
      "takeAt" : "10.19.Wed"
    } ]
  }
}

Other response

  • 조회할 데이터가 하나도 없을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 490

{
  "statusCode" : 200,
  "message" : "칭찬 처방 히스토리",
  "data" : {}
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

careCategoryCodeList

Array

카테고리 조건

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.*[]

Array

년/월로 그룹핑된 칭찬 처방 리스트

data.*[].careMsg1

String

칭찬 처방 메세지 1

data.*[].careMsg2

String

칭찬 처방 메세지 2

data.*[].careCategory

String

칭찬 카테고리

data.*[].takeAt

String

마이타민 섭취 날짜

User

프로필 조회

  • 설정된 프로필 이미지가 없을 경우, profileImgUrl은 null로 리턴된다.

HTTP request

GET /user/profile HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 232

{
  "statusCode" : 200,
  "message" : "프로필 조회",
  "data" : {
    "nickname" : "강철멘탈",
    "profileImgUrl" : null,
    "beMyMessage" : "마음 면역력이 높아질",
    "provider" : "일반 회원"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.nickname

String

닉네임

data.profileImgUrl

Null

프로필 이미지 URL

data.beMyMessage

String

'되고싶은 내 모습' 메세지

data.provider

String

가입 경로

프로필 편집

  • file의 확장자는 .png, .jpg, .jpeg 또는 null 중 하나여야 한다.

  • isImgEdited는 프로필 이미지가 수정되었을 경우 "T", 수정되지 않았을 경우 "F"를 전송한다.

    • isImgEdited가 "T"가 아닌 경우에는 이미지와 관련된 작업을 아예 진행하지 않으므로, file에는 어떤 값을 넣어도 무관하다. (null 또는 기존 이미지 등)

  • nickname, beMyMessage는 수정되지 않았더라도 항상 전송한다.

HTTP request

PUT /user/profile HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=isImgEdited

T
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=nickname

멘탈짱
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=beMyMessage

꾸준히 글을 쓰는
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=file; filename=mock1.jpg
Content-Type: image/jpg

<<image>>
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 61

{
  "statusCode" : 200,
  "message" : "프로필 편집"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request parts

Part Description

file

*업로드할 이미지 (.png, .jpg, .jpeg)

Request parameters

Parameter Description

isImgEdited

*프로필 이미지 수정 여부

nickname

*수정할 닉네임 (1 ~ 9자)

beMyMessage

*수정할 '되고 싶은 나' 메세지 (1 ~ 20자)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

가입 날짜 조회

HTTP request

GET /user/created-at HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 123

{
  "statusCode" : 200,
  "message" : "가입 날짜 조회",
  "data" : {
    "year" : 2022,
    "month" : 11
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.year

Number

가입한 year

data.month

Number

가입한 month

로그아웃

HTTP request

DELETE /user/logout HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 36
Host: MY-TAMIN-URL

{
  "fcmToken" : "{{FCM_TOKEN}}"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 57

{
  "statusCode" : 200,
  "message" : "로그아웃"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

fcmToken

String

*FCM 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

기록 초기화

  • 초기화할 데이터는 true, 그렇지 않은 데이터는 false를 넣어 요청한다.

HTTP request

DELETE /user/init HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 73
Host: MY-TAMIN-URL

{
  "initReport" : true,
  "initCare" : true,
  "initMyday" : false
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 61

{
  "statusCode" : 200,
  "message" : "기록 초기화"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

initReport

Boolean

*'하루 진단' 초기화 여부

initCare

Boolean

*'칭찬 처방' 초기화 여부

initMyday

Boolean

*'마이 데이' 초기화 여부

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

회원 탈퇴

HTTP request

DELETE /user/withdrawal HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 58

{
  "statusCode" : 200,
  "message" : "회원 탈퇴"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

비밀번호 변경

HTTP request

PUT /user/password HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 34
Host: MY-TAMIN-URL

{
  "password" : "newnew1234!"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 64

{
  "statusCode" : 200,
  "message" : "비밀번호 변경"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

password

String

*변경할 비밀번호 (8 ~ 30자)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Myday

이번 달의 마이데이

  • 매달 랜덤으로 마이데이 날짜가 지정된다.

  • comment

    • 마이데이 이전 : "이번 마이데이에는 무엇을 해볼까요 ?"

    • 마이데이 3일 전 : "두근두근 ! 마이데이가 머지 않았어요",

    • 마이데이 당일 : "기분 좋은 마이데이 되세요 !",

    • 마이데이 이후 : "이번 마이데이는 어떤 하루였나요 ?"

HTTP request

GET /myday/info HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 219

{
  "statusCode" : 200,
  "message" : "이번 달의 마이데이",
  "data" : {
    "myDayMMDD" : "10월 17일",
    "dday" : "D-7일",
    "comment" : "이번 마이데이에는 무엇을 해볼까요 ?"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.myDayMMDD

String

마이데이 날짜

data.dday

String

현재 시간 ~ 마이데이 날짜 D-Day

data.comment

String

마이데이 메세지

데이노트 작성 가능 여부

  • date는 yyyy.MM 형식으로 요청한다. (ex. 22년 1월 → 2022.01)

  • date에 해당하는 날짜에 데이노트 작성이 가능하면 true, 불가능하면 false를 리턴한다.

HTTP request

GET /daynote/check/2022.10 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Disposition: inline;filename=f.txt
Content-Type: application/json;charset=UTF-8
Content-Length: 96

{
  "statusCode" : 200,
  "message" : "데이노트 작성 가능 여부",
  "data" : true
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/daynote/check/{date}
Parameter Description

date

*데이노트 수행 날짜 (yyyy.MM)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data

Boolean

데이노트 작성 가능 여부

데이노트 작성

  • fileList 내 이미지의 확장자는 .png, .jpg, .jpeg 또는 null 중 하나여야 한다.

  • 이미지는 최대 5장까지 첨부할 수 있다.

  • date는 yyyy.MM 형식으로 요청한다. (ex. 22년 1월 → 2022.01)

HTTP request

POST /daynote/new HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=wishId

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=note

따끈따끈한 빵을 샀다. 맛있었따 :0
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=date

2022.10
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=fileList; filename=[org.springframework.mock.web.MockMultipartFile@5f851718, org.springframework.mock.web.MockMultipartFile@2e51e263]
Content-Type: image/jpg

<<image>>
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP response

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 426

{
  "statusCode" : 201,
  "message" : "데이노트 작성",
  "data" : {
    "daynoteId" : 1,
    "imgList" : [ "{{IMAGE_URL_1}}", "{{IMAGE_URL_2}}" ],
    "year" : 2022,
    "month" : 10,
    "wishId" : 1,
    "wishText" : "도서관에 가서 책 한권 빌려오기",
    "note" : "백만년만에 도서관에 가서 책을 빌렸다. 이번엔 연체되기 전에 꼭 다 읽고 반납해야겠다 *_*"
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request parts

Part Description

fileList

*업로드할 이미지 리스트 (.png, .jpg, .jpeg)

Request parameters

Parameter Description

wishId

*위시 id

note

*데이노트 코멘트

date

*데이노트 수행 날짜 (yyyy.MM)

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.daynoteId

Number

데이노트 id

data.imgList[]

Array

데이노트 이미지 리스트

data.year

Number

데이노트가 작성된 year

data.month

Number

데이노트가 작성된 month

data.wishId

Number

위시 id

data.wishText

String

위시 텍스트

data.note

String

데이노트 코멘트

Exception response

HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 173

{
  "statusCode" : 409,
  "errorCode" : 8004,
  "errorName" : "DAYNOTE_ALREADY_EXIST_ERROR",
  "message" : "이미 해당 년/월에 데이노트가 존재합니다."
}
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 8000,
  "errorName" : "WISH_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 wishId 입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 169

{
  "statusCode" : 400,
  "errorCode" : 6003,
  "errorName" : "FILE_MAXIMUM_EXCEED",
  "message" : "이미지는 최대 5개까지 업로드할 수 있습니다."
}

데이노트 수정

  • fileList 내 이미지의 확장자는 .png, .jpg, .jpeg 또는 null 중 하나여야 한다.

  • 이미지는 최대 5장까지 첨부할 수 있다.

HTTP request

PUT /daynote/1 HTTP/1.1
Content-Type: multipart/form-data;charset=UTF-8; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=wishId

1
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=note

따끈따끈한 빵을 샀다. 맛있었따 :0 **수정수정** 다시 생각해보니까 그냥 그랬다,,
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=fileList; filename=[org.springframework.mock.web.MockMultipartFile@41865dc1, org.springframework.mock.web.MockMultipartFile@2da2bc89]
Content-Type: image/jpg

<<image>>
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 69

{
  "statusCode" : 200,
  "message" : "1번 데이노트 수정"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request parts

Part Description

fileList

*업로드할 이미지 리스트 (.png, .jpg, .jpeg)

Request parameters

Parameter Description

wishId

*위시 id

note

*데이노트 코멘트

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 152

{
  "statusCode" : 404,
  "errorCode" : 8003,
  "errorName" : "DAYNOTE_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 daynoteId 입니다."
}
HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 8000,
  "errorName" : "WISH_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 wishId 입니다."
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 169

{
  "statusCode" : 400,
  "errorCode" : 6003,
  "errorName" : "FILE_MAXIMUM_EXCEED",
  "message" : "이미지는 최대 5개까지 업로드할 수 있습니다."
}

데이노트 삭제

HTTP request

DELETE /daynote/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 69

{
  "statusCode" : 200,
  "message" : "1번 데이노트 삭제"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/daynote/{daynoteId}
Parameter Description

daynoteId

*삭제할 데이노트 id

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 152

{
  "statusCode" : 404,
  "errorCode" : 8003,
  "errorName" : "DAYNOTE_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 daynoteId 입니다."
}

데이노트 리스트 조회

  • 연도별로 그룹핑하여 최신순으로 리턴한다.

  • 년/월을 기준으로 그룹핑하여 최신순으로 리턴한다.

HTTP request

GET /daynote/list HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 1067

{
  "statusCode" : 200,
  "message" : "데이노트 리스트 조회",
  "data" : {
    "2022" : [ {
      "daynoteId" : 3,
      "imgList" : [ "{{IMAGE_URL_1}}", "{{IMAGE_URL_2}}" ],
      "year" : 2022,
      "month" : 10,
      "wishId" : 2,
      "wishText" : "소품샵 가기",
      "note" : "소품샵 가서 귀여운 비누를 샀다."
    }, {
      "daynoteId" : 2,
      "imgList" : [ "{{IMAGE_URL_1}}", "{{IMAGE_URL_2}}" ],
      "year" : 2022,
      "month" : 9,
      "wishId" : 3,
      "wishText" : "빵 나오는 시간에 맞춰서 갓 나온 빵 사먹기",
      "note" : "따끈따끈한 식빵에 우유는 역시 최고 !"
    } ],
    "2021" : [ {
      "daynoteId" : 1,
      "imgList" : [ "{{IMAGE_URL_1}}", "{{IMAGE_URL_2}}" ],
      "year" : 2021,
      "month" : 12,
      "wishId" : 1,
      "wishText" : "도서관에 가서 책 한권 빌려오기",
      "note" : "백만년만에 도서관에 가서 책을 빌렸다. 이번엔 연체되기 전에 꼭 다 읽고 반납해야겠다 *_*"
    } ]
  }
}

Other response

  • 데이노트가 존재하지 않을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 706

{
  "statusCode" : 200,
  "message" : "데이노트 리스트 조회",
  "data" : {}
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.*[]

Array

연도별로 그룹핑된 데이노트 리스트

data.*[].daynoteId

Number

데이노트 id

data.*[].imgList[]

Array

데이노트 이미지 리스트

data.*[].year

Number

데이노트가 작성된 year

data.*[].month

Number

데이노트가 작성된 month

data.*[].wishId

Number

위시 id

data.*[].wishText

String

위시 텍스트

data.*[].note

String

데이노트 코멘트

Wish

위시 리스트 조회

#TODO : 순서 변경 로직 X / 다른 기능 우선적으로 개발 후 다시 논의

HTTP request

GET /wish/list HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 402

{
  "statusCode" : 200,
  "message" : "위시 리스트 조회",
  "data" : [ {
    "wishId" : 1,
    "wishText" : "소품샵 다녀오기",
    "count" : 3
  }, {
    "wishId" : 2,
    "wishText" : "도서관에 가서 책 한권 빌려오기",
    "count" : 0
  }, {
    "wishId" : 3,
    "wishText" : "빵 나오는 시간에 맞춰서 갓 나온 빵 사기",
    "count" : 1
  } ]
}

Other response

  • 위시 리스트가 존재하지 않을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 596

{
  "statusCode" : 200,
  "message" : "위시 리스트 조회",
  "data" : []
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data[]

Array

위시 리스트

data[].wishId

Number

위시 id

data[].wishText

String

위시 텍스트

data[].count

Number

위시가 기록된 횟수

위시 생성

HTTP request

POST /wish/new HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 45
Host: MY-TAMIN-URL

{
  "wishText" : "소품샵 다녀오기"
}

HTTP response

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 158

{
  "statusCode" : 201,
  "message" : "위시 생성",
  "data" : {
    "wishId" : 1,
    "wishText" : "소품샵 다녀오기",
    "count" : 0
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

wishText

String

*위시 텍스트

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.wishId

Number

위시 id

data.wishText

String

위시 텍스트

data.count

Number

위시가 기록된 횟수

Exception response

  • WISH_ALREADY_EXIST_ERROR : 기존 위시 리스트에 존재하는 위시 텍스트와 같은 위시 텍스트의 위시를 생성하려고 했을 경우

HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 159

{
  "statusCode" : 409,
  "errorCode" : 8001,
  "errorName" : "WISH_ALREADY_EXIST_ERROR",
  "message" : "이미 존재하는 위시 리스트입니다."
}

위시 수정

HTTP request

PUT /wish/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 39
Host: MY-TAMIN-URL

{
  "wishText" : "소품샵 가기"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 63

{
  "statusCode" : 200,
  "message" : "1번 위시 수정"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/wish/{wishId}
Parameter Description

wishId

*수정할 위시 id

Request fields

Path Type Description

wishText

String

*위시 텍스트

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 8000,
  "errorName" : "WISH_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 wishId 입니다."
}

위시 삭제

HTTP request

DELETE /wish/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 63

{
  "statusCode" : 200,
  "message" : "1번 위시 삭제"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Path parameters

/wish/{wishId}
Parameter Description

wishId

*삭제할 위시 id

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 146

{
  "statusCode" : 404,
  "errorCode" : 8000,
  "errorName" : "WISH_NOT_FOUND_ERROR",
  "message" : "존재하지 않는 wishId 입니다."
}

Alarm

알림 설정 상태 조회

HTTP request

GET /alarm/status HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 243

{
  "statusCode" : 200,
  "message" : "알림 설정 상태 조회",
  "data" : {
    "mytamin" : {
      "isOn" : true,
      "when" : "오후 10:00"
    },
    "myday" : {
      "isOn" : true,
      "when" : "당일"
    }
  }
}

Other response

  • 마이타민, 마이데이 알림이 모두 꺼져있을 경우

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 243

{
  "statusCode" : 200,
  "message" : "알림 설정 상태 조회",
  "data" : {
    "mytamin" : {
      "isOn" : false
    },
    "myday" : {
      "isOn" : false
    }
  }
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

data.mytamin

Object

마이타민 알림

data.myday

Object

마이데이 알림

data.*.isOn

Boolean

알림이 켜져있는지

data.*.when

String

알림 지정 시간

마이타민 알림 ON

  • mytaminHour은 24시간 단위(0 ~ 23)의 값으로 요청한다. (ex. 오후 3시 → "15")

HTTP request

PATCH /alarm/mytamin/on HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Content-Length: 85
Host: MY-TAMIN-URL

{
  "mytaminHour" : "22",
  "mytaminMin" : "00",
  "fcmToken" : "{{FCM_TOKEN}}"
}

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 67

{
  "statusCode" : 200,
  "message" : "마이타민 알림 ON"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Request fields

Path Type Description

mytaminHour

String

*마이타민 섭취 지정 시간 HH (24시간)

mytaminMin

String

*마이타민 섭취 지정 시간 MM

fcmToken

String

*FCM 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

마이타민 알림 OFF

HTTP request

PATCH /alarm/mytamin/off HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 68

{
  "statusCode" : 200,
  "message" : "마이타민 알림 OFF"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

마이데이 알림 ON

  • 마이데이 지정 시간은 각 시간에 해당하는 int 타입의 코드를 보낸다.

  • code

    • 0 : "없음"

    • 1 : "당일"

    • 2 : "하루 전"

    • 3 : "일주일 전"

  • 해당 로직을 실행할 때, 클라이언트 측의 'FCM 토픽 구독' 작업이 추가적으로 필요하다. 아래의 토픽 이름에 따라, 사용자가 설정한 조건에 맞는 토픽을 구독한다.

    • '당일' 토픽 이름 : "myday_today"

    • '하루 전' 토픽 이름 : "myday_dayago"

    • '일주일 전' 토픽 이름 : "myday_weekago"

HTTP request

PATCH /alarm/myday/on/1 HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 67

{
  "statusCode" : 200,
  "message" : "마이데이 알림 ON"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지

Exception response

HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
Content-Length: 188

{
  "statusCode" : 400,
  "errorCode" : 3002,
  "errorName" : "INVALID_MYDAY_ALARM_CODE_ERROR",
  "message" : "마이데이 알림 코드는 0 ~ 3 사이의 값이어야 합니다."
}

마이데이 알림 OFF

  • 해당 로직을 실행할 때, 클라이언트 측의 'FCM 토픽 구독 해제' 작업이 추가적으로 필요하다. 아래의 토픽 이름에 따라, 사용자가 해제한 조건에 맞는 토픽을 구독 해제한다.

    • '당일' 토픽 이름 : "myday_today"

    • '하루 전' 토픽 이름 : "myday_dayago"

    • '일주일 전' 토픽 이름 : "myday_weekago"

HTTP request

PATCH /alarm/myday/off HTTP/1.1
Content-Type: application/json;charset=UTF-8
X-AUTH-TOKEN: {{ACCESS_TOKEN}}
Host: MY-TAMIN-URL

HTTP response

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 68

{
  "statusCode" : 200,
  "message" : "마이데이 알림 OFF"
}

Request headers

Name Description

X-AUTH-TOKEN

*액세스 토큰

Response fields

Path Type Description

statusCode

Number

HTTP 상태 코드

message

String

결과 메세지