#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Date {
#[prost(uint32, tag = "1")]
pub year: u32,
#[prost(uint32, tag = "2")]
pub month: u32,
#[prost(uint32, tag = "3")]
pub day: u32,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Address {
#[prost(string, tag = "1")]
pub city: ::prost::alloc::string::String,
#[prost(string, tag = "2")]
pub region: ::prost::alloc::string::String,
#[prost(string, tag = "3")]
pub country_code: ::prost::alloc::string::String,
#[prost(string, tag = "4")]
pub postal_code: ::prost::alloc::string::String,
#[prost(string, tag = "5")]
pub address_line_1: ::prost::alloc::string::String,
#[prost(string, tag = "6")]
pub address_line_2: ::prost::alloc::string::String,
#[prost(string, tag = "7")]
pub address_line_3: ::prost::alloc::string::String,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct BillingConfig {
#[prost(enumeration = "BillingType", tag = "1")]
pub billing_type: i32,
#[deprecated]
#[prost(enumeration = "BillingChannel", tag = "2")]
pub channel: i32,
#[deprecated]
#[prost(enumeration = "ExternalBillingProvider", tag = "3")]
pub external_billing_provider: i32,
#[deprecated]
#[prost(message, optional, tag = "4")]
pub address: ::core::option::Option<Address>,
#[deprecated]
#[prost(message, optional, tag = "5")]
pub contract_start_date: ::core::option::Option<Date>,
#[deprecated]
#[prost(message, optional, tag = "6")]
pub contract_end_date: ::core::option::Option<Date>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum BillingType {
Unspecified = 0,
Invoiced = 1,
CreditCard = 2,
Partner = 3,
}
impl BillingType {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "BILLING_TYPE_UNSPECIFIED",
Self::Invoiced => "BILLING_TYPE_INVOICED",
Self::CreditCard => "BILLING_TYPE_CREDIT_CARD",
Self::Partner => "BILLING_TYPE_PARTNER",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BILLING_TYPE_UNSPECIFIED" => Some(Self::Unspecified),
"BILLING_TYPE_INVOICED" => Some(Self::Invoiced),
"BILLING_TYPE_CREDIT_CARD" => Some(Self::CreditCard),
"BILLING_TYPE_PARTNER" => Some(Self::Partner),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum BillingChannel {
Unspecified = 0,
SelfServe = 1,
Sales = 2,
Partner = 3,
}
impl BillingChannel {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "BILLING_CHANNEL_UNSPECIFIED",
Self::SelfServe => "BILLING_CHANNEL_SELF_SERVE",
Self::Sales => "BILLING_CHANNEL_SALES",
Self::Partner => "BILLING_CHANNEL_PARTNER",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"BILLING_CHANNEL_UNSPECIFIED" => Some(Self::Unspecified),
"BILLING_CHANNEL_SELF_SERVE" => Some(Self::SelfServe),
"BILLING_CHANNEL_SALES" => Some(Self::Sales),
"BILLING_CHANNEL_PARTNER" => Some(Self::Partner),
_ => None,
}
}
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ExternalBillingProvider {
Unspecified = 0,
Stripe = 1,
Vercel = 2,
}
impl ExternalBillingProvider {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "EXTERNAL_BILLING_PROVIDER_UNSPECIFIED",
Self::Stripe => "EXTERNAL_BILLING_PROVIDER_STRIPE",
Self::Vercel => "EXTERNAL_BILLING_PROVIDER_VERCEL",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"EXTERNAL_BILLING_PROVIDER_UNSPECIFIED" => Some(Self::Unspecified),
"EXTERNAL_BILLING_PROVIDER_STRIPE" => Some(Self::Stripe),
"EXTERNAL_BILLING_PROVIDER_VERCEL" => Some(Self::Vercel),
_ => None,
}
}
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct OptionValue {
#[prost(oneof = "option_value::Value", tags = "1, 2, 3")]
pub value: ::core::option::Option<option_value::Value>,
}
pub mod option_value {
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum Value {
#[prost(string, tag = "1")]
StringValue(::prost::alloc::string::String),
#[prost(int64, tag = "2")]
IntValue(i64),
#[prost(bool, tag = "3")]
BoolValue(bool),
}
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct FeatureOption {
#[prost(string, tag = "1")]
pub key: ::prost::alloc::string::String,
#[prost(bool, tag = "2")]
pub enabled: bool,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct FeatureOptions {
#[prost(message, repeated, tag = "1")]
pub options: ::prost::alloc::vec::Vec<FeatureOption>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MetadataOption {
#[prost(string, tag = "1")]
pub key: ::prost::alloc::string::String,
#[prost(message, optional, tag = "2")]
pub value: ::core::option::Option<OptionValue>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MetadataOptions {
#[prost(message, repeated, tag = "1")]
pub options: ::prost::alloc::vec::Vec<MetadataOption>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ContractMetadata {
#[prost(uint64, tag = "1")]
pub id: u64,
#[prost(uint64, tag = "2")]
pub organization_id: u64,
#[prost(string, tag = "3")]
pub ruleset_version: ::prost::alloc::string::String,
#[prost(message, optional, tag = "6")]
pub custom_options: ::core::option::Option<MetadataOptions>,
#[prost(message, optional, tag = "7")]
pub billing_features: ::core::option::Option<super::super::super::FeatureOptions>,
#[prost(string, tag = "9")]
pub package_uid: ::prost::alloc::string::String,
#[deprecated]
#[prost(uint64, tag = "8")]
pub package_id: u64,
#[deprecated]
#[prost(message, optional, tag = "4")]
pub package_metadata: ::core::option::Option<MetadataOptions>,
#[deprecated]
#[prost(message, optional, tag = "5")]
pub features: ::core::option::Option<FeatureOptions>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum Sku {
Unspecified = 0,
Errors = 1,
Spans = 2,
Replays = 3,
PerformanceUnits = 4,
Cron = 5,
Uptime = 6,
Attachments = 7,
Profiling = 8,
ProfilingUi = 9,
Logs = 10,
Seer = 11,
SizeAnalysis = 12,
BuildDistribution = 13,
Autofix = 14,
Scanner = 15,
}
impl Sku {
pub fn as_str_name(&self) -> &'static str {
match self {
Self::Unspecified => "SKU_UNSPECIFIED",
Self::Errors => "SKU_ERRORS",
Self::Spans => "SKU_SPANS",
Self::Replays => "SKU_REPLAYS",
Self::PerformanceUnits => "SKU_PERFORMANCE_UNITS",
Self::Cron => "SKU_CRON",
Self::Uptime => "SKU_UPTIME",
Self::Attachments => "SKU_ATTACHMENTS",
Self::Profiling => "SKU_PROFILING",
Self::ProfilingUi => "SKU_PROFILING_UI",
Self::Logs => "SKU_LOGS",
Self::Seer => "SKU_SEER",
Self::SizeAnalysis => "SKU_SIZE_ANALYSIS",
Self::BuildDistribution => "SKU_BUILD_DISTRIBUTION",
Self::Autofix => "SKU_AUTOFIX",
Self::Scanner => "SKU_SCANNER",
}
}
pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
match value {
"SKU_UNSPECIFIED" => Some(Self::Unspecified),
"SKU_ERRORS" => Some(Self::Errors),
"SKU_SPANS" => Some(Self::Spans),
"SKU_REPLAYS" => Some(Self::Replays),
"SKU_PERFORMANCE_UNITS" => Some(Self::PerformanceUnits),
"SKU_CRON" => Some(Self::Cron),
"SKU_UPTIME" => Some(Self::Uptime),
"SKU_ATTACHMENTS" => Some(Self::Attachments),
"SKU_PROFILING" => Some(Self::Profiling),
"SKU_PROFILING_UI" => Some(Self::ProfilingUi),
"SKU_LOGS" => Some(Self::Logs),
"SKU_SEER" => Some(Self::Seer),
"SKU_SIZE_ANALYSIS" => Some(Self::SizeAnalysis),
"SKU_BUILD_DISTRIBUTION" => Some(Self::BuildDistribution),
"SKU_AUTOFIX" => Some(Self::Autofix),
"SKU_SCANNER" => Some(Self::Scanner),
_ => None,
}
}
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PricingTier {
#[prost(int64, tag = "1")]
pub start: i64,
#[prost(int64, tag = "2")]
pub end: i64,
#[prost(int64, tag = "3")]
pub rate_per_unit_cpe: i64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct TieredPricingRate {
#[prost(message, repeated, tag = "1")]
pub tiers: ::prost::alloc::vec::Vec<PricingTier>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SkuConfig {
#[deprecated]
#[prost(enumeration = "Sku", tag = "1")]
pub sku: i32,
#[prost(uint64, tag = "2")]
pub base_price_cents: u64,
#[prost(uint64, optional, tag = "3")]
pub payg_budget_cents: ::core::option::Option<u64>,
#[deprecated]
#[prost(uint64, tag = "4")]
pub reserved_volume: u64,
#[prost(message, optional, tag = "5")]
pub payg_rate: ::core::option::Option<TieredPricingRate>,
#[prost(message, optional, tag = "6")]
pub reserved_rate: ::core::option::Option<TieredPricingRate>,
#[prost(enumeration = "super::super::super::Sku", tag = "9")]
pub billing_sku: i32,
#[prost(oneof = "sku_config::ReservedUnits", tags = "7, 8")]
pub reserved_units: ::core::option::Option<sku_config::ReservedUnits>,
}
pub mod sku_config {
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum ReservedUnits {
#[prost(bool, tag = "7")]
IsUnlimited(bool),
#[prost(uint64, tag = "8")]
NumReservedUnits(u64),
}
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SharedSkuBudget {
#[deprecated]
#[prost(enumeration = "Sku", repeated, packed = "false", tag = "1")]
pub skus: ::prost::alloc::vec::Vec<i32>,
#[prost(uint64, tag = "2")]
pub reserved_budget_cents: u64,
#[prost(uint64, tag = "3")]
pub payg_budget_cents: u64,
#[prost(enumeration = "super::super::super::Sku", repeated, tag = "4")]
pub billing_skus: ::prost::alloc::vec::Vec<i32>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PaygBudget {
#[prost(uint64, tag = "1")]
pub budget_cents: u64,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct Reservation {
#[prost(uint64, tag = "1")]
pub reserved_price_cents: u64,
#[prost(oneof = "reservation::ReservedUnits", tags = "2, 3")]
pub reserved_units: ::core::option::Option<reservation::ReservedUnits>,
}
pub mod reservation {
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum ReservedUnits {
#[prost(bool, tag = "2")]
IsUnlimited(bool),
#[prost(uint64, tag = "3")]
NumReservedUnits(u64),
}
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct LineItemUids {
#[prost(string, repeated, tag = "1")]
pub uids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UserConfig {
#[prost(message, optional, tag = "1")]
pub payg_budget: ::core::option::Option<PaygBudget>,
#[prost(message, optional, tag = "2")]
pub reservation: ::core::option::Option<Reservation>,
#[prost(oneof = "user_config::LineItems", tags = "3, 4")]
pub line_items: ::core::option::Option<user_config::LineItems>,
}
pub mod user_config {
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Oneof)]
pub enum LineItems {
#[prost(message, tag = "3")]
SpecificItems(super::LineItemUids),
#[prost(message, tag = "4")]
AllItems(()),
}
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct PricingConfig {
#[prost(message, optional, tag = "3")]
pub billing_period_start_date: ::core::option::Option<Date>,
#[prost(message, optional, tag = "4")]
pub billing_period_end_date: ::core::option::Option<Date>,
#[prost(message, optional, tag = "7")]
pub ondemand_period_start_date: ::core::option::Option<Date>,
#[prost(message, optional, tag = "8")]
pub ondemand_period_end_date: ::core::option::Option<Date>,
#[prost(message, optional, tag = "9")]
pub usage_watermark_ts: ::core::option::Option<::prost_types::Timestamp>,
#[prost(message, repeated, tag = "10")]
pub user_config: ::prost::alloc::vec::Vec<UserConfig>,
#[deprecated]
#[prost(uint64, tag = "6")]
pub base_price_cents: u64,
#[deprecated]
#[prost(message, repeated, tag = "1")]
pub sku_configs: ::prost::alloc::vec::Vec<SkuConfig>,
#[deprecated]
#[prost(message, repeated, tag = "2")]
pub shared_sku_budgets: ::prost::alloc::vec::Vec<SharedSkuBudget>,
#[deprecated]
#[prost(uint64, tag = "5")]
pub max_spend_cents: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Contract {
#[prost(message, optional, tag = "1")]
pub metadata: ::core::option::Option<ContractMetadata>,
#[prost(message, optional, tag = "2")]
pub billing_config: ::core::option::Option<BillingConfig>,
#[prost(message, optional, tag = "3")]
pub pricing_config: ::core::option::Option<PricingConfig>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct InvoiceLineItem {
#[prost(int64, tag = "1")]
pub amount_cents: i64,
#[prost(string, optional, tag = "2")]
pub description: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Invoice {
#[prost(uint64, tag = "1")]
pub invoice_id: u64,
#[prost(message, repeated, tag = "2")]
pub line_items: ::prost::alloc::vec::Vec<InvoiceLineItem>,
#[prost(uint64, tag = "3")]
pub amount_billed: u64,
#[prost(uint64, tag = "4")]
pub organization_id: u64,
#[prost(bool, tag = "5")]
pub paid: bool,
#[prost(message, optional, tag = "6")]
pub date_added: ::core::option::Option<::prost_types::Timestamp>,
#[prost(string, tag = "7")]
pub guid: ::prost::alloc::string::String,
#[prost(bool, tag = "8")]
pub needs_charged: bool,
#[prost(message, optional, tag = "9")]
pub address: ::core::option::Option<super::super::super::common::v1::Address>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CreateContractRequest {
#[prost(uint64, tag = "1")]
pub organization_id: u64,
#[prost(string, tag = "2")]
pub package_uid: ::prost::alloc::string::String,
#[prost(message, repeated, tag = "3")]
pub user_configs: ::prost::alloc::vec::Vec<UserConfig>,
#[prost(message, repeated, tag = "4")]
pub line_items: ::prost::alloc::vec::Vec<InvoiceLineItem>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CreateContractResponse {
#[prost(uint64, tag = "1")]
pub id: u64,
#[prost(uint64, tag = "2")]
pub invoice_id: u64,
#[prost(string, tag = "3")]
pub invoice_guid: ::prost::alloc::string::String,
#[prost(bool, tag = "4")]
pub needs_charge: bool,
#[prost(uint64, tag = "5")]
pub amount_billed: u64,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetContractRequest {
#[prost(uint64, tag = "1")]
pub organization_id: u64,
#[prost(message, optional, tag = "2")]
pub date: ::core::option::Option<super::super::super::Date>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetSpecificContractRequest {
#[prost(uint64, tag = "1")]
pub contract_id: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetContractResponse {
#[prost(message, optional, tag = "1")]
pub contract: ::core::option::Option<Contract>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetInvoiceRequest {
#[prost(uint64, tag = "1")]
pub invoice_id: u64,
#[prost(string, tag = "2")]
pub invoice_guid: ::prost::alloc::string::String,
#[prost(uint64, tag = "3")]
pub organization_id: u64,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetInvoiceResponse {
#[prost(message, optional, tag = "1")]
pub invoice: ::core::option::Option<Invoice>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetUnchargedInvoicesRequest {
#[prost(message, optional, tag = "1")]
pub current_ts: ::core::option::Option<::prost_types::Timestamp>,
#[prost(uint32, tag = "2")]
pub max_items: u32,
#[prost(uint32, optional, tag = "3")]
pub offset: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetUnchargedInvoicesResponse {
#[prost(uint64, repeated, tag = "1")]
pub invoice_ids: ::prost::alloc::vec::Vec<u64>,
#[prost(bool, tag = "2")]
pub truncated: bool,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GetUninvoicedContractsRequest {
#[prost(message, optional, tag = "1")]
pub current_ts: ::core::option::Option<::prost_types::Timestamp>,
#[prost(uint32, tag = "2")]
pub max_items: u32,
#[prost(uint32, optional, tag = "3")]
pub offset: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GetUninvoicedContractsResponse {
#[deprecated]
#[prost(message, repeated, tag = "1")]
pub contracts: ::prost::alloc::vec::Vec<Contract>,
#[prost(bool, tag = "2")]
pub truncated: bool,
#[prost(uint64, repeated, tag = "3")]
pub contract_ids: ::prost::alloc::vec::Vec<u64>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ListInvoicesRequest {
#[prost(uint64, tag = "1")]
pub organization_id: u64,
#[prost(uint32, tag = "2")]
pub max_items: u32,
#[prost(uint32, optional, tag = "3")]
pub offset: ::core::option::Option<u32>,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ListInvoicesResponse {
#[prost(message, repeated, tag = "1")]
pub invoices: ::prost::alloc::vec::Vec<Invoice>,
#[prost(bool, tag = "2")]
pub truncated: bool,
#[prost(uint32, optional, tag = "3")]
pub next_offset: ::core::option::Option<u32>,
#[prost(uint32, tag = "4")]
pub total: u32,
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RolloverContractRequest {
#[prost(uint64, tag = "1")]
pub contract_id: u64,
#[prost(message, optional, tag = "2")]
pub last_usage_ts: ::core::option::Option<::prost_types::Timestamp>,
#[prost(message, repeated, tag = "3")]
pub line_items: ::prost::alloc::vec::Vec<InvoiceLineItem>,
#[prost(message, optional, tag = "4")]
pub address: ::core::option::Option<super::super::super::common::v1::Address>,
}
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RolloverContractResponse {
#[prost(uint64, tag = "1")]
pub invoice_id: u64,
#[prost(bool, tag = "2")]
pub needs_charge: bool,
#[prost(uint64, tag = "3")]
pub amount_billed: u64,
}