186 lines
		
	
	
		
			4.6 KiB
		
	
	
	
		
			Protocol Buffer
		
	
	
	
	
	
			
		
		
	
	
			186 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;
 | |
|   google.protobuf.StringValue picture_id = 8;
 | |
|   google.protobuf.StringValue 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);
 | |
| }
 | |
|   
 |