sayren Docs
스토어프론트 호스팅

스토어프론트 버전 만들기

지금 작업 트리를 고정해 빌드를 시작한다. 버전은 `BUILDING`이고 규칙 검증·타입 검사·빌드를 통과하면 `READY`(발행 가능), 아니면 `FAILED`다. 사이트당 끝나지 않은 빌드는 하나다(409 `STOREFRONT_BUILD_IN_PROGRESS`)

POST
/v1/storefront/site/versions

지금 작업 트리를 고정해 빌드를 시작한다. 버전은 BUILDING이고 규칙 검증·타입 검사·빌드를 통과하면 READY(발행 가능), 아니면 FAILED다. 사이트당 끝나지 않은 빌드는 하나다(409 STOREFRONT_BUILD_IN_PROGRESS)

Authorization

accessToken
headerAuthorizationBearer <token>

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

Header Parameters

X-Store-Id*string

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

user-agent*string

Request Body

application/json
  1. body
message?string

버전 메모 (에이전트는 바꾼 내용 요약)

Lengthlength <= 200
expectedSourceRef?string

고정할 작업 트리 (PUT /v1/storefront/site/source의 sourceRef). 주면 지금 작업 트리가 이 값일 때만 버전을 만든다(다르면 409 SOURCE_CHANGED)

Lengthlength <= 200

Response Body

성공

application/json
  1. response
meta*
data*
error*|null
curl -X POST 'https://api.sayren.io/v1/storefront/site/versions' \  -H 'X-Store-Id: string' \  -H 'user-agent: string' \  -H 'Content-Type: application/json' \  -d '{}'
{  "meta": {    "status": 201,    "code": "OK",    "message": "OK",    "isSuccess": true  },  "data": {    "version": {      "versionId": "string",      "number": 1,      "templateId": "string",      "templateVersion": "string",      "status": "BUILDING",      "published": true,      "publishedAt": "string",      "message": "string",      "source": "TEMPLATE",      "buildId": "string",      "createdByType": "string",      "createdVia": "string",      "createdAt": "string",      "previewable": true    },    "build": {      "buildId": "string",      "versionId": "string",      "versionNumber": 1,      "status": "QUEUED",      "failureStage": "string",      "errorCode": "string",      "logTail": "string",      "stages": [        {          "stage": "string",          "ok": true,          "durationMs": 0        }      ],      "verify": {        "ok": true,        "checkedFiles": 0,        "summary": {          "rules": 0,          "passed": 0,          "violated": 0,          "findings": 0        },        "results": [          {            "ruleId": "string",            "status": "pass",            "count": 0,            "severity": "error"          }        ],        "findings": [          {            "ruleId": "string",            "rule": "string",            "file": "string",            "line": 0,            "detail": "string",            "cause": "string",            "fix": "string",            "example": "string",            "doc": "string",            "docUrl": "string",            "templateFile": "string",            "severity": "error"          }        ],        "message": "string",        "nextSteps": [          "string"        ]      },      "dependencies": {        "checkedPackages": 0,        "rejected": [          {            "name": "string",            "version": "string",            "reason": "string",            "detail": "string",            "advisory": {              "id": "string",              "url": "string",              "severity": "string",              "title": "string"            }          }        ],        "warnings": [          {            "name": "string",            "version": "string",            "reason": "string",            "detail": "string",            "advisory": {              "id": "string",              "url": "string",              "severity": "string",              "title": "string"            }          }        ]      },      "queuedAt": "string",      "startedAt": "string",      "finishedAt": "string",      "durationMs": 0    }  },  "error": null}