Files
Swarm/DysonNetwork.Shared/Proto/develop.proto
2025-08-25 02:44:44 +08:00

185 lines
4.6 KiB
Protocol Buffer

syntax = "proto3";
package proto;
option csharp_namespace = "DysonNetwork.Shared.Proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
import "account.proto";
import "file.proto";
message CustomAppOauthConfig {
string client_uri = 1;
repeated string redirect_uris = 2;
repeated string post_logout_redirect_uris = 3;
repeated string allowed_scopes = 4;
repeated string allowed_grant_types = 5;
bool require_pkce = 6;
bool allow_offline_access = 7;
}
message CustomAppLinks {
string home_page = 1;
string privacy_policy = 2;
string terms_of_service = 3;
}
enum CustomAppStatus {
CUSTOM_APP_STATUS_UNSPECIFIED = 0;
DEVELOPING = 1;
STAGING = 2;
PRODUCTION = 3;
SUSPENDED = 4;
}
message CustomApp {
string id = 1;
string slug = 2;
string name = 3;
string description = 4;
CustomAppStatus status = 5;
// jsonb columns represented as bytes
CloudFile picture = 6;
CloudFile background = 7;
VerificationMark verification = 8;
CustomAppLinks links = 9;
CustomAppOauthConfig oauth_config = 13;
string project_id = 10;
google.protobuf.Timestamp created_at = 11;
google.protobuf.Timestamp updated_at = 12;
}
message CustomAppSecret {
string id = 1;
string secret = 2;
string description = 3;
google.protobuf.Timestamp expired_at = 4;
bool is_oidc = 5;
string app_id = 6;
google.protobuf.Timestamp created_at = 7;
google.protobuf.Timestamp updated_at = 8;
}
message GetCustomAppRequest {
oneof Query {
string id = 1;
string slug = 2;
}
}
message GetCustomAppResponse {
CustomApp app = 1;
}
message CheckCustomAppSecretRequest {
oneof SecretIdentifier {
string secret_id = 1;
string app_id = 2;
}
string secret = 3;
optional bool is_oidc = 4;
}
message CheckCustomAppSecretResponse {
bool valid = 1;
}
service CustomAppService {
rpc GetCustomApp(GetCustomAppRequest) returns (GetCustomAppResponse);
rpc CheckCustomAppSecret(CheckCustomAppSecretRequest) returns (CheckCustomAppSecretResponse);
}
// BotAccount represents a bot account in the system
// It extends the base Account with bot-specific fields
message BotAccount {
// Base account information
Account account = 1;
// Bot-specific information
string slug = 2; // Unique identifier for the bot
bool is_active = 3; // Whether the bot is currently active
string automated_id = 5; // The bot ID
// Timestamps
google.protobuf.Timestamp created_at = 6;
google.protobuf.Timestamp updated_at = 7;
}
// Request/Response messages for BotAccount operations
message CreateBotAccountRequest {
Account account = 1;
string automated_id = 2;
optional string picture_id = 8;
optional string background_id = 9;
}
message CreateBotAccountResponse {
BotAccount bot = 1; // The created bot account
}
message UpdateBotAccountRequest {
string automated_id = 1; // ID of the bot account to update
Account account = 2; // Updated account information
optional string picture_id = 8;
optional string background_id = 9;
}
message UpdateBotAccountResponse {
BotAccount bot = 1; // The updated bot account
}
message DeleteBotAccountRequest {
string automated_id = 1; // ID of the bot account to delete
bool force = 2; // Whether to force delete (bypass soft delete)
}
message DeleteBotAccountResponse {
bool success = 1; // Whether the deletion was successful
}
message ApiKey {
string id = 1;
string label = 2;
string account_id = 3;
string session_id = 4;
google.protobuf.StringValue key = 5;
google.protobuf.Timestamp created_at = 6;
google.protobuf.Timestamp updated_at = 7;
}
message GetApiKeyRequest {
string id = 1;
}
message ListApiKeyRequest {
string automated_id = 1;
}
message GetApiKeyBatchResponse {
repeated ApiKey data = 1;
}
message DeleteApiKeyResponse {
bool success = 1;
}
// This service should be implemented by the Pass service to handle the creation, update, and deletion of bot accounts
service BotAccountReceiverService {
rpc CreateBotAccount(CreateBotAccountRequest) returns (CreateBotAccountResponse);
rpc UpdateBotAccount(UpdateBotAccountRequest) returns (UpdateBotAccountResponse);
rpc DeleteBotAccount(DeleteBotAccountRequest) returns (DeleteBotAccountResponse);
rpc GetApiKey(GetApiKeyRequest) returns (ApiKey);
rpc ListApiKey(ListApiKeyRequest) returns (GetApiKeyBatchResponse);
rpc CreateApiKey(ApiKey) returns (ApiKey);
rpc UpdateApiKey(ApiKey) returns (ApiKey);
rpc RotateApiKey(GetApiKeyRequest) returns (ApiKey);
rpc DeleteApiKey(GetApiKeyRequest) returns (DeleteApiKeyResponse);
}