mirror of
https://github.com/langgenius/dify.git
synced 2026-11-11 13:51:25 +08:00
1598 lines
41 KiB
JSON
Generated
1598 lines
41 KiB
JSON
Generated
{
|
|
"openapi": "3.0.3",
|
|
"info": {
|
|
"title": "",
|
|
"version": "0.0.1"
|
|
},
|
|
"x-dify-saas-commit": "2d358b5a0555440b30d8601f5e786a15e28a2345",
|
|
"paths": {
|
|
"/v1/subscription/info": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_GetSubscriptionInfo",
|
|
"parameters": [
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "exclude_vector_space",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetSubscriptionInfoReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/subscription/vector-space": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_GetSubscriptionVectorSpace",
|
|
"parameters": [
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "bypass_cache",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "boolean"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VectorSpaceQuota"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/subscription/knowledge-rate-limit": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_GetKnowledgeRateLimit",
|
|
"parameters": [
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetKnowledgeRateLimitReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/subscription/payment-link": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_GetSubscriptionPaymentLink",
|
|
"parameters": [
|
|
{
|
|
"name": "plan",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "interval",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "prefilled_email",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetSubscriptionPaymentLinkReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/subscription/plan/batch": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_BatchGetSubscriptionPlan",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BatchGetSubscriptionPlanReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/BatchGetSubscriptionPlanReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/subscription/cleanup/whitelist": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingSubscription"
|
|
],
|
|
"operationId": "BillingSubscription_ListSubscriptionCleanupWhitelist",
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ListSubscriptionCleanupWhitelistReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/model-provider/payment-link": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingModelProvider"
|
|
],
|
|
"operationId": "BillingModelProvider_GetModelProviderPaymentLink",
|
|
"parameters": [
|
|
{
|
|
"name": "provider_name",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "account_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "prefilled_email",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetModelProviderPaymentLinkReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/invoices": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingInvoice"
|
|
],
|
|
"operationId": "BillingInvoice_GetInvoices",
|
|
"parameters": [
|
|
{
|
|
"name": "prefilled_email",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetInvoicesReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/education/verify": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingEducation"
|
|
],
|
|
"operationId": "BillingEducation_VerifyEducationIdentity",
|
|
"parameters": [
|
|
{
|
|
"name": "account_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/VerifyEducationIdentityReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/education/status": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingEducation"
|
|
],
|
|
"operationId": "BillingEducation_GetEducationIdentityStatus",
|
|
"parameters": [
|
|
{
|
|
"name": "account_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/GetEducationIdentityStatusReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/education": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingEducation"
|
|
],
|
|
"operationId": "BillingEducation_CreateEducationIdentity",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateEducationIdentityReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateEducationIdentityReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/education/autocomplete": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingEducation"
|
|
],
|
|
"operationId": "BillingEducation_AutocompleteEducationInstitution",
|
|
"parameters": [
|
|
{
|
|
"name": "keywords",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "page",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AutocompleteEducationInstitutionReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/compliance/download": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingCompliance"
|
|
],
|
|
"operationId": "BillingCompliance_DownloadComplianceDocument",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadComplianceDocumentReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/DownloadComplianceDocumentReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/info": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "GetQuotaInfo returns aggregated quota info for all billing features of a tenant.",
|
|
"operationId": "BillingQuota_GetQuotaInfo",
|
|
"parameters": [
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaGetInfoReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/reserve": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "Reserve pre-allocates quota before task execution.",
|
|
"operationId": "BillingQuota_Reserve",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaReserveReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaReserveReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/commit": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "Commit finalizes the reservation with actual cost.",
|
|
"operationId": "BillingQuota_Commit",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaCommitReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaCommitReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/release": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "Release cancels a reservation and returns quota.",
|
|
"operationId": "BillingQuota_Release",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaReleaseReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaReleaseReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/balance": {
|
|
"get": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "GetBalance returns current available and reserved quota for a single feature.",
|
|
"operationId": "BillingQuota_GetBalance",
|
|
"parameters": [
|
|
{
|
|
"name": "tenant_id",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "feature_key",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
{
|
|
"name": "bucket",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaGetBalanceReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/quota/consume-capped": {
|
|
"post": {
|
|
"tags": [
|
|
"BillingQuota"
|
|
],
|
|
"description": "ConsumeCapped atomically consumes up to the available quota.",
|
|
"operationId": "BillingQuota_ConsumeCapped",
|
|
"requestBody": {
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaConsumeCappedReq"
|
|
}
|
|
}
|
|
},
|
|
"required": true
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "OK",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/QuotaConsumeCappedReply"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"components": {
|
|
"schemas": {
|
|
"AutocompleteEducationInstitutionReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"curr_page": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
},
|
|
"has_next": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"data",
|
|
"curr_page",
|
|
"has_next"
|
|
]
|
|
},
|
|
"BatchGetSubscriptionPlanReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/components/schemas/SubscriptionPlanItem"
|
|
}
|
|
}
|
|
},
|
|
"description": "Batch get subscription plan reply",
|
|
"required": [
|
|
"data"
|
|
]
|
|
},
|
|
"BatchGetSubscriptionPlanReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tenant_ids": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"description": "Batch get subscription plan request",
|
|
"required": [
|
|
"tenant_ids"
|
|
]
|
|
},
|
|
"BillingComplianceErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL",
|
|
"INVALID_COMPLIANCE_DOWNLOAD_REQUEST",
|
|
"MISSING_DOC_NAME",
|
|
"MISSING_IP_ADDRESS",
|
|
"MISSING_DEVICE_INFO",
|
|
"COMPLIANCE_DOCUMENT_NOT_FOUND",
|
|
"COMPLIANCE_DOWNLOAD_FORBIDDEN",
|
|
"COMPLIANCE_DOWNLOAD_FAILED"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingCompliance service: values of the proto enums dify.saas.api.billing.CommonErrorReason and dify.saas.api.billing.BillingComplianceErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingEducationErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL",
|
|
"EDUCATION_VERIFY_FAILED",
|
|
"EDUCATION_CREATE_FAILED",
|
|
"EDUCATION_STATUS_FAILED"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingEducation service: values of the proto enums dify.saas.api.billing.CommonErrorReason and dify.saas.api.billing.BillingEducationErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingInvoiceErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL",
|
|
"INVALID_INVOICE_REQUEST",
|
|
"CREATE_INVOICE_PORTAL_FAILED"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingInvoice service: values of the proto enums dify.saas.api.billing.CommonErrorReason and dify.saas.api.billing.BillingInvoiceErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingModelProviderErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL",
|
|
"INVALID_MODEL_PROVIDER_PAYMENT_LINK_REQUEST",
|
|
"MISSING_PROVIDER_NAME",
|
|
"INVALID_MODEL_PROVIDER",
|
|
"CREATE_MODEL_PROVIDER_PAYMENT_LINK_FAILED"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingModelProvider service: values of the proto enums dify.saas.api.billing.CommonErrorReason and dify.saas.api.billing.BillingModelProviderErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingQuotaErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingQuota service: values of the proto enum dify.saas.api.billing.CommonErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingSubscriptionErrorReason": {
|
|
"enum": [
|
|
"",
|
|
"CODEC",
|
|
"VALIDATOR",
|
|
"UNKNOWN",
|
|
"INVALID_SECRET_KEY",
|
|
"REQUEST_IN_PROGRESS",
|
|
"MISSING_TENANT_ID",
|
|
"INVALID_TENANT_ID",
|
|
"MISSING_ACCOUNT_ID",
|
|
"INVALID_ACCOUNT_ID",
|
|
"MISSING_PREFILLED_EMAIL",
|
|
"INVALID_PAYMENT_LINK_REQUEST",
|
|
"MISSING_PLAN",
|
|
"MISSING_INTERVAL",
|
|
"INVALID_PLAN_INTERVAL",
|
|
"CREATE_SUBSCRIPTION_PAYMENT_LINK_FAILED",
|
|
"INVALID_KNOWLEDGE_RATE_LIMIT_REQUEST",
|
|
"TENANT_IDS_COUNT_TOO_LARGE",
|
|
"DOCUMENT_USAGE_UNAVAILABLE"
|
|
],
|
|
"type": "string",
|
|
"description": "Reasons returned by the BillingSubscription service: values of the proto enums dify.saas.api.billing.CommonErrorReason and dify.saas.api.billing.BillingSubscriptionErrorReason, plus the reasons emitted by Kratos itself: CODEC and VALIDATOR (400), UNKNOWN (500, recovered panic) and an empty string (500, unclassified error).",
|
|
"properties": {}
|
|
},
|
|
"BillingSubscriptionPlan": {
|
|
"type": "object",
|
|
"properties": {
|
|
"plan": {
|
|
"enum": [
|
|
"sandbox",
|
|
"professional",
|
|
"team"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"interval": {
|
|
"enum": [
|
|
"",
|
|
"month",
|
|
"year"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"education": {
|
|
"type": "boolean"
|
|
},
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"cancel_at_period_end": {
|
|
"type": "boolean"
|
|
},
|
|
"paid_period_end": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Subscription plan and billing cycle info",
|
|
"required": [
|
|
"plan",
|
|
"interval",
|
|
"education",
|
|
"status",
|
|
"cancel_at_period_end",
|
|
"paid_period_end"
|
|
]
|
|
},
|
|
"CreateEducationIdentityReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"message": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"message"
|
|
]
|
|
},
|
|
"CreateEducationIdentityReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"account_id": {
|
|
"type": "string"
|
|
},
|
|
"curr_tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"institution": {
|
|
"type": "string"
|
|
},
|
|
"role": {
|
|
"type": "string"
|
|
},
|
|
"token": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"account_id",
|
|
"curr_tenant_id",
|
|
"institution",
|
|
"role",
|
|
"token"
|
|
]
|
|
},
|
|
"DownloadComplianceDocumentReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
]
|
|
},
|
|
"DownloadComplianceDocumentReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"doc_name": {
|
|
"type": "string"
|
|
},
|
|
"account_id": {
|
|
"type": "string"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"ip_address": {
|
|
"type": "string"
|
|
},
|
|
"device_info": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"doc_name",
|
|
"account_id",
|
|
"tenant_id",
|
|
"ip_address",
|
|
"device_info"
|
|
]
|
|
},
|
|
"Error": {
|
|
"required": [
|
|
"code",
|
|
"reason",
|
|
"message",
|
|
"metadata"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "integer",
|
|
"description": "HTTP status code.",
|
|
"format": "int32"
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"description": "Error reason. The possible values for an operation are listed in the dify.saas.api.billing.<Service>ErrorReason schema of its service, where <Service> is the operationId prefix before the underscore."
|
|
},
|
|
"message": {
|
|
"type": "string"
|
|
},
|
|
"metadata": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"description": "Error body returned with every non-2xx response."
|
|
},
|
|
"GetEducationIdentityStatusReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"result": {
|
|
"type": "boolean",
|
|
"description": "True when the account has an education identity that has not expired yet. False when it has\n none or its latest identity has expired."
|
|
},
|
|
"is_student": {
|
|
"type": "boolean",
|
|
"description": "Always equal to `result`."
|
|
},
|
|
"expire_at": {
|
|
"type": "string",
|
|
"description": "Expiry of the account's latest education identity, as an RFC 3339 UTC timestamp\n (for example `2027-10-30T08:00:00Z`). `1997-01-01T00:00:00Z` when the account has no education identity.",
|
|
"format": "date-time"
|
|
},
|
|
"allow_refresh": {
|
|
"type": "boolean",
|
|
"description": "True when the latest education identity expires within the configured number of refresh days\n before or after now. False when the account has no education identity."
|
|
}
|
|
},
|
|
"required": [
|
|
"result",
|
|
"is_student",
|
|
"expire_at",
|
|
"allow_refresh"
|
|
]
|
|
},
|
|
"GetInvoicesReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
]
|
|
},
|
|
"GetKnowledgeRateLimitReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"subscription_plan": {
|
|
"enum": [
|
|
"sandbox",
|
|
"professional",
|
|
"team"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"limit": {
|
|
"type": "integer",
|
|
"format": "int32"
|
|
}
|
|
},
|
|
"required": [
|
|
"subscription_plan",
|
|
"limit"
|
|
]
|
|
},
|
|
"GetModelProviderPaymentLinkReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
]
|
|
},
|
|
"GetSubscriptionInfoReply": {
|
|
"required": [
|
|
"enabled",
|
|
"subscription",
|
|
"members",
|
|
"apps",
|
|
"vector_space",
|
|
"knowledge_rate_limit",
|
|
"documents_upload_quota",
|
|
"annotation_quota_limit",
|
|
"docs_processing",
|
|
"can_replace_logo",
|
|
"model_load_balancing_enabled",
|
|
"knowledge_pipeline_publish_enabled",
|
|
"next_credit_reset_date"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"subscription": {
|
|
"$ref": "#/components/schemas/BillingSubscriptionPlan"
|
|
},
|
|
"members": {
|
|
"$ref": "#/components/schemas/SubscriptionQuota"
|
|
},
|
|
"apps": {
|
|
"$ref": "#/components/schemas/SubscriptionQuota"
|
|
},
|
|
"vector_space": {
|
|
"allOf": [
|
|
{
|
|
"$ref": "#/components/schemas/VectorSpaceQuota"
|
|
}
|
|
],
|
|
"nullable": true
|
|
},
|
|
"knowledge_rate_limit": {
|
|
"$ref": "#/components/schemas/KnowledgeRateLimit"
|
|
},
|
|
"documents_upload_quota": {
|
|
"$ref": "#/components/schemas/SubscriptionQuota"
|
|
},
|
|
"annotation_quota_limit": {
|
|
"$ref": "#/components/schemas/SubscriptionQuota"
|
|
},
|
|
"docs_processing": {
|
|
"enum": [
|
|
"standard",
|
|
"priority",
|
|
"top-priority"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"can_replace_logo": {
|
|
"type": "boolean"
|
|
},
|
|
"model_load_balancing_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"knowledge_pipeline_publish_enabled": {
|
|
"type": "boolean"
|
|
},
|
|
"next_credit_reset_date": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Get subscription info reply"
|
|
},
|
|
"GetSubscriptionPaymentLinkReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"description": "Get subscription payment link reply",
|
|
"required": [
|
|
"url"
|
|
]
|
|
},
|
|
"KnowledgeRateLimit": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Knowledge rate limit (requests per minute)\n NOTE: size is retained for structural consistency but is not consumed by dify.\n Implementation should populate 0 for paid users.",
|
|
"required": [
|
|
"size",
|
|
"limit"
|
|
]
|
|
},
|
|
"ListSubscriptionCleanupWhitelistReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"data": {
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/components/schemas/SubscriptionCleanupWhitelist"
|
|
}
|
|
}
|
|
},
|
|
"description": "List subscription cleanup whitelist reply",
|
|
"required": [
|
|
"data"
|
|
]
|
|
},
|
|
"QuotaCommitReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"available": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reserved": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"refunded": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"available",
|
|
"reserved",
|
|
"refunded"
|
|
]
|
|
},
|
|
"QuotaCommitReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"feature_key": {
|
|
"type": "string"
|
|
},
|
|
"reservation_id": {
|
|
"type": "string"
|
|
},
|
|
"actual_amount": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"meta": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bucket": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"tenant_id",
|
|
"feature_key",
|
|
"reservation_id",
|
|
"actual_amount",
|
|
"meta",
|
|
"bucket"
|
|
]
|
|
},
|
|
"QuotaConsumeCappedReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"deducted": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"available": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reserved": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"quota": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"usage": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"deducted",
|
|
"available",
|
|
"reserved",
|
|
"quota",
|
|
"usage"
|
|
]
|
|
},
|
|
"QuotaConsumeCappedReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"feature_key": {
|
|
"type": "string"
|
|
},
|
|
"request_id": {
|
|
"type": "string"
|
|
},
|
|
"amount": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"meta": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"bucket": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"tenant_id",
|
|
"feature_key",
|
|
"request_id",
|
|
"amount",
|
|
"meta",
|
|
"bucket"
|
|
]
|
|
},
|
|
"QuotaFeatureInfo": {
|
|
"type": "object",
|
|
"properties": {
|
|
"usage": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reset_date": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Per-feature quota detail",
|
|
"required": [
|
|
"usage",
|
|
"limit",
|
|
"reset_date"
|
|
]
|
|
},
|
|
"QuotaGetBalanceReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"available": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reserved": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"quota": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"usage": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"exhausted_at": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"available",
|
|
"reserved",
|
|
"quota",
|
|
"usage",
|
|
"exhausted_at"
|
|
]
|
|
},
|
|
"QuotaGetInfoReply": {
|
|
"required": [
|
|
"trigger_event",
|
|
"api_rate_limit"
|
|
],
|
|
"type": "object",
|
|
"properties": {
|
|
"trigger_event": {
|
|
"$ref": "#/components/schemas/QuotaFeatureInfo"
|
|
},
|
|
"api_rate_limit": {
|
|
"$ref": "#/components/schemas/QuotaFeatureInfo"
|
|
}
|
|
}
|
|
},
|
|
"QuotaReleaseReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"available": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reserved": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"released": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"available",
|
|
"reserved",
|
|
"released"
|
|
]
|
|
},
|
|
"QuotaReleaseReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"feature_key": {
|
|
"type": "string"
|
|
},
|
|
"reservation_id": {
|
|
"type": "string"
|
|
},
|
|
"bucket": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"tenant_id",
|
|
"feature_key",
|
|
"reservation_id",
|
|
"bucket"
|
|
]
|
|
},
|
|
"QuotaReserveReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"reservation_id": {
|
|
"type": "string"
|
|
},
|
|
"available": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"reserved": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"required": [
|
|
"reservation_id",
|
|
"available",
|
|
"reserved"
|
|
]
|
|
},
|
|
"QuotaReserveReq": {
|
|
"type": "object",
|
|
"properties": {
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"feature_key": {
|
|
"type": "string"
|
|
},
|
|
"request_id": {
|
|
"type": "string"
|
|
},
|
|
"amount": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"meta": {
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"type": "string"
|
|
},
|
|
"description": "Optional metadata (model name, trace_id, etc.)"
|
|
},
|
|
"bucket": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"tenant_id",
|
|
"feature_key",
|
|
"request_id",
|
|
"amount",
|
|
"meta",
|
|
"bucket"
|
|
]
|
|
},
|
|
"SubscriptionCleanupWhitelist": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"tenant_id": {
|
|
"type": "string"
|
|
},
|
|
"contact": {
|
|
"type": "string"
|
|
},
|
|
"expired_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"created_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
},
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time"
|
|
}
|
|
},
|
|
"description": "Single whitelist item",
|
|
"required": [
|
|
"id",
|
|
"tenant_id",
|
|
"contact",
|
|
"expired_at",
|
|
"created_at",
|
|
"updated_at"
|
|
]
|
|
},
|
|
"SubscriptionPlanItem": {
|
|
"type": "object",
|
|
"properties": {
|
|
"plan": {
|
|
"enum": [
|
|
"sandbox",
|
|
"professional",
|
|
"team"
|
|
],
|
|
"type": "string"
|
|
},
|
|
"expiration_date": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Subscription plan item",
|
|
"required": [
|
|
"plan",
|
|
"expiration_date"
|
|
]
|
|
},
|
|
"SubscriptionQuota": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
}
|
|
},
|
|
"description": "Generic usage quota (size = current usage, limit = max allowed)",
|
|
"required": [
|
|
"size",
|
|
"limit"
|
|
]
|
|
},
|
|
"VectorSpaceQuota": {
|
|
"type": "object",
|
|
"properties": {
|
|
"size": {
|
|
"type": "number",
|
|
"format": "double"
|
|
},
|
|
"limit": {
|
|
"type": "string",
|
|
"format": "int64"
|
|
},
|
|
"usage_unknown": {
|
|
"nullable": true,
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"description": "Vector space quota (size is double because dataset sizes are fractional MB)",
|
|
"required": [
|
|
"size",
|
|
"limit"
|
|
]
|
|
},
|
|
"VerifyEducationIdentityReply": {
|
|
"type": "object",
|
|
"properties": {
|
|
"token": {
|
|
"type": "string",
|
|
"description": "Verification token to pass to CreateEducationIdentity. Empty when status is `not_eligible`."
|
|
},
|
|
"status": {
|
|
"enum": [
|
|
"eligible",
|
|
"not_eligible"
|
|
],
|
|
"type": "string",
|
|
"description": "`eligible`: the account email matches an education institution domain and `token` is set.\n `not_eligible`: the account email matches no education institution domain and `token` is empty."
|
|
}
|
|
},
|
|
"required": [
|
|
"token",
|
|
"status"
|
|
]
|
|
}
|
|
}
|
|
}
|
|
}
|