sayren Docs
상점 설정

상점 정보 수정

PATCH
/v1/store

Authorization

accessToken
headerAuthorizationBearer <token>

Sayren 계정 토큰(로그인 토큰 또는 개인 액세스 토큰, RFC 9068 JWT)

Header Parameters

X-Store-Id*string

대상 상점 id. 토큰의 상점 범위 밖이면 403 STORE_NOT_GRANTED, 없으면 400 STORE_ID_REQUIRED다

Request Body

application/json
  1. body
name?string
Length2 <= length <= 50
logoUrl?string
Formaturi
customerCenterPhone?|

고객센터 전화번호. null을 주면 지운다

businessHours?string
Lengthlength <= 100
businessName?|

상호(사업자등록증의 상호). 상점명(name)과 다를 수 있다. null을 주면 지운다

Length1 <= length <= 100
representativeName?|

대표자명. null을 주면 지운다

Length1 <= length <= 50
businessNumber?|

사업자등록번호. 숫자 10자리이고 하이픈(123-45-67890)을 넣어도 된다. 숫자만 저장한다. null을 주면 지운다

Match^\d{3}[-\s]?\d{2}[-\s]?\d{5}$
mailOrderSalesNumber?|

통신판매업 신고번호(예: 2026-서울강남-01234). 적은 그대로 저장한다. null을 주면 지운다

Length1 <= length <= 50
businessAddress?|

사업장 주소. null을 주면 지운다

Length1 <= length <= 200
customerCenterEmail?|

고객센터 이메일. null을 주면 지운다

Match^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
Formatemail
Lengthlength <= 254
privacyOfficerName?|

개인정보 보호책임자 성명. null을 주면 지운다

Length1 <= length <= 50
privacyOfficerEmail?|

개인정보 보호책임자 이메일. null을 주면 지운다

Match^(?:[A-Za-z0-9_'+\-]+\.)*[A-Za-z0-9_'+\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$
Formatemail
Lengthlength <= 254
analyticsAllowedOrigins?array<>

@deprecated storefrontOrigins를 쓴다(같은 목록). 방문 분석 수집을 받을 스토어프론트 오리진(최대 20개). 비우면 모든 오리진에서 받는다. 넣으면 목록에 없는 오리진의 수집 요청은 403 ORIGIN_NOT_ALLOWED이고, 페이지 URL이 목록 밖인 이벤트는 버린다

Itemsitems <= 20
storefrontOrigins?array<>

스토어프론트 도메인(최대 20개) — 소셜 로그인 뒤 돌아갈 주소와 방문 분석 수집을 함께 제한한다. analyticsAllowedOrigins와 같은 목록이다(둘 다 주면 이 값이 이긴다)

Itemsitems <= 20
guestCheckoutEnabled?boolean

비회원 주문 허용. false(회원만)면 로그인하지 않은 구매자의 주문서 생성·결제 요청이 403 GUEST_CHECKOUT_DISABLED다. 장바구니 담기와 이미 받은 비회원 주문의 조회·취소는 막지 않는다

testOrderReviewsAllowed?boolean

테스트 결제(샌드박스) 주문의 리뷰 허용. 기본 false — 돈을 내지 않은 주문으로 구매 인증 리뷰가 쌓이지 않게 막는다

autoDeliverDays?integer

발송 후 자동 배송완료까지의 일수(0~30, 기본 7). 발송(DISPATCHED)·배송중(DELIVERING) 주문상품을 이 기간이 지나면 배송완료(DELIVERED)로 바꾼다. 0이면 자동 배송완료를 하지 않는다

Range0 <= value <= 30
autoConfirmDays?integer

배송완료 후 자동 구매확정까지의 일수(0~30, 기본 7). 배송완료 시점에 구매확정 예정일(autoDecisionDate)을 이 값으로 잡고, 그 날짜가 지나면 구매확정(PURCHASE_DECIDED)으로 바꾼다. 진행 중인 클레임이 있으면 건너뛴다. 0이면 자동 구매확정을 하지 않는다

Range0 <= value <= 30
refundPolicy?

상점 기본 환불 정책 — 준 항목만 바꾼다. 상품별 정책(products.refundPolicy)이 없는 상품에 적용된다

shippingPolicy?

상점 배송비 규칙 — 준 항목만 바꾼다. 기본 배송비, 전체 무료배송 기준액, 제주·도서산간 추가 배송비다. 바꾼 값은 새 주문서부터 적용된다(이미 만든 주문서·주문의 배송비는 스냅샷이 원천이다)

termsVersion?string

이용약관 버전. 올리면 이 약관에 동의한 구매자에게 재동의를 요구한다(GET /storefront/v1/me의 reconsentRequired)

Length1 <= length <= 20
privacyVersion?string

개인정보 수집이용 동의 버전. 올리면 구매자에게 재동의를 요구한다

Length1 <= length <= 20
termsUrl?|

이용약관 문서 주소(https). 동의 시점의 값이 동의 이력에 복사된다. null을 주면 지운다

Formaturi
Lengthlength <= 500
privacyUrl?|

개인정보 수집이용 동의 문서 주소(https). null을 주면 지운다

Formaturi
Lengthlength <= 500

Response Body

성공

application/json
  1. response
meta*
data*
error*|null
curl -X PATCH 'https://api.sayren.io/v1/store' \  -H 'X-Store-Id: string' \  -H 'Content-Type: application/json' \  -d '{}'
{  "meta": {    "status": 200,    "code": "OK",    "message": "OK",    "isSuccess": true  },  "data": {    "storeId": "string",    "name": "string",    "storeCode": "string",    "storefrontUrl": "http://example.com",    "status": "ACTIVE",    "logoUrl": "http://example.com",    "businessNumber": "string",    "customerCenterPhone": "string",    "businessName": null,    "representativeName": null,    "mailOrderSalesNumber": null,    "businessAddress": null,    "customerCenterEmail": null,    "privacyOfficerName": null,    "privacyOfficerEmail": null,    "analyticsAllowedOrigins": [      "string"    ],    "storefrontOrigins": [      "string"    ],    "guestCheckoutEnabled": true,    "testOrderReviewsAllowed": false,    "autoDeliverDays": 0,    "autoConfirmDays": 0,    "refundPolicy": {      "preShipmentDeliveryFeeRefund": true,      "returnDeliveryFee": 0,      "exchangeDeliveryFee": 0,      "sellerFaultFreeShipping": true,      "conditionalFreeShortfallCharge": true,      "couponShortfallCharge": true    },    "shippingPolicy": {      "baseDeliveryFee": 0,      "freeThreshold": 1,      "jejuSurcharge": 0,      "isolatedSurcharge": 0    },    "termsVersion": "string",    "privacyVersion": "string",    "termsVersionUpdatedAt": "string",    "privacyVersionUpdatedAt": "string",    "termsUrl": "string",    "privacyUrl": "string",    "memberCount": 0,    "createdAt": "string"  },  "error": null}