@leaflow/sdk 0.5.0 → 0.6.0
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.
- package/dist/generated/assistant/index.d.ts +8 -7
- package/dist/generated/assistant/index.js +6 -5
- package/dist/generated/assistant/models/bindingCodeResponseBody.d.ts +34 -0
- package/dist/generated/assistant/models/bindingCodeResponseBody.js +31 -0
- package/dist/generated/assistant/models/bindingResource.d.ts +4 -1
- package/dist/generated/assistant/models/bindingResourceConnState.d.ts +37 -0
- package/dist/generated/assistant/models/bindingResourceConnState.js +37 -0
- package/dist/generated/assistant/models/bindingResourceStatus.d.ts +36 -0
- package/dist/generated/assistant/models/bindingResourceStatus.js +36 -0
- package/dist/generated/assistant/models/channelResource.d.ts +10 -2
- package/dist/generated/assistant/models/channelResourceConnState.d.ts +40 -0
- package/dist/generated/assistant/models/channelResourceConnState.js +37 -0
- package/dist/generated/assistant/models/channelResourceRuntimeState.d.ts +38 -0
- package/dist/generated/assistant/models/channelResourceRuntimeState.js +35 -0
- package/dist/generated/assistant/models/channelResourceSenderPolicy.d.ts +35 -0
- package/dist/generated/assistant/models/channelResourceSenderPolicy.js +35 -0
- package/dist/generated/assistant/models/channelResourceStatus.d.ts +36 -0
- package/dist/generated/assistant/models/channelResourceStatus.js +36 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBody.d.ts +57 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBody.js +1 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyAllowFrom.d.ts +31 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyAllowFrom.js +31 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyConnState.d.ts +40 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyConnState.js +37 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyRuntimeState.d.ts +38 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyRuntimeState.js +35 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodySenderPolicy.d.ts +35 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodySenderPolicy.js +35 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyStatus.d.ts +36 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyStatus.js +36 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyWebhookSecret.d.ts +34 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyWebhookSecret.js +31 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyWebhookUrl.d.ts +34 -0
- package/dist/generated/assistant/models/channelWithSecretResponseBodyWebhookUrl.js +31 -0
- package/dist/generated/assistant/models/createChannelRequestBody.d.ts +3 -2
- package/dist/generated/assistant/models/createChannelRequestBodySenderPolicy.d.ts +35 -0
- package/dist/generated/assistant/models/createChannelRequestBodySenderPolicy.js +35 -0
- package/dist/generated/assistant/models/index.d.ts +17 -1
- package/dist/generated/assistant/models/index.js +17 -1
- package/dist/generated/assistant/models/itemResourceStatus.d.ts +1 -1
- package/dist/generated/assistant/models/itemResourceStatus.js +1 -1
- package/dist/generated/assistant/models/itemResourceType.d.ts +1 -0
- package/dist/generated/assistant/models/itemResourceType.js +1 -0
- package/dist/generated/assistant/models/loginResource.d.ts +5 -2
- package/dist/generated/assistant/models/loginResource.js +0 -30
- package/dist/generated/assistant/models/loginResourceStatus.d.ts +39 -0
- package/dist/generated/assistant/models/loginResourceStatus.js +39 -0
- package/dist/generated/assistant/models/updateChannelRequestBodySenderPolicy.d.ts +2 -2
- package/dist/generated/assistant/models/updateChannelRequestBodySenderPolicy.js +2 -2
- package/dist/generated/tunnel/index.d.ts +142 -0
- package/dist/generated/tunnel/index.js +149 -0
- package/dist/generated/tunnel/models/actOnTunnelRequestBody.d.ts +28 -0
- package/dist/generated/tunnel/models/actOnTunnelRequestBody.js +1 -0
- package/dist/generated/tunnel/models/actOnTunnelRequestBodyAction.d.ts +29 -0
- package/dist/generated/tunnel/models/actOnTunnelRequestBodyAction.js +29 -0
- package/dist/generated/tunnel/models/changeTunnelPlanRequestBody.d.ts +27 -0
- package/dist/generated/tunnel/models/changeTunnelPlanRequestBody.js +25 -0
- package/dist/generated/tunnel/models/error.d.ts +31 -0
- package/dist/generated/tunnel/models/error.js +1 -0
- package/dist/generated/tunnel/models/errorMeta.d.ts +27 -0
- package/dist/generated/tunnel/models/errorMeta.js +25 -0
- package/dist/generated/tunnel/models/index.d.ts +54 -0
- package/dist/generated/tunnel/models/index.js +54 -0
- package/dist/generated/tunnel/models/lengthAwarePageOperationLogResource.d.ts +35 -0
- package/dist/generated/tunnel/models/lengthAwarePageOperationLogResource.js +1 -0
- package/dist/generated/tunnel/models/listTunnelOperationLogsParams.d.ts +43 -0
- package/dist/generated/tunnel/models/listTunnelOperationLogsParams.js +25 -0
- package/dist/generated/tunnel/models/listTunnelUsageSeriesParams.d.ts +32 -0
- package/dist/generated/tunnel/models/listTunnelUsageSeriesParams.js +25 -0
- package/dist/generated/tunnel/models/openTunnelRequestBody.d.ts +38 -0
- package/dist/generated/tunnel/models/openTunnelRequestBody.js +25 -0
- package/dist/generated/tunnel/models/operationLogResource.d.ts +38 -0
- package/dist/generated/tunnel/models/operationLogResource.js +1 -0
- package/dist/generated/tunnel/models/operationLogResourceActor.d.ts +28 -0
- package/dist/generated/tunnel/models/operationLogResourceActor.js +25 -0
- package/dist/generated/tunnel/models/operationLogResourcePayload.d.ts +27 -0
- package/dist/generated/tunnel/models/operationLogResourcePayload.js +25 -0
- package/dist/generated/tunnel/models/subscriptionResource.d.ts +33 -0
- package/dist/generated/tunnel/models/subscriptionResource.js +1 -0
- package/dist/generated/tunnel/models/subscriptionResourceStatus.d.ts +32 -0
- package/dist/generated/tunnel/models/subscriptionResourceStatus.js +29 -0
- package/dist/generated/tunnel/models/tunnelPlanListResponseBody.d.ts +28 -0
- package/dist/generated/tunnel/models/tunnelPlanListResponseBody.js +1 -0
- package/dist/generated/tunnel/models/tunnelPlanResource.d.ts +33 -0
- package/dist/generated/tunnel/models/tunnelPlanResource.js +25 -0
- package/dist/generated/tunnel/models/tunnelResource.d.ts +54 -0
- package/dist/generated/tunnel/models/tunnelResource.js +1 -0
- package/dist/generated/tunnel/models/tunnelResourceEmail.d.ts +28 -0
- package/dist/generated/tunnel/models/tunnelResourceEmail.js +25 -0
- package/dist/generated/tunnel/models/tunnelResourceFailure.d.ts +28 -0
- package/dist/generated/tunnel/models/tunnelResourceFailure.js +25 -0
- package/dist/generated/tunnel/models/tunnelResourceStatus.d.ts +32 -0
- package/dist/generated/tunnel/models/tunnelResourceStatus.js +29 -0
- package/dist/generated/tunnel/models/tunnelResourceSubscriptionStatus.d.ts +32 -0
- package/dist/generated/tunnel/models/tunnelResourceSubscriptionStatus.js +29 -0
- package/dist/generated/tunnel/models/tunnelResourceSuspendedAt.d.ts +28 -0
- package/dist/generated/tunnel/models/tunnelResourceSuspendedAt.js +25 -0
- package/dist/generated/tunnel/models/tunnelUsageSnapshot.d.ts +38 -0
- package/dist/generated/tunnel/models/tunnelUsageSnapshot.js +1 -0
- package/dist/generated/tunnel/models/tunnelUsageSnapshotSyncedAt.d.ts +28 -0
- package/dist/generated/tunnel/models/tunnelUsageSnapshotSyncedAt.js +25 -0
- package/dist/generated/tunnel/models/updateTunnelProfileRequestBody.d.ts +34 -0
- package/dist/generated/tunnel/models/updateTunnelProfileRequestBody.js +1 -0
- package/dist/generated/tunnel/models/updateTunnelProfileRequestBodyEmail.d.ts +29 -0
- package/dist/generated/tunnel/models/updateTunnelProfileRequestBodyEmail.js +25 -0
- package/dist/generated/tunnel/models/usageDayResource.d.ts +30 -0
- package/dist/generated/tunnel/models/usageDayResource.js +25 -0
- package/dist/generated/tunnel/models/usageResource.d.ts +43 -0
- package/dist/generated/tunnel/models/usageResource.js +1 -0
- package/dist/generated/tunnel/models/usageResourceQuotaExceededAt.d.ts +28 -0
- package/dist/generated/tunnel/models/usageResourceQuotaExceededAt.js +25 -0
- package/dist/generated/tunnel/models/usageSeriesResource.d.ts +30 -0
- package/dist/generated/tunnel/models/usageSeriesResource.js +1 -0
- package/dist/http.d.ts +26 -0
- package/dist/http.js +49 -16
- package/dist/index.d.ts +14 -0
- package/dist/index.js +18 -3
- package/openapi/assistant.version +1 -1
- package/openapi/assistant.yaml +147 -25
- package/openapi/compute.version +1 -1
- package/openapi/monitoring.version +1 -1
- package/openapi/tunnel.version +1 -0
- package/openapi/tunnel.yaml +773 -0
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-redeclare
|
|
26
|
+
export const TunnelResourceSubscriptionStatus = {
|
|
27
|
+
preparing: 'preparing',
|
|
28
|
+
ready: 'ready',
|
|
29
|
+
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* 被平台停用的时刻
|
|
27
|
+
*/
|
|
28
|
+
export type TunnelResourceSuspendedAt = string | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
import type { TunnelUsageSnapshotSyncedAt } from './tunnelUsageSnapshotSyncedAt.js';
|
|
26
|
+
export interface TunnelUsageSnapshot {
|
|
27
|
+
/** 按线路倍率折算后的用量,配额比对以此为准 */
|
|
28
|
+
billed_bytes: number;
|
|
29
|
+
/** billed_bytes 是否已超过 quota_bytes;配额为 0 时恒为 false */
|
|
30
|
+
over_quota: boolean;
|
|
31
|
+
/** 上游给出的真实配额,0 表示不限量 */
|
|
32
|
+
quota_bytes: number;
|
|
33
|
+
/** 实际传输的字节,不用于配额比对 */
|
|
34
|
+
raw_bytes: number;
|
|
35
|
+
/** 这份用量是什么时候采集的;null 表示尚未采集 */
|
|
36
|
+
synced_at: TunnelUsageSnapshotSyncedAt;
|
|
37
|
+
upload_bytes: number;
|
|
38
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* 这份用量是什么时候采集的;null 表示尚未采集
|
|
27
|
+
*/
|
|
28
|
+
export type TunnelUsageSnapshotSyncedAt = string | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
import type { UpdateTunnelProfileRequestBodyEmail } from './updateTunnelProfileRequestBodyEmail.js';
|
|
26
|
+
export interface UpdateTunnelProfileRequestBody {
|
|
27
|
+
/** @maxLength 128 */
|
|
28
|
+
display_name: string;
|
|
29
|
+
/**
|
|
30
|
+
* 联系邮箱。不传表示不改动,传空字符串表示清空
|
|
31
|
+
* @maxLength 255
|
|
32
|
+
*/
|
|
33
|
+
email?: UpdateTunnelProfileRequestBodyEmail;
|
|
34
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* 联系邮箱。不传表示不改动,传空字符串表示清空
|
|
27
|
+
* @maxLength 255
|
|
28
|
+
*/
|
|
29
|
+
export type UpdateTunnelProfileRequestBodyEmail = string | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export interface UsageDayResource {
|
|
26
|
+
billed_bytes: number;
|
|
27
|
+
/** YYYY-MM-DD */
|
|
28
|
+
day: string;
|
|
29
|
+
raw_bytes: number;
|
|
30
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
import type { UsageResourceQuotaExceededAt } from './usageResourceQuotaExceededAt.js';
|
|
26
|
+
export interface UsageResource {
|
|
27
|
+
/** 按线路倍率折算后的用量,配额比对以此为准 */
|
|
28
|
+
billed_bytes: number;
|
|
29
|
+
over_quota: boolean;
|
|
30
|
+
/** 本期计费周期的结束日(YYYY-MM-DD) */
|
|
31
|
+
period_end: string;
|
|
32
|
+
/** 本期计费周期的起始日(YYYY-MM-DD) */
|
|
33
|
+
period_start: string;
|
|
34
|
+
/** 上游给出的真实配额,0 表示不限量 */
|
|
35
|
+
quota_bytes: number;
|
|
36
|
+
/** 上游判定超额的时刻;null 表示未超额 */
|
|
37
|
+
quota_exceeded_at: UsageResourceQuotaExceededAt;
|
|
38
|
+
/** 实际传输的字节,不用于配额比对 */
|
|
39
|
+
raw_bytes: number;
|
|
40
|
+
upload_bytes: number;
|
|
41
|
+
/** 上游给出的用量百分比 */
|
|
42
|
+
usage_percent: number;
|
|
43
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
/**
|
|
26
|
+
* 上游判定超额的时刻;null 表示未超额
|
|
27
|
+
*/
|
|
28
|
+
export type UsageResourceQuotaExceededAt = string | null;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by orval v7.21.0 🍺
|
|
3
|
+
* Do not edit manually.
|
|
4
|
+
* Leaflow 隧道用户 API
|
|
5
|
+
* Leaflow 隧道的用户接口,用于开通与管理项目的加速隧道、订阅地址和流量用量。
|
|
6
|
+
|
|
7
|
+
## 身份与鉴权
|
|
8
|
+
|
|
9
|
+
每个请求需携带 `Authorization: Bearer <项目令牌>`。先在 auth.leaflow.net 登录获取账号令牌,再用它向 IAM 换取项目令牌(`POST /api/v1/projects/{projectId}/token`)。一张项目令牌同时说明当前用户和当前项目。
|
|
10
|
+
|
|
11
|
+
**路径和请求头上都没有 `project_id`**:当前项目由令牌决定。
|
|
12
|
+
|
|
13
|
+
鉴权在网关完成,失败的请求不会到达这些接口。按错误码区分处理方式:`TOKEN_MISSING` 表示没带令牌;`TOKEN_EXPIRED` 表示令牌过期,用账号令牌重新换取即可,无需重新登录;`TOKEN_INVALID` 表示令牌验不过;`NOT_A_MEMBER` 表示当前账号不是该项目成员;`USER_SUSPENDED` / `USER_BANNED` 表示账号本身不能操作。
|
|
14
|
+
|
|
15
|
+
## 通用约定
|
|
16
|
+
|
|
17
|
+
- **一个项目一条隧道。** 所以路径是单数的 `/tunnel`,不带 id。已经有一条时再开通会被拒绝(`TUNNEL_ALREADY_OPEN`)。
|
|
18
|
+
- **订阅地址是凭据。** 它等同于密码,只由 `GET /tunnel/subscription` 单独返回,不出现在隧道详情或任何列表里。怀疑泄露时用重置接口,它会让已分发的每一份订阅立即失效。
|
|
19
|
+
- **停用不是退订。** 停用保留端口和订阅地址,重新启用后原样回来;退订不可逆,重新开通得到的是全新的地址。
|
|
20
|
+
- **判断超额只看 `billed_bytes`。** 线路可以设置倍率(如 1.5× 或 0×),`raw_bytes` 是实际传输量,两者不一定相等。
|
|
21
|
+
- **用量最多滞后一个采集周期。** 适合用量管控,不适合作为计费结算依据。隧道详情里那份还额外经过一层缓存,`usage.synced_at` 说明它有多旧。
|
|
22
|
+
- **换套餐不是瞬时的。** 多出来的线路马上可用,少掉的那些有宽限期,到期才真正释放。
|
|
23
|
+
* OpenAPI spec version: 1.0.0
|
|
24
|
+
*/
|
|
25
|
+
import type { UsageDayResource } from './usageDayResource.js';
|
|
26
|
+
export interface UsageSeriesResource {
|
|
27
|
+
/** 上游实际采用的天数,可能被它夹到 1–365 */
|
|
28
|
+
days: number;
|
|
29
|
+
points: UsageDayResource[];
|
|
30
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/dist/http.d.ts
CHANGED
|
@@ -96,5 +96,31 @@ export type Bound<T> = {
|
|
|
96
96
|
* `scripts/check-generated-arity.mjs` fails the build if that changes: a slot
|
|
97
97
|
* that silently shifts by one would pass the client as somebody's request body,
|
|
98
98
|
* and no amount of type checking on generated code would catch it.
|
|
99
|
+
*
|
|
100
|
+
* # Why this builds an object instead of returning a Proxy
|
|
101
|
+
*
|
|
102
|
+
* It used to be a `Proxy` over the namespace, which is smaller and binds lazily.
|
|
103
|
+
* It also threw, in production only:
|
|
104
|
+
*
|
|
105
|
+
* 'get' on proxy: property 'getAccount' is a read-only and non-configurable
|
|
106
|
+
* data property on the proxy target but the proxy did not return its actual
|
|
107
|
+
* value
|
|
108
|
+
*
|
|
109
|
+
* That is a Proxy invariant, not a bug in the trap. `api` is an ES module
|
|
110
|
+
* namespace object, and a bundler is free to emit its exports as non-writable and
|
|
111
|
+
* non-configurable — Next's production build does, its dev server does not. When
|
|
112
|
+
* a target property is a read-only non-configurable data property, `get` **must**
|
|
113
|
+
* return that exact value, so a trap whose entire purpose is to return a wrapper
|
|
114
|
+
* cannot be correct. The old code was not wrong about the bundler; it was wrong
|
|
115
|
+
* about Proxy.
|
|
116
|
+
*
|
|
117
|
+
* It failed the worst possible way: every local check passes, `pnpm dev` passes,
|
|
118
|
+
* the production bundle throws on the first call. In the console that first call
|
|
119
|
+
* is `getAccount` during sign-in, so the symptom was "nobody can log in" with an
|
|
120
|
+
* error naming IAM — a service that was fine.
|
|
121
|
+
*
|
|
122
|
+
* Copying costs one pass over a few dozen keys per client. Clients are made per
|
|
123
|
+
* request here, which sounds like a lot until you notice the request that follows
|
|
124
|
+
* goes over a network.
|
|
99
125
|
*/
|
|
100
126
|
export declare function bindClient<T extends object>(api: T, client: Client): Bound<T>;
|
package/dist/http.js
CHANGED
|
@@ -83,23 +83,56 @@ export async function request(config, options) {
|
|
|
83
83
|
* `scripts/check-generated-arity.mjs` fails the build if that changes: a slot
|
|
84
84
|
* that silently shifts by one would pass the client as somebody's request body,
|
|
85
85
|
* and no amount of type checking on generated code would catch it.
|
|
86
|
+
*
|
|
87
|
+
* # Why this builds an object instead of returning a Proxy
|
|
88
|
+
*
|
|
89
|
+
* It used to be a `Proxy` over the namespace, which is smaller and binds lazily.
|
|
90
|
+
* It also threw, in production only:
|
|
91
|
+
*
|
|
92
|
+
* 'get' on proxy: property 'getAccount' is a read-only and non-configurable
|
|
93
|
+
* data property on the proxy target but the proxy did not return its actual
|
|
94
|
+
* value
|
|
95
|
+
*
|
|
96
|
+
* That is a Proxy invariant, not a bug in the trap. `api` is an ES module
|
|
97
|
+
* namespace object, and a bundler is free to emit its exports as non-writable and
|
|
98
|
+
* non-configurable — Next's production build does, its dev server does not. When
|
|
99
|
+
* a target property is a read-only non-configurable data property, `get` **must**
|
|
100
|
+
* return that exact value, so a trap whose entire purpose is to return a wrapper
|
|
101
|
+
* cannot be correct. The old code was not wrong about the bundler; it was wrong
|
|
102
|
+
* about Proxy.
|
|
103
|
+
*
|
|
104
|
+
* It failed the worst possible way: every local check passes, `pnpm dev` passes,
|
|
105
|
+
* the production bundle throws on the first call. In the console that first call
|
|
106
|
+
* is `getAccount` during sign-in, so the symptom was "nobody can log in" with an
|
|
107
|
+
* error naming IAM — a service that was fine.
|
|
108
|
+
*
|
|
109
|
+
* Copying costs one pass over a few dozen keys per client. Clients are made per
|
|
110
|
+
* request here, which sounds like a lot until you notice the request that follows
|
|
111
|
+
* goes over a network.
|
|
86
112
|
*/
|
|
87
113
|
export function bindClient(api, client) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
114
|
+
const bound = {};
|
|
115
|
+
/*
|
|
116
|
+
* `for...in` rather than `Object.keys`: a namespace object's exports are its
|
|
117
|
+
* own enumerable properties either way, but re-exported members can arrive on
|
|
118
|
+
* the prototype chain depending on how the bundler emitted them, and an
|
|
119
|
+
* operation that is silently missing is worse than one that is bound twice.
|
|
120
|
+
*/
|
|
121
|
+
for (const property in api) {
|
|
122
|
+
const value = api[property];
|
|
123
|
+
if (typeof value !== 'function') {
|
|
124
|
+
bound[property] = value;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
const operation = value;
|
|
128
|
+
bound[property] = (...args) => {
|
|
129
|
+
const slot = Math.max(operation.length - 1, 0);
|
|
130
|
+
const head = args.slice(0, slot);
|
|
131
|
+
while (head.length < slot) {
|
|
132
|
+
head.push(undefined);
|
|
93
133
|
}
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
while (head.length < slot) {
|
|
99
|
-
head.push(undefined);
|
|
100
|
-
}
|
|
101
|
-
return operation(...head, { client });
|
|
102
|
-
};
|
|
103
|
-
},
|
|
104
|
-
});
|
|
134
|
+
return operation(...head, { client });
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
return bound;
|
|
105
138
|
}
|
package/dist/index.d.ts
CHANGED
|
@@ -3,12 +3,14 @@ import * as assistantOperations from './generated/assistant/index.js';
|
|
|
3
3
|
import * as computeOperations from './generated/compute/index.js';
|
|
4
4
|
import * as iamOperations from './generated/iam/index.js';
|
|
5
5
|
import * as monitoringOperations from './generated/monitoring/index.js';
|
|
6
|
+
import * as tunnelOperations from './generated/tunnel/index.js';
|
|
6
7
|
export { createClient } from './http.js';
|
|
7
8
|
export type { Client, ClientOptions, TokenProvider } from './http.js';
|
|
8
9
|
export * as assistant from './generated/assistant/index.js';
|
|
9
10
|
export * as compute from './generated/compute/index.js';
|
|
10
11
|
export * as iam from './generated/iam/index.js';
|
|
11
12
|
export * as monitoring from './generated/monitoring/index.js';
|
|
13
|
+
export * as tunnel from './generated/tunnel/index.js';
|
|
12
14
|
/** Every assistant operation, bound to one address and one token. */
|
|
13
15
|
export type AssistantClient = Bound<typeof assistantOperations>;
|
|
14
16
|
/**
|
|
@@ -57,5 +59,17 @@ export type MonitoringClient = Bound<typeof monitoringOperations>;
|
|
|
57
59
|
* process-wide alternative; see `createClient`.
|
|
58
60
|
*/
|
|
59
61
|
export declare function createMonitoringClient(options: ClientOptions): MonitoringClient;
|
|
62
|
+
/** Every tunnel operation, bound to one address and one token. */
|
|
63
|
+
export type TunnelClient = Bound<typeof tunnelOperations>;
|
|
64
|
+
/**
|
|
65
|
+
* A client for tunnel.
|
|
66
|
+
*
|
|
67
|
+
* const tunnel = createTunnelClient({ baseURL, getToken });
|
|
68
|
+
*
|
|
69
|
+
* Hold one per address, and — where the token belongs to the request
|
|
70
|
+
* rather than to the process — one per request. There is no
|
|
71
|
+
* process-wide alternative; see `createClient`.
|
|
72
|
+
*/
|
|
73
|
+
export declare function createTunnelClient(options: ClientOptions): TunnelClient;
|
|
60
74
|
/** Service versions the bundled specs were generated from. */
|
|
61
75
|
export declare const SERVICE_VERSIONS: Record<string, string>;
|