콘텐츠로 이동

OpenAPI 스펙

본 페이지는 백엔드 컨트롤러 테스트(MockMvcRestDocumentationWrapper.document(...))로부터 자동 생성된 OpenAPI 3 명세를 그대로 임베드합니다. 테스트가 통과하지 않으면 endpoint가 명세에 포함되지 않으므로, 본 문서가 누락 없는 단일 출처임이 보장됩니다.

SeMu-GPT API 0.0.1

SeMu-GPT 백엔드 REST API (Spring REST Docs 기반 자동 생성)


Servers

Description URL
http://localhost:8080 http://localhost:8080

accounts


POST /accounts/coupons

Request body

"{\n  \"code\" : \"TEST-COUPON-CODE\"\n}"
Schema of the request body
{
    "title": "AccountCouponUseRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.50500654\",\n  \"code\" : \"OK\",\n  \"data\" : \"OK\"\n}"
Schema of the response body
{
    "title": "AccountCouponUseResponse",
    "type": "object"
}

GET /accounts/info

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.331117333\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"name\" : \"홍길동\",\n    \"phone\" : \"01012345678\"\n  }\n}"
Schema of the response body
{
    "title": "AccountInfoResponse",
    "type": "object"
}

GET /accounts/memberships

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.068853807\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentMembership\" : {\n      \"membershipId\" : 1,\n      \"paymentId\" : \"test-payment-id\",\n      \"couponCode\" : null,\n      \"startDate\" : \"2026-05-11\",\n      \"endDate\" : \"2026-06-10\",\n      \"paidTime\" : \"2026-05-11T08:21:17.983920449\",\n      \"status\" : \"COMPLETE\",\n      \"membershipType\" : \"STANDARD\",\n      \"paidAmount\" : 10000,\n      \"paymentType\" : \"신용/체크카드\",\n      \"note\" : null\n    },\n    \"isWithdrawalAvailable\" : true,\n    \"isWithdrawal\" : false,\n    \"paymentMethodInfo\" : {\n      \"cardName\" : \"현대\",\n      \"cardNumber\" : \"10131313******13\",\n      \"isAvailable\" : true\n    },\n    \"allMemberships\" : [ {\n      \"membershipId\" : 1,\n      \"paymentId\" : \"test-payment-id\",\n      \"couponCode\" : null,\n      \"startDate\" : \"2026-05-11\",\n      \"endDate\" : \"2026-06-10\",\n      \"paidTime\" : \"2026-05-11T08:21:17.983920449\",\n      \"status\" : \"COMPLETE\",\n      \"membershipType\" : \"STANDARD\",\n      \"paidAmount\" : 10000,\n      \"paymentType\" : \"신용/체크카드\",\n      \"note\" : null\n    } ]\n  }\n}"
Schema of the response body
{
    "title": "AccountMembershipListResponse",
    "type": "object"
}

POST /accounts/name

Request body

"{\n  \"name\" : \"김동근\"\n}"
Schema of the request body
{
    "title": "AccountNameRegisterRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.189257505\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AccountNameRegisterResponse",
    "type": "object"
}

POST /accounts/payments

Request body

"{\n  \"productType\" : \"STANDARD\",\n  \"paymentType\" : \"CARD\",\n  \"isCashReceiptRequired\" : null,\n  \"cashReceiptType\" : null,\n  \"cashReceiptNumber\" : null,\n  \"depositBank\" : null,\n  \"depositorName\" : null,\n  \"recommender\" : null\n}"
Schema of the request body
{
    "title": "AccountPaymentRegisterRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:17.576822307\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"paymentId\" : \"test-payment-id\",\n    \"clientKey\" : \"test-client-key\",\n    \"orderId\" : \"test-order-id\",\n    \"amount\" : 10000,\n    \"buyerPhone\" : \"01012345678\",\n    \"productName\" : \"스탠다드 멤버십\"\n  }\n}"
Schema of the response body
{
    "title": "AccountPaymentRegisterResponse",
    "type": "object"
}

POST /accounts/withdrawal

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.608637739\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AccountWithdrawalResponse",
    "type": "object"
}

GET /accounts/memberships/current

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.73646175\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentMembership\" : \"STANDARD\",\n    \"previousMembership\" : \"FREE\",\n    \"remainingUsage\" : 5,\n    \"notConfirmedPaymentIsExist\" : false,\n    \"isSubscriptionPaused\" : false\n  }\n}"
Schema of the response body
{
    "title": "AccountMembershipCurrentResponse",
    "type": "object"
}

POST /accounts/memberships/withdrawal

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:18.817948994\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AccountMembershipWithdrawalResponse",
    "type": "object"
}

admin


GET /admin/coupons

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.786844934\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"publishedDate\" : \"2026-05-11\",\n      \"code\" : \"TEST-COUPON-CODE\",\n      \"usedAccountName\" : null,\n      \"codeType\" : \"STANDARD\",\n      \"isUsed\" : false,\n      \"isUsing\" : false,\n      \"startDate\" : null,\n      \"endDate\" : null\n    } ],\n    \"totalCount\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminCouponListResponse",
    "type": "object"
}

POST /admin/coupons

Request body

"{\n  \"productType\" : \"STANDARD\",\n  \"amount\" : 10\n}"
Schema of the request body
{
    "title": "AdminCouponGenerateRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.870293275\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminCouponGenerateResponse",
    "type": "object"
}

GET /admin/feedbacks

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.988019689\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"feedbackId\" : 1,\n      \"sessionId\" : 1,\n      \"turnId\" : 1,\n      \"turnNumber\" : 1,\n      \"accountId\" : \"user-123\",\n      \"accountName\" : \"홍길동\",\n      \"userQuestion\" : \"상속세 계산 방법을 알려주세요\",\n      \"rating\" : 5,\n      \"reason\" : \"답변이 매우 정확했습니다\",\n      \"createdAt\" : \"2026-05-11T08:21:20.982162244\"\n    } ],\n    \"totalCount\" : 1\n  }\n}"
Schema of the response body
{
    "title": "AdminFeedbackListResponse",
    "type": "object"
}

GET /admin/payments

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.694306447\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"membershipId\" : 1,\n      \"paymentId\" : \"test-payment-id\",\n      \"couponCode\" : null,\n      \"paidTime\" : \"2026-05-11T08:21:20.689816189\",\n      \"status\" : \"COMPLETE\",\n      \"membershipType\" : \"STANDARD\",\n      \"paidAmount\" : 10000,\n      \"paymentType\" : \"무통장입금\",\n      \"accountName\" : \"홍길동\",\n      \"recommender\" : null,\n      \"isBankConfirmed\" : true,\n      \"bankPaymentInfo\" : {\n        \"isCashReceiptRequired\" : true,\n        \"cashReceiptType\" : \"INDIVIDUAL\",\n        \"cashReceiptNumber\" : \"01039218382\",\n        \"depositBank\" : \"국민은행 91938281-39192301 온비즈택스\",\n        \"depositorName\" : \"김동근\",\n        \"isReceiptPublished\" : false\n      }\n    } ],\n    \"totalCount\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminPaymentListResponse",
    "type": "object"
}

GET /admin/accounts/list

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:21.361472942\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"accountId\" : \"test-user-00000000-0000-0000-0000-000000000001\",\n      \"name\" : \"홍길동\",\n      \"phone\" : \"01012345678\",\n      \"joinDate\" : \"2026-05-11\",\n      \"membershipType\" : \"STANDARD\",\n      \"remainingDays\" : 25\n    } ],\n    \"totalCount\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminAccountListResponse",
    "type": "object"
}

GET /admin/accounts/roles

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.270937356\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"accountId\" : \"test-user-00000000-0000-0000-0000-000000000001\",\n      \"name\" : \"홍길동\",\n      \"phone\" : \"01012345678\",\n      \"email\" : null,\n      \"role\" : \"USER\",\n      \"accountStatus\" : \"ACTIVATED\",\n      \"joinDate\" : \"2026-05-11\"\n    } ],\n    \"totalCount\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminAccountRoleListResponse",
    "type": "object"
}

PATCH /admin/accounts/{accountId}

Input parameters

Parameter In Type Default Nullable Description
accountId path string No

Request body

"{\n  \"name\" : \"김동근\",\n  \"phone\" : \"01039193919\"\n}"
"{\n  \"name\" : \"김동근\",\n  \"phone\" : \"01039193919\"\n}"
Schema of the request body
{
    "title": "AdminAccountModifyRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:21.481670818\",\n  \"code\" : \"BAD_REQUEST\",\n  \"data\" : {\n    \"errorCode\" : 10021,\n    \"message\" : \"이미 사용중인 전화번호입니다.\"\n  }\n}"
Schema of the response body
{
    "title": "AdminAccountModifyResponse",
    "type": "object"
}
"{\n  \"responseTime\" : \"2026-05-11T08:21:21.570695007\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminAccountModifyResponse",
    "type": "object"
}

DELETE /admin/coupons/{code}

Input parameters

Parameter In Type Default Nullable Description
code path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.934124318\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminCouponDeleteResponse",
    "type": "object"
}

GET /admin/elastic/indices

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:23.056050935\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"indices\" : [ {\n      \"name\" : \"tax-laws\",\n      \"displayName\" : \"법령 조문\",\n      \"documentCount\" : 12345,\n      \"crudEnabled\" : true\n    }, {\n      \"name\" : \"tax-precedents\",\n      \"displayName\" : \"판례/예규\",\n      \"documentCount\" : 5678,\n      \"crudEnabled\" : true\n    }, {\n      \"name\" : \"conversation-memory\",\n      \"displayName\" : \"대화 히스토리\",\n      \"documentCount\" : 999,\n      \"crudEnabled\" : false\n    } ]\n  }\n}"
Schema of the response body
{
    "title": "AdminElasticIndicesListResponse",
    "type": "object"
}

GET /admin/feedbacks/statistics

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:21.135011918\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"totalCount\" : 100,\n    \"averageRating\" : 4.2,\n    \"ratingDistribution\" : {\n      \"rating1\" : 5,\n      \"rating2\" : 10,\n      \"rating3\" : 15,\n      \"rating4\" : 30,\n      \"rating5\" : 40\n    }\n  }\n}"
Schema of the response body
{
    "title": "AdminFeedbackStatisticsResponse",
    "type": "object"
}

GET /admin/reports/list

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.513780097\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"currentSlice\" : 0,\n    \"sizePerSlice\" : 10,\n    \"numberOfElements\" : 1,\n    \"hasPrevious\" : false,\n    \"hasNext\" : false,\n    \"isFirst\" : true,\n    \"isLast\" : true,\n    \"contents\" : [ {\n      \"id\" : 1,\n      \"status\" : \"답변 완료\",\n      \"question\" : \"상속세 계산 방법은?\",\n      \"createdDate\" : \"2024-01-15T10:30:00\"\n    } ],\n    \"totalCount\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminReportListResponse",
    "type": "object"
}

DELETE /admin/reports/{reportId}

Input parameters

Parameter In Type Default Nullable Description
reportId path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.573124914\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminReportDeleteResponse",
    "type": "object"
}

GET /admin/accounts/{accountId}/payments

Input parameters

Parameter In Type Default Nullable Description
accountId path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:21.313633125\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"totalCount\" : 1,\n    \"contents\" : [ {\n      \"membershipId\" : 1,\n      \"paymentId\" : \"test-payment-id\",\n      \"couponCode\" : null,\n      \"startDate\" : \"2026-05-11\",\n      \"endDate\" : \"2026-06-10\",\n      \"paidTime\" : \"2026-05-11T08:21:21.310838018\",\n      \"status\" : \"COMPLETE\",\n      \"membershipType\" : \"STANDARD\",\n      \"paidAmount\" : 10000,\n      \"paymentType\" : \"신용/체크카드\",\n      \"note\" : null\n    } ],\n    \"metadata\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminAccountPaymentListResponse",
    "type": "object"
}

PATCH /admin/accounts/{accountId}/role

Input parameters

Parameter In Type Default Nullable Description
accountId path string No

Request body

"{\n  \"role\" : \"ADMIN\"\n}"
Schema of the request body
{
    "title": "AdminAccountRoleChangeRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.380660224\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminAccountRoleChangeResponse",
    "type": "object"
}

PATCH /admin/accounts/{accountId}/status

Input parameters

Parameter In Type Default Nullable Description
accountId path string No

Request body

"{\n  \"status\" : \"DEACTIVATED\"\n}"
Schema of the request body
{
    "title": "AdminAccountStatusChangeRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.446940505\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminAccountStatusChangeResponse",
    "type": "object"
}

GET /admin/elastic/{indexName}/documents

Input parameters

Parameter In Type Default Nullable Description
indexName path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:22.919529962\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"documents\" : [ {\n      \"id\" : \"소득세법_B0178021\",\n      \"index\" : \"tax-laws\",\n      \"source\" : {\n        \"law_name\" : \"소득세법\",\n        \"article_title\" : \"제1조 (목적)\",\n        \"content\" : \"이 법은 개인의 소득에 대하여...\"\n      },\n      \"score\" : 1.0\n    } ],\n    \"totalCount\" : 12345,\n    \"page\" : 0,\n    \"size\" : 20,\n    \"hasNext\" : true\n  }\n}"
Schema of the response body
{
    "title": "AdminElasticDocumentsListResponse",
    "type": "object"
}

POST /admin/elastic/{indexName}/documents

Input parameters

Parameter In Type Default Nullable Description
indexName path string No

Request body

"{\n  \"fields\" : {\n    \"law_name\" : \"소득세법\",\n    \"article_title\" : \"제100조 (신설조문)\",\n    \"content\" : \"새로운 조문 내용입니다.\"\n  },\n  \"generateEmbedding\" : true,\n  \"embeddingTextField\" : null\n}"
Schema of the request body
{
    "title": "AdminElasticDocumentCreateRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:22.658342765\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"id\" : \"소득세법_NEW001\",\n    \"index\" : \"tax-laws\"\n  }\n}"
Schema of the response body
{
    "title": "AdminElasticDocumentCreateResponse",
    "type": "object"
}

PATCH /admin/payments/{paymentId}/bank-confirm

Input parameters

Parameter In Type Default Nullable Description
paymentId path string No

Request body

"{\n  \"startDate\" : \"2026-05-11\"\n}"
Schema of the request body
{
    "title": "AdminPaymentConfirmRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:20.633088828\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminPaymentConfirmResponse",
    "type": "object"
}

PATCH /admin/payments/{paymentId}/cash-receipt

Input parameters

Parameter In Type Default Nullable Description
paymentId path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:21.202204491\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "AdminPaymentCashReceiptResponse",
    "type": "object"
}

GET /admin/elastic/{indexName}/documents/{documentId}

Input parameters

Parameter In Type Default Nullable Description
documentId path string No
indexName path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:22.804742669\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"id\" : \"소득세법_B0178021\",\n    \"index\" : \"tax-laws\",\n    \"source\" : {\n      \"law_name\" : \"소득세법\",\n      \"article_title\" : \"제1조 (목적)\",\n      \"content\" : \"이 법은 개인의 소득에 대하여...\",\n      \"collected_at\" : \"2024-01-15T10:30:00Z\"\n    },\n    \"score\" : null\n  }\n}"
Schema of the response body
{
    "title": "AdminElasticDocumentGetResponse",
    "type": "object"
}

PUT /admin/elastic/{indexName}/documents/{documentId}

Input parameters

Parameter In Type Default Nullable Description
documentId path string No
indexName path string No

Request body

"{\n  \"fields\" : {\n    \"content\" : \"수정된 조문 내용입니다.\"\n  },\n  \"regenerateEmbedding\" : true,\n  \"embeddingTextField\" : null\n}"
Schema of the request body
{
    "title": "AdminElasticDocumentUpdateRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:23.122469292\",\n  \"code\" : \"OK\",\n  \"data\" : true\n}"
Schema of the response body
{
    "title": "AdminElasticDocumentUpdateResponse",
    "type": "object"
}

DELETE /admin/elastic/{indexName}/documents/{documentId}

Input parameters

Parameter In Type Default Nullable Description
documentId path string No
indexName path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:22.709920971\",\n  \"code\" : \"OK\",\n  \"data\" : true\n}"
Schema of the response body
{
    "title": "AdminElasticDocumentDeleteResponse",
    "type": "object"
}

auth


POST /auth/reissue

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:24.180827997\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"accountId\" : \"test-user-00000000-0000-0000-0000-000000000001\",\n    \"accessToken\" : \"new-access-token\",\n    \"refreshToken\" : \"new-refresh-token\"\n  }\n}"
Schema of the response body
{
    "title": "TokenReissueResponse",
    "type": "object"
}

POST /auth/phone-authentications/change

Request body

"{\n  \"phoneAuthenticationId\" : \"test-auth-id\",\n  \"code\" : \"123456\"\n}"
Schema of the request body
{
    "title": "PhoneAuthenticationChangeRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:24.236733508\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "PhoneAuthenticationChangeResponse",
    "type": "object"
}

POST /auth/phone-authentications/issue

Request body

"{\n  \"phone\" : \"01023528529\",\n  \"isChange\" : false\n}"
"{\n  \"phone\" : \"01023528529\",\n  \"isChange\" : false\n}"
Schema of the request body
{
    "title": "PhoneAuthenticationIssueRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:24.413681821\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"id\" : \"test-auth-id\",\n    \"issueCount\" : 1\n  }\n}"
Schema of the response body
{
    "title": "PhoneAuthenticationIssueResponse",
    "type": "object"
}
"{\n  \"responseTime\" : \"2026-05-11T08:21:24.36291723\",\n  \"code\" : \"INTERNAL_SERVER_ERROR\",\n  \"data\" : {\n    \"errorCode\" : 10018,\n    \"message\" : \"메시지 전송에 실패했습니다. 다시 시도해주세요.\"\n  }\n}"
Schema of the response body
{
    "title": "PhoneAuthenticationIssueResponse",
    "type": "object"
}

conversations


POST /conversations/stream

Request body

"{\n  \"question\" : \"화장품 브랜드 창업 세무 상담\",\n  \"skipCategorySelection\" : false\n}"
"{\n  \"category\" : \"INHERITANCE\",\n  \"question\" : \"상속세 계산 방법을 알려주세요\",\n  \"skipCategorySelection\" : false\n}"
"{\n  \"category\" : \"INHERITANCE\",\n  \"question\" : \"상속세 계산 방법을 알려주세요\",\n  \"skipCategorySelection\" : false\n}"
Schema of the request body
{
    "title": "ConversationStartStreamingRequest",
    "type": "object"
}

Responses

"event:metadata\ndata:{\"rewrittenQuestion\":null,\"referenceIds\":[\"doc1\",\"doc2\"],\"referenceDetails\":[]}\n\nevent:chunk\ndata:상속세는%20\n\nevent:chunk\ndata:상속재산가액에서%20\n\nevent:chunk\ndata:각종%20공제를%20차감한%20후%20계산합니다.\n\nevent:complete\ndata:{\"turn\":{\"sessionId\":\"test-session-uuid\",\"turnId\":1,\"turnNumber\":1,\"userQuestion\":\"상속세 계산 방법을 알려주세요\",\"rewrittenQuestion\":null,\"assistantAnswer\":\"상속세는 상속재산가액에서 각종 공제를 차감한 후 계산합니다.\",\"createdAt\":\"2026-05-11T08:21:43.409258908\",\"referenceIds\":[],\"referenceDetails\":[]},\"usageAfter\":null}\n\n"
"event:error\ndata:이번 달 토큰 사용량을 모두 소진했습니다. 플랜 업그레이드 또는 토큰 팩 구매 후 이용해주세요.\n\n"
"event:metadata\ndata:{\"rewrittenQuestion\":null,\"referenceIds\":[\"doc1\",\"doc2\"],\"referenceDetails\":[]}\n\nevent:chunk\ndata:상속세는%20\n\nevent:chunk\ndata:상속재산가액에서%20\n\nevent:chunk\ndata:각종%20공제를%20차감한%20후%20계산합니다.\n\nevent:complete\ndata:{\"turn\":{\"sessionId\":\"test-session-uuid\",\"turnId\":1,\"turnNumber\":1,\"userQuestion\":\"상속세 계산 방법을 알려주세요\",\"rewrittenQuestion\":null,\"assistantAnswer\":\"상속세는 상속재산가액에서 각종 공제를 차감한 후 계산합니다.\",\"createdAt\":\"2026-05-11T08:21:43.345409573\",\"referenceIds\":[],\"referenceDetails\":[]},\"usageAfter\":null}\n\n"
Schema of the response body
{
    "title": "ConversationStartStreamingResponse",
    "type": "object"
}

GET /conversations/token-usage

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:43.646189508\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"membershipType\" : \"FREE\",\n    \"usedTokens\" : 5000,\n    \"limitTokens\" : 10000,\n    \"remainingTokens\" : 5000,\n    \"isUnlimited\" : false,\n    \"warningLevel\" : \"NONE\",\n    \"percentage\" : 50\n  }\n}"
"{\n  \"responseTime\" : \"2026-05-11T08:21:43.602843997\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"membershipType\" : null,\n    \"usedTokens\" : 0,\n    \"limitTokens\" : null,\n    \"remainingTokens\" : null,\n    \"isUnlimited\" : true,\n    \"warningLevel\" : \"NONE\",\n    \"percentage\" : 0\n  }\n}"
Schema of the response body
{
    "title": "ConversationTokenUsageResponse",
    "type": "object"
}

POST /conversations/{sessionId}/turns/stream

Input parameters

Parameter In Type Default Nullable Description
sessionId path string No

Request body

"{\n  \"question\" : \"그거 예외는 뭐가 있어?\",\n  \"referenceTypes\" : null\n}"
Schema of the request body
{
    "title": "ConversationAddTurnStreamingRequest",
    "type": "object"
}

Responses

"event:metadata\ndata:{\"rewrittenQuestion\":\"상속세 계산시 예외 사항은 무엇인가요?\",\"referenceIds\":[\"doc3\",\"doc4\"],\"referenceDetails\":[]}\n\nevent:chunk\ndata:상속세%20계산시%20\n\nevent:chunk\ndata:주요%20예외%20사항으로는%20\n\nevent:chunk\ndata:배우자%20상속공제,%20기초공제%20등이%20있습니다.\n\nevent:complete\ndata:{\"turn\":{\"sessionId\":\"test-session-uuid\",\"turnId\":2,\"turnNumber\":2,\"userQuestion\":\"그거 예외는 뭐가 있어?\",\"rewrittenQuestion\":\"상속세 계산시 예외 사항은 무엇인가요?\",\"assistantAnswer\":\"상속세 계산시 주요 예외 사항으로는 배우자 상속공제, 기초공제 등이 있습니다.\",\"createdAt\":\"2026-05-11T08:21:42.880947774\",\"referenceIds\":[],\"referenceDetails\":[]},\"usageAfter\":null}\n\n"
Schema of the response body
{
    "title": "ConversationAddTurnStreamingResponse",
    "type": "object"
}

GET /conversations/{sessionId}/turns/{turnId}/feedback

Input parameters

Parameter In Type Default Nullable Description
sessionId path string No
turnId path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:44.872385538\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"feedbackId\" : 1,\n    \"turnId\" : 10,\n    \"rating\" : 4,\n    \"reason\" : \"좋은 답변이었습니다\",\n    \"createdAt\" : \"2026-05-11T08:21:44.869591878\",\n    \"lastModifiedAt\" : \"2026-05-11T08:21:44.869602308\"\n  }\n}"
"{\n  \"responseTime\" : \"2026-05-11T08:21:44.842716939\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackGetResponse",
    "type": "object"
}

POST /conversations/{sessionId}/turns/{turnId}/feedback

Input parameters

Parameter In Type Default Nullable Description
sessionId path string No
turnId path string No

Request body

"{\n  \"rating\" : 5,\n  \"reason\" : null\n}"
"{\n  \"rating\" : 3,\n  \"reason\" : null\n}"
"{\n  \"rating\" : 6,\n  \"reason\" : null\n}"
"{\n  \"rating\" : 5,\n  \"reason\" : \"답변이 매우 정확하고 도움이 되었습니다\"\n}"
Schema of the request body
{
    "title": "ConversationTurnFeedbackCreateRequest",
    "type": "object"
}

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:44.685978577\",\n  \"code\" : \"NOT_FOUND\",\n  \"data\" : {\n    \"errorCode\" : 10000,\n    \"message\" : \"요청 경로변수, 파라미터, 바디 내에 포함된 식별자 값으로 리소스를 조회할 수 없을 경우 발생합니다.\"\n  }\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackCreateResponse",
    "type": "object"
}
"{\n  \"responseTime\" : \"2026-05-11T08:21:44.737053164\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"feedbackId\" : 1,\n    \"turnId\" : 10,\n    \"rating\" : 3,\n    \"reason\" : null,\n    \"createdAt\" : \"2026-05-11T08:21:44.733354924\",\n    \"lastModifiedAt\" : \"2026-05-11T08:21:44.733369767\"\n  }\n}"
"{\n  \"responseTime\" : \"2026-05-11T08:21:44.761264454\",\n  \"code\" : \"OK\",\n  \"data\" : {\n    \"feedbackId\" : 1,\n    \"turnId\" : 10,\n    \"rating\" : 5,\n    \"reason\" : \"답변이 매우 정확하고 도움이 되었습니다\",\n    \"createdAt\" : \"2026-05-11T08:21:44.757803591\",\n    \"lastModifiedAt\" : \"2026-05-11T08:21:44.757807627\"\n  }\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackCreateResponse",
    "type": "object"
}
"{\n  \"responseTime\" : \"2026-05-11T08:21:44.580633885\",\n  \"code\" : \"BAD_REQUEST\",\n  \"data\" : {\n    \"errorCode\" : 10001,\n    \"message\" : {\n      \"rating\" : [ \"평점은 5점 이하여야 합니다\" ]\n    }\n  }\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackCreateResponse",
    "type": "object"
}

DELETE /conversations/{sessionId}/turns/{turnId}/feedback

Input parameters

Parameter In Type Default Nullable Description
sessionId path string No
turnId path string No

Responses

"{\n  \"responseTime\" : \"2026-05-11T08:21:44.523145108\",\n  \"code\" : \"OK\",\n  \"data\" : null\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackDeleteResponse",
    "type": "object"
}
"{\n  \"responseTime\" : \"2026-05-11T08:21:44.491633218\",\n  \"code\" : \"NOT_FOUND\",\n  \"data\" : {\n    \"errorCode\" : 10000,\n    \"message\" : \"요청 경로변수, 파라미터, 바디 내에 포함된 식별자 값으로 리소스를 조회할 수 없을 경우 발생합니다.\"\n  }\n}"
Schema of the response body
{
    "title": "ConversationTurnFeedbackDeleteResponse",
    "type": "object"
}

Schemas

AccountCouponUseRequest

AccountCouponUseResponse

AccountInfoResponse

AccountMembershipCurrentResponse

AccountMembershipListResponse

AccountMembershipWithdrawalResponse

AccountNameRegisterRequest

AccountNameRegisterResponse

AccountPaymentRegisterRequest

AccountPaymentRegisterResponse

AccountWithdrawalResponse

AdminAccountListResponse

AdminAccountModifyRequest

AdminAccountModifyResponse

AdminAccountPaymentListResponse

AdminAccountRoleChangeRequest

AdminAccountRoleChangeResponse

AdminAccountRoleListResponse

AdminAccountStatusChangeRequest

AdminAccountStatusChangeResponse

AdminCouponDeleteResponse

AdminCouponGenerateRequest

AdminCouponGenerateResponse

AdminCouponListResponse

AdminElasticDocumentCreateRequest

AdminElasticDocumentCreateResponse

AdminElasticDocumentDeleteResponse

AdminElasticDocumentGetResponse

AdminElasticDocumentsListResponse

AdminElasticDocumentUpdateRequest

AdminElasticDocumentUpdateResponse

AdminElasticIndicesListResponse

AdminFeedbackListResponse

AdminFeedbackStatisticsResponse

AdminPaymentCashReceiptResponse

AdminPaymentConfirmRequest

AdminPaymentConfirmResponse

AdminPaymentListResponse

AdminReportDeleteResponse

AdminReportListResponse

ConversationAddTurnStreamingRequest

ConversationAddTurnStreamingResponse

ConversationStartStreamingRequest

ConversationStartStreamingResponse

ConversationTokenUsageResponse

ConversationTurnFeedbackCreateRequest

ConversationTurnFeedbackCreateResponse

ConversationTurnFeedbackDeleteResponse

ConversationTurnFeedbackGetResponse

PhoneAuthenticationChangeRequest

PhoneAuthenticationChangeResponse

PhoneAuthenticationIssueRequest

PhoneAuthenticationIssueResponse

TokenReissueResponse