sayren Docs
스토어프론트 호스팅

스토어프론트 작업 트리 바꾸기

작업 트리 전체를 목록(경로·해시·크기)으로 바꾼다. 전부 아니면 전무다. `expectedBaseRef`가 지금 작업 트리와 다르면 409 `SOURCE_CHANGED`, 편집 환경이 열려 있으면 409 `EDIT_SESSION_OPEN`(`endEditSession: true`면 끄고 진행), 서버에 없는 내용은 409 `SOURCE_BLOBS_MISSING`(`error.details.hashes`를 올리고 다시). 목록에 `package.json`·`pnpm-lock.yaml`이 있으면 그 내용(`packageJson`·`lockfile`)을 함께 보내고 서버가 의존성을 판정한다(거절 409 `DEPENDENCY_REJECTED`, 경고 `dependencyWarnings`). 빌드는 하지 않는다(`POST versions`)

PUT
/v1/storefront/site/source

작업 트리 전체를 목록(경로·해시·크기)으로 바꾼다. 전부 아니면 전무다. expectedBaseRef가 지금 작업 트리와 다르면 409 SOURCE_CHANGED, 편집 환경이 열려 있으면 409 EDIT_SESSION_OPEN(endEditSession: true면 끄고 진행), 서버에 없는 내용은 409 SOURCE_BLOBS_MISSING(error.details.hashes를 올리고 다시). 목록에 package.json·pnpm-lock.yaml이 있으면 그 내용(packageJson·lockfile)을 함께 보내고 서버가 의존성을 판정한다(거절 409 DEPENDENCY_REJECTED, 경고 dependencyWarnings). 빌드는 하지 않는다(POST versions)

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
expectedBaseRef?string

내려받은 작업 트리. 지금 작업 트리가 이 값일 때만 바꾼다. 생략하면 조건 없이 덮어쓴다

Match^sources\/sfs_[a-z0-9]{8,40}\/[0-9a-f]{64}\.tgz$
files*array<>
Items1 <= items <= 2000
endEditSession?boolean

열린 편집 환경을 끄고 진행한다 (기본 false — 열려 있으면 409 EDIT_SESSION_OPEN)

packageJson?string

files에 package.json이 있으면 그 내용(utf8). 서버가 의존성을 판정한다. 해시가 목록과 다르면 400 DEPENDENCY_FILES_MISMATCH

Lengthlength <= 1048576
lockfile?string

files에 pnpm-lock.yaml이 있으면 그 내용(utf8)

Lengthlength <= 1048576

Response Body

성공

application/json
  1. response
meta*
data*
error*|null
curl -X PUT 'https://api.sayren.io/v1/storefront/site/source' \  -H 'X-Store-Id: string' \  -H 'user-agent: string' \  -H 'Content-Type: application/json' \  -d '{  "files": [    {      "path": "string",      "hash": "string",      "size": 0    }  ]}'
{  "meta": {    "status": 200,    "code": "OK",    "message": "OK",    "isSuccess": true  },  "data": {    "sourceRef": "string",    "previousRef": "string",    "treeSha256": "string",    "files": 0,    "bytes": 0,    "changed": true,    "endedEditSession": true,    "dependencyWarnings": [      {        "name": "string",        "version": "string",        "reason": "string",        "detail": "string",        "advisory": {          "id": "string",          "url": "string",          "severity": "string",          "title": "string"        }      }    ]  },  "error": null}