syntax = 'proto3'; package gooseai; option go_package = "github.com/stability-ai/api-interfaces/gooseai/dashboard"; enum OrganizationRole { MEMBER = 0; ACCOUNTANT = 1; OWNER = 2; } message OrganizationMember { Organization organization = 1; optional User user = 2; OrganizationRole role = 3; bool is_default = 4; } message OrganizationGrant { double amount_granted = 1; double amount_used = 2; uint64 expires_at = 3; uint64 granted_at = 4; } message OrganizationPaymentInfo { double balance = 1; repeated OrganizationGrant grants = 2; } message OrganizationAutoCharge { bool enabled = 1; string id = 2; uint64 created_at = 3; } message Organization { string id = 1; string name = 2; string description = 3; repeated OrganizationMember members = 4; optional OrganizationPaymentInfo payment_info = 5; optional string stripe_customer_id = 6; optional OrganizationAutoCharge auto_charge = 7; } message APIKey { string key = 1; bool is_secret = 2; uint64 created_at = 3; } message User { string id = 1; optional string auth_id = 2; string profile_picture = 3; string email = 4; repeated OrganizationMember organizations = 5; repeated APIKey api_keys = 7; uint64 created_at = 8; optional bool email_verified = 9; optional bool accepted_latest_tos_version = 10; optional bool accepted_latest_privacy_policy_version = 11; optional bool accepted_any_tos_version = 12; optional bool accepted_any_privacy_policy_version = 13; optional bool training_opt_in = 14; } message CostData { uint32 amount_tokens = 1; double amount_credits = 2; } message UsageMetric { string operation = 1; string engine = 2; CostData input_cost = 3; CostData output_cost = 4; optional string user = 5; uint64 aggregation_timestamp = 6; } message CostTotal { uint32 amount_tokens = 1; double amount_credits = 2; } message TotalMetricsData { CostTotal input_total = 1; CostTotal output_total = 2; } message Metrics { repeated UsageMetric metrics = 1; TotalMetricsData total = 2; } message EmptyRequest {} message GetOrganizationRequest { string id = 1; } message GetMetricsRequest { string organization_id = 1; optional string user_id = 2; uint64 range_from = 3; uint64 range_to = 4; bool include_per_request_metrics = 5; } message APIKeyRequest { bool is_secret = 1; } message APIKeyFindRequest { string id = 1; } message AcceptLegalTermsRequest { optional bool marketing_opt_in = 1; } message AcceptLegalTermsResponse { // Whether this was successful or not bool success = 1; } message UpdateDefaultOrganizationRequest { string organization_id = 1; } message ClientSettings { bytes settings = 1; } message CreateAutoChargeIntentRequest { string organization_id = 1; uint64 monthly_maximum = 2; uint64 minimum_value = 3; uint64 amount_credits = 4; } message CreateChargeRequest { uint64 amount = 1; string organization_id = 2; } message GetChargesRequest { string organization_id = 1; uint64 range_from = 2; uint64 range_to = 3; } message Charge { string id = 1; bool paid = 2; string receipt_link = 3; string payment_link = 4; uint64 created_at = 5; uint64 amount_credits = 6; } message Charges { repeated Charge charges = 1; } message GetAutoChargeRequest { string organization_id = 1; } message AutoChargeIntent { string id = 1; string payment_link = 2; uint64 created_at = 3; uint64 monthly_maximum = 4; uint64 minimum_value = 5; uint64 amount_credits = 6; } message UpdateUserInfoRequest { optional string email = 1; } message UpdateUserPreferencesRequest { optional bool training_opt_in = 1; } message UserPasswordChangeTicket { string ticket = 1; } service DashboardService { // Get info rpc GetMe (EmptyRequest) returns (User); rpc GetOrganization (GetOrganizationRequest) returns (Organization); rpc GetMetrics (GetMetricsRequest) returns (Metrics); // API key management rpc CreateAPIKey (APIKeyRequest) returns (APIKey); rpc DeleteAPIKey (APIKeyFindRequest) returns (APIKey); // Legal and Marketing functions rpc AcceptLegalTerms (AcceptLegalTermsRequest) returns (AcceptLegalTermsResponse); // User settings rpc UpdateDefaultOrganization (UpdateDefaultOrganizationRequest) returns (User); rpc GetClientSettings (EmptyRequest) returns (ClientSettings); rpc SetClientSettings (ClientSettings) returns (ClientSettings); rpc UpdateUserInfo (UpdateUserInfoRequest) returns (User); rpc UpdateUserPreferences (UpdateUserPreferencesRequest) returns (User); rpc CreatePasswordChangeTicket (EmptyRequest) returns (UserPasswordChangeTicket); rpc DeleteAccount (EmptyRequest) returns (User); // Payment functions rpc CreateCharge (CreateChargeRequest) returns (Charge); rpc GetCharges (GetChargesRequest) returns (Charges); rpc CreateAutoChargeIntent (CreateAutoChargeIntentRequest) returns (AutoChargeIntent); rpc UpdateAutoChargeIntent (CreateAutoChargeIntentRequest) returns (AutoChargeIntent); rpc GetAutoChargeIntent (GetAutoChargeRequest) returns (AutoChargeIntent); }