@runlot/api 0.1.0-rc.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,356 @@
1
+ import type { components, operations } from "./schema.js";
2
+ export type { components, paths, operations } from "./schema.js";
3
+ export declare const API_VERSION: "v1";
4
+ type Schemas = components["schemas"];
5
+ /**
6
+ * 오퍼레이션의 성공 응답 본문.
7
+ *
8
+ * 메서드 반환형을 손으로 적지 않는 이유는, 손으로 적으면 스펙이 바뀌어도
9
+ * 컴파일이 통과하기 때문이다 — 그 어긋남은 런타임에 `undefined` 로 나타난다.
10
+ */
11
+ type Ok<K extends keyof operations> = operations[K]["responses"] extends {
12
+ 200: {
13
+ content: {
14
+ "application/json": infer B;
15
+ };
16
+ };
17
+ } ? B : operations[K]["responses"] extends {
18
+ 201: {
19
+ content: {
20
+ "application/json": infer B;
21
+ };
22
+ };
23
+ } ? B : operations[K]["responses"] extends {
24
+ 202: {
25
+ content: {
26
+ "application/json": infer B;
27
+ };
28
+ };
29
+ } ? B : never;
30
+ export type Session = Schemas["Session"];
31
+ export type User = Schemas["User"];
32
+ export type Org = Schemas["Org"];
33
+ export type Project = Schemas["Project"];
34
+ export type ProjectDetail = Schemas["ProjectDetail"];
35
+ export type Placement = Schemas["Placement"];
36
+ export type Deployment = Schemas["Deployment"];
37
+ export type Manifest = Schemas["Manifest"];
38
+ export type DatabaseConnect = Schemas["DatabaseConnect"];
39
+ export type DatabaseEndpoint = Schemas["DatabaseEndpoint"];
40
+ export type DatabaseToken = Schemas["DatabaseToken"];
41
+ export type DatabaseTokenMeta = Schemas["DatabaseTokenMeta"];
42
+ export type ConnectInfo = DatabaseConnect["connect"];
43
+ export type DatabaseExport = Schemas["DatabaseExport"];
44
+ export type ExportInfo = DatabaseExport["export"];
45
+ export type DatabaseGenerations = Schemas["DatabaseGenerations"];
46
+ export type GenerationRow = Schemas["GenerationRow"];
47
+ export type OperationStarted = Schemas["OperationStarted"];
48
+ export type Operation = Schemas["Operation"];
49
+ export type ErrorEnvelope = Schemas["Error"];
50
+ export type Role = Schemas["Role"];
51
+ export type Member = Schemas["Member"];
52
+ export type SecretMeta = Schemas["SecretMeta"];
53
+ export type SecretList = Schemas["SecretList"];
54
+ export type LogEvent = Schemas["LogEvent"];
55
+ export type Usage = Schemas["Usage"];
56
+ export type StorageStatus = Schemas["StorageStatus"];
57
+ export type AccessPolicy = Schemas["AccessPolicy"];
58
+ export type AccessBypass = Schemas["AccessBypass"];
59
+ export type AccessAuthorize = Schemas["AccessAuthorize"];
60
+ /** 정책 셋. 라디오 셋이 이 유니온에 붙는다 (docs/access.md §3.1). */
61
+ export type AccessMode = NonNullable<AccessPolicy["mode"]>;
62
+ export type UsageRow = Schemas["UsageRow"];
63
+ export type Notification = Schemas["Notification"];
64
+ /** 알림 종류. 대시보드의 라벨 표가 이 유니온에 붙는다 (§3.1). */
65
+ export type NotificationKind = NonNullable<Notification["kind"]>;
66
+ export type AuthStatus = Schemas["AuthStatus"];
67
+ export type AuthSettings = Schemas["AuthSettings"];
68
+ export type AuthBrand = Schemas["AuthBrand"];
69
+ export type AuthProviderMeta = Schemas["AuthProviderMeta"];
70
+ /** 프로바이더 셋. 화면의 행과 CLI 의 인자가 이 유니온에 붙는다. */
71
+ export type AuthProvider = Schemas["AuthProvider"];
72
+ /** PATCH 의 본문 — `AuthSettings` 의 부분집합. 준 칸만 바뀐다. */
73
+ export type AuthSettingsInput = NonNullable<Schemas["AuthSettingsPatch"]["settings"]>;
74
+ export type Hostname = Schemas["Hostname"];
75
+ export type HostnameList = Schemas["HostnameList"];
76
+ export type HostnameVerify = Schemas["HostnameVerify"];
77
+ export type HostnameRecord = Schemas["HostnameRecord"];
78
+ /** 상태 넷. 화면의 배지가 이 값에 붙는다 (docs/domains.md §3.3). */
79
+ export type HostnameState = NonNullable<Hostname["state"]>;
80
+ export type Zone = Schemas["Zone"];
81
+ export type ZoneDetail = Schemas["ZoneDetail"];
82
+ export type RRset = Schemas["RRset"];
83
+ export type RRsetType = RRset["type"];
84
+ export type Domain = Schemas["Domain"];
85
+ export type DomainDetail = Schemas["DomainDetail"];
86
+ export type DomainList = Schemas["DomainList"];
87
+ export type DomainAvailability = Schemas["DomainAvailability"];
88
+ export type DomainContact = Schemas["DomainContact"];
89
+ export type DomainEvent = Schemas["DomainEvent"];
90
+ /** `Domain["state"]` 을 따로 내보낸다 — 화면이 배지 표를 이 유니온으로 못박는다. */
91
+ export type DomainState = Domain["state"];
92
+ /** 서버가 돌려준 오류 봉투를 그대로 들고 있는 예외. */
93
+ export declare class ApiError extends Error {
94
+ readonly status: number;
95
+ readonly code: string;
96
+ readonly details?: Record<string, unknown>;
97
+ constructor(status: number, body: ErrorEnvelope | undefined, fallback: string);
98
+ }
99
+ export interface ClientOptions {
100
+ baseUrl: string;
101
+ token?: string | undefined;
102
+ }
103
+ export declare class Client {
104
+ private readonly opts;
105
+ constructor(opts: ClientOptions);
106
+ private headers;
107
+ private request;
108
+ private json;
109
+ devLogin(subject: string): Promise<Ok<"devLogin">>;
110
+ /** 켜진 로그인 방식. 로그인 화면이 버튼을 그리는 데 쓴다. */
111
+ authProviders(): Promise<Ok<"listAuthProviders">>;
112
+ /**
113
+ * GitHub OAuth 시작 URL. 브라우저가 따라가는 302 라 fetch 로 부르지 않고
114
+ * `window.location` 에 넣는다. `redirect` 는 서버 허용 목록에 있어야 한다.
115
+ */
116
+ githubStartUrl(redirect: string): string;
117
+ me(): Promise<Ok<"getMe">>;
118
+ listOrgs(): Promise<Ok<"listOrgs">>;
119
+ createOrg(slug: string, name: string): Promise<Ok<"createOrg">>;
120
+ /**
121
+ * org 의 최근 알림 (docs/limits.md §3.4).
122
+ *
123
+ * `sentAt` 이 없는 행은 아직 큐에 있거나 받을 이메일이 없는 것이다 — 후자에게
124
+ * 이 목록이 유일한 통로라, 화면은 두 상태를 같게 그린다.
125
+ */
126
+ listNotifications(org: string, limit?: number): Promise<Ok<"listNotifications">>;
127
+ listProjects(org: string): Promise<Ok<"listProjects">>;
128
+ createProject(org: string, name: string): Promise<Ok<"createProject">>;
129
+ getProject(org: string, name: string): Promise<Ok<"getProject">>;
130
+ listDeployments(org: string, name: string): Promise<Ok<"listDeployments">>;
131
+ /** 본문이 곧 번들이다. 다이제스트 하나가 코드와 자산 전부를 덮는다. */
132
+ deploy(org: string, name: string, bundle: Uint8Array): Promise<Ok<"createDeployment">>;
133
+ /** 멱등이다. 두 번 불러도 비밀번호는 굴지 않고 같은 접속 정보가 온다. */
134
+ createDatabase(org: string, name: string): Promise<Ok<"createDatabase">>;
135
+ getDatabase(org: string, name: string): Promise<Ok<"getDatabase">>;
136
+ /**
137
+ * 접속 자격까지. `getDatabase` 와 라우트가 갈린 것은 역할 때문이다 —
138
+ * viewer 는 여부를 알아도 되지만 비밀번호는 아니다 (proto/openapi.yaml).
139
+ */
140
+ getDatabaseConnect(org: string, name: string): Promise<Ok<"getDatabaseConnect">>;
141
+ /** 접속 끝점만 — 자격 없음. viewer 도 받는다. `runlot port-forward` 가 쓴다. */
142
+ getDatabaseEndpoint(org: string, name: string): Promise<Ok<"getDatabaseEndpoint">>;
143
+ /** 단기 기계 자격 발급. 비밀번호는 이 응답에만 실린다. */
144
+ createDatabaseToken(org: string, name: string, ttlSeconds?: number): Promise<Ok<"createDatabaseToken">>;
145
+ listDatabaseTokens(org: string, name: string): Promise<Ok<"listDatabaseTokens">>;
146
+ deleteDatabaseToken(org: string, name: string, user: string): Promise<void>;
147
+ /**
148
+ * 진단 이미지를 하나 만든다.
149
+ *
150
+ * **멱등이 아니다** — 부를 때마다 이미지가 하나 생긴다. 그리고 느리다:
151
+ * 응답은 덤프가 끝난 뒤에 오고, 그동안 그 프로젝트의 액터는 붙잡혀 있다
152
+ * (proto/openapi.yaml).
153
+ */
154
+ exportDatabase(org: string, name: string): Promise<Ok<"exportDatabase">>;
155
+ /**
156
+ * 복원이 고를 수 있는 세대 전부. 최신 순이고, `lastCheckedAt` 은 무변경
157
+ * 스킵의 하트비트다 — 세대가 늘지 않는 것과 백업이 죽은 것을 가른다.
158
+ */
159
+ listGenerations(org: string, name: string): Promise<Ok<"listGenerations">>;
160
+ /**
161
+ * 세대로 되돌린다. **그 사이의 쓰기는 사라진다.**
162
+ *
163
+ * 202 로 끝난다 — 돌아오는 것은 연산 id 이고, 진행은
164
+ * `getDatabaseOperation` 으로 본다. `latest` 는 서버가 풀지 않는다:
165
+ * 목록에서 고른 `(epoch, seq)` 를 그대로 싣는다 (proto/openapi.yaml).
166
+ */
167
+ restoreDatabase(org: string, name: string, epoch: number, seq: number): Promise<Ok<"restoreDatabase">>;
168
+ /**
169
+ * 데이터베이스를 없앤다. `confirm` 은 프로젝트 이름과 **정확히** 같아야
170
+ * 하고, 다르면 서버가 400 `confirm_mismatch` 로 거절한다.
171
+ */
172
+ deleteDatabase(org: string, name: string, confirm: string): Promise<Ok<"deleteDatabase">>;
173
+ /** 연산 하나의 진행. 연산 id 는 자격이 아니라 프로젝트 경로 아래에 있다. */
174
+ getDatabaseOperation(org: string, name: string, opId: string): Promise<Ok<"getDatabaseOperation">>;
175
+ /** 되돌릴 수 없는 phase 앞의 연산을 중단한다. */
176
+ abortDatabaseOperation(org: string, name: string, opId: string): Promise<Ok<"abortDatabaseOperation">>;
177
+ /**
178
+ * 로그 라이브 테일. **JSON 이 아니라 스트림**이라 `request` 를 안 지난다 —
179
+ * 돌려주는 것은 줄 단위 `LogEvent` 의 async iterable 이고, `signal` 을 abort
180
+ * 하면 연결이 끊긴다. 오류 응답(4xx/5xx)은 다른 메서드와 같은 `ApiError` 다.
181
+ */
182
+ tailLogs(org: string, name: string, opts?: {
183
+ tail?: number;
184
+ follow?: boolean;
185
+ signal?: AbortSignal;
186
+ }): AsyncGenerator<LogEvent, void, undefined>;
187
+ listSecrets(org: string, name: string): Promise<Ok<"listSecrets">>;
188
+ /** 값은 이 호출로만 나간다. 어떤 응답에도 값은 없다. */
189
+ setSecret(org: string, name: string, secret: string, value: string): Promise<Ok<"setSecret">>;
190
+ deleteSecret(org: string, name: string, secret: string): Promise<void>;
191
+ getUsage(org: string, name: string, hours?: number): Promise<Ok<"getUsage">>;
192
+ /** 부여 여부·접두·쿼터·사용량. `usedBytes` 는 노드 보고 주기만큼 늦다. */
193
+ getStorage(org: string, name: string): Promise<Ok<"getStorage">>;
194
+ /**
195
+ * 스토리지를 부여한다. 멱등이라 두 번 눌러도 접두는 그대로다. 접두·쿼터를
196
+ * 인자로 받지 않는 것이 요점이다 — 접두는 격리의 경계이고 쿼터는 요금제가
197
+ * 정한다 (proto/openapi.yaml).
198
+ */
199
+ grantStorage(org: string, name: string): Promise<Ok<"grantStorage">>;
200
+ /** 부여를 뗀다. **객체는 지워지지 않는다** (docs/storage.md §7). */
201
+ revokeStorage(org: string, name: string): Promise<void>;
202
+ /**
203
+ * 부여 여부·설정·프로바이더·호스트. **가입자는 안 온다** — 그 표는 프로젝트
204
+ * DB 안이고 (docs/auth.md §6) 워커의 `env.auth` 만 본다.
205
+ *
206
+ * `providers` 에는 client id 만 있다. 클라이언트 시크릿은 봉인돼 어느
207
+ * 응답에도 안 나온다.
208
+ */
209
+ getAuth(org: string, name: string): Promise<Ok<"getAuth">>;
210
+ /**
211
+ * 인증을 켠다 (member). 멱등이다.
212
+ *
213
+ * **데이터베이스가 없으면 409 `database_required`** 다 — 가입자 표가
214
+ * 프로젝트 DB 안이라 부여만 세우면 워커가 뜨는 순간 표가 없다. 부르는 쪽은
215
+ * 그 코드를 잡아 `runlot pg create` 를 안내한다.
216
+ */
217
+ grantAuth(org: string, name: string): Promise<Ok<"grantAuth">>;
218
+ /**
219
+ * 설정을 바꾼다 (member). **부분 갱신이다** — 준 칸만 바뀐다. 스위치 하나에
220
+ * 전체를 실어 보내면 두 사람이 같은 카드를 만질 때 나중 저장이 앞 저장을
221
+ * 덮는다. 부여가 없으면 404 `not_granted`.
222
+ */
223
+ updateAuthSettings(org: string, name: string, settings: AuthSettingsInput): Promise<Ok<"updateAuthSettings">>;
224
+ /**
225
+ * 인증을 해제한다 (admin). **가입자는 안 지워진다** — `runlot_auth` 의 표는
226
+ * 프로젝트 DB 에 남고, 다시 켜면 같은 사람들이 그대로 로그인한다.
227
+ */
228
+ revokeAuth(org: string, name: string): Promise<void>;
229
+ /**
230
+ * 소셜 프로바이더를 등록하거나 교체한다 (admin). 같은 PUT 이라 멱등이다.
231
+ *
232
+ * **`clientSecret` 은 다시 볼 수 없다.** 콜백 URL 은 호스트마다
233
+ * `https://<host>/__runlot/auth/callback/<provider>` 이고, 호스트 목록은
234
+ * 응답의 `hosts` 에 있다.
235
+ */
236
+ setAuthProvider(org: string, name: string, provider: AuthProvider, clientId: string, clientSecret: string): Promise<Ok<"setAuthProvider">>;
237
+ /**
238
+ * 프로바이더를 뗀다 (admin). 그 프로바이더로만 가입한 사람은 로그인할 길을
239
+ * 잃지만 사용자 행은 남는다 — 다시 등록하면 같은 계정으로 돌아온다.
240
+ */
241
+ deleteAuthProvider(org: string, name: string, provider: AuthProvider): Promise<void>;
242
+ /**
243
+ * 이 배포에 누가 닿을 수 있는가. **값은 없다** — 비밀번호도 우회 시크릿도
244
+ * 해시로만 살고, 여기 오는 것은 `hasPassword`·`hasBypass` 라는 사실이다.
245
+ *
246
+ * 정책을 한 번도 안 정한 프로젝트는 `mode: "public"` 에 `updatedAt` 이
247
+ * 없다. 화면이 그 둘을 가르는 이유는 §7 — 빈 상태 대신 상태 문장이다.
248
+ */
249
+ getAccess(org: string, name: string): Promise<Ok<"getAccess">>;
250
+ /**
251
+ * 정책을 바꾼다 (admin). `password` 를 안 보내면 **있던 비밀번호가 남는다** —
252
+ * 모드만 바꾸는 저장이 비밀번호를 지우면 되돌아왔을 때 다시 정해야 한다.
253
+ */
254
+ setAccess(org: string, name: string, mode: AccessMode, password?: string): Promise<Ok<"setAccess">>;
255
+ /**
256
+ * 자동화 우회 시크릿을 만든다 (admin). **값은 이 답에만 있다** — 화면은
257
+ * 받은 즉시 한 번 보여주고 다시 못 가져온다. 다시 부르면 옛 값이 죽는다.
258
+ */
259
+ newAccessBypass(org: string, name: string): Promise<Ok<"newAccessBypass">>;
260
+ /** 우회를 뗀다 (admin). 없는 우회를 떼는 것도 성공이다. */
261
+ revokeAccessBypass(org: string, name: string): Promise<void>;
262
+ /**
263
+ * 보호된 배포로 돌아가는 1 회용 주소를 받는다 (docs/access.md §3.4-3).
264
+ *
265
+ * 프로젝트 경로 아래가 **아니다**: 부르는 화면이 아는 것은 호스트네임뿐이고
266
+ * (원 요청이 그리로 갔다), org·프로젝트 이름은 서버가 그것에서 유도한다.
267
+ * 받은 `redirect` 로 `location.replace` 하는 것이 호출부의 일이다.
268
+ */
269
+ authorizeAccess(to: string, next?: string): Promise<Ok<"authorizeAccess">>;
270
+ listMembers(org: string): Promise<Ok<"listMembers">>;
271
+ /** 초대가 아니다 — 사용자는 이미 한 번 로그인해 있어야 한다 (404 `user_not_found`). */
272
+ addMember(org: string, provider: "dev" | "github", subject: string, role: Role): Promise<Ok<"addMember">>;
273
+ setMemberRole(org: string, userId: string, role: Role): Promise<Ok<"setMemberRole">>;
274
+ removeMember(org: string, userId: string): Promise<void>;
275
+ /** 기본 호스트네임과 커스텀 도메인이 함께 온다 (viewer). */
276
+ listHostnames(org: string, name: string): Promise<Ok<"listHostnames">>;
277
+ /**
278
+ * 커스텀 도메인을 건다 (member).
279
+ *
280
+ * 멱등이다 — 같은 이름을 다시 보내면 있던 행이 그대로 온다. 응답의 `verify`
281
+ * 가 고객이 넣어야 하는 CNAME·TXT 다.
282
+ */
283
+ addHostname(org: string, name: string, hostname: string): Promise<Ok<"addHostname">>;
284
+ /** 배경 검증과 같은 판정을 즉시 부른다 (member). */
285
+ verifyHostname(org: string, name: string, host: string): Promise<Ok<"verifyHostname">>;
286
+ /** 커스텀 도메인을 뗀다 (member). 기본 호스트네임은 400 이다. */
287
+ deleteHostname(org: string, name: string, host: string): Promise<void>;
288
+ /** 이 조직의 존 목록. `rrsets` 는 없다 — 단건 조회에만 실려요. */
289
+ listZones(org: string): Promise<Ok<"listZones">>;
290
+ /** 멱등이에요. 이미 있는 존은 그대로 돌아와요. */
291
+ createZone(org: string, name: string): Promise<Ok<"createZone">>;
292
+ getZone(org: string, zone: string): Promise<Ok<"getZone">>;
293
+ deleteZone(org: string, zone: string): Promise<void>;
294
+ /**
295
+ * rrset 하나를 **통째로** 바꿔요. `records` 가 그 (이름, 타입) 의 새 전부라,
296
+ * 값 하나를 더하려면 지금 값을 함께 보내야 해요.
297
+ */
298
+ putRRset(org: string, zone: string, name: string, type: RRsetType, ttl: number, records: string[]): Promise<Ok<"putRRset">>;
299
+ deleteRRset(org: string, zone: string, name: string, type: RRsetType): Promise<void>;
300
+ setZoneDNSSEC(org: string, zone: string, enabled: boolean): Promise<Ok<"setZoneDNSSEC">>;
301
+ setZoneDS(org: string, zone: string, ds: string[]): Promise<Ok<"setZoneDS">>;
302
+ /** DNS 표면의 공통 접두. */
303
+ private dnsPath;
304
+ /** `@` 도 `*` 도 이름으로 와요. 네 군데에 같은 문자열을 적지 않아요. */
305
+ private rrsetPath;
306
+ /**
307
+ * 이름을 찾아본다 (member 이상).
308
+ *
309
+ * `priceCents` 는 첫 등록 1 년, `renewalCents` 는 갱신 1 년이다. 둘이
310
+ * 나뉘어 있는 이유는 첫해 할인이 흔해서다 — 하나로 접으면 "1 달러에 사서
311
+ * 다음 해 15 달러" 를 화면이 말할 수 없다.
312
+ */
313
+ checkDomains(org: string, names: string[]): Promise<Ok<"checkDomains">>;
314
+ /**
315
+ * 도메인을 산다 (admin — 돈을 써요).
316
+ *
317
+ * **ICANN 검증 메일이 `contact.email` 로 가요.** 화면은 사기 전에 그
318
+ * 사실을 알려야 해요 (docs/domains.md §5.5).
319
+ *
320
+ * 같은 요청을 다시 보내는 것이 안전해요 — 끝난 도메인이면 그대로 오고,
321
+ * 중간에 멈춘 구매면 그 자리에서 이어 가요.
322
+ */
323
+ purchaseDomain(org: string, body: {
324
+ name: string;
325
+ years?: number;
326
+ contact: DomainContact;
327
+ projectId?: string;
328
+ }): Promise<Ok<"purchaseDomain">>;
329
+ /** 이미 가진 도메인을 가져와요 (admin). 등록기관을 부르지 않고 존만 만들어요. */
330
+ importDomain(org: string, name: string): Promise<Ok<"importDomain">>;
331
+ listDomains(org: string): Promise<Ok<"listDomains">>;
332
+ getDomain(org: string, name: string): Promise<Ok<"getDomain">>;
333
+ renewDomain(org: string, name: string, years: number): Promise<Ok<"renewDomain">>;
334
+ /**
335
+ * 자동 갱신 **의사**만 바꿔요.
336
+ *
337
+ * 등록기관 쪽 자동 갱신은 그대로 켜져 있어요 — 도메인은 하루 늦으면 잃는
338
+ * 자산이라 우리가 먼저 갱신하고 뒤에 청구해요. 화면은 이 사실을 함께
339
+ * 말해야 해요.
340
+ */
341
+ setDomainAutoRenew(org: string, name: string, enabled: boolean): Promise<Ok<"setDomainAutoRenew">>;
342
+ setDomainLock(org: string, name: string, locked: boolean): Promise<Ok<"setDomainLock">>;
343
+ /** 이전 코드예요. 감사에 발급 사실이 남고 **코드는 남지 않아요**. */
344
+ domainAuthCode(org: string, name: string): Promise<Ok<"getDomainAuthCode">>;
345
+ /** 지금 등록기관에서 다시 읽어요 (member). */
346
+ syncDomain(org: string, name: string): Promise<Ok<"syncDomain">>;
347
+ /** 도메인 표면의 공통 접두. 열 군데에 같은 문자열을 적지 않아요. */
348
+ private domainsPath;
349
+ private domainPath;
350
+ /** 프로젝트 표면의 공통 접두다. */
351
+ private projectPath;
352
+ /** 데이터베이스 표면의 공통 접두다. 다섯 군데에 같은 문자열을 적지 않는다. */
353
+ private dbPath;
354
+ rollback(org: string, name: string, version: number): Promise<Ok<"rollback">>;
355
+ }
356
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}