Class: Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer
- Inherits:
-
Object
- Object
- Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer
- Extended by:
- Protobuf::MessageExts::ClassMethods
- Includes:
- Protobuf::MessageExts
- Defined in:
- proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb
Overview
Configurations for the offer that is associated with a single product.
Defined Under Namespace
Classes: ContractValue, CustomIntervalPrice, Feature, Installment, PriceModel, RevenueShare, StandardIntervalPrice
Instance Attribute Summary collapse
-
#amended_private_offer ⇒ ::String
Optional.
-
#amended_standard_offer ⇒ ::String
Optional.
-
#base_standard_offer ⇒ ::String
Optional.
-
#contract_value ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::ContractValue
readonly
Output only.
-
#custom_interval_price ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::CustomIntervalPrice
Optional.
-
#effective_installment_timeline ⇒ ::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>
readonly
Output only.
-
#features ⇒ ::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Feature>
Optional.
-
#reseller_private_offer_plan_id ⇒ ::String
readonly
Output only.
-
#revenue_share ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::RevenueShare
readonly
Output only.
-
#service_level ⇒ ::String
readonly
Output only.
-
#standard_interval_price ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice
Optional.
Instance Attribute Details
#amended_private_offer ⇒ ::String
Returns Optional. An existing private offer that will be superseded by this offer. Unless the private offer is for a product type that supports multiple active orders, an amendment private offer must be transacted if and only if the destination customer billing account already contains an active order for the same product. The offer to be superseded must be the offer associated with an active order.
Amendments generally fall into one of two scenarios:
- Active Order / Ended Offer: The term of the amended offer has ended but it is still associated with an active order. The new offer must amend the ended private offer.
- Active Order / Active Offer: The term of the amended offer is still active and the associated order is active. Similar to above, the new offer must amend the currently active offer (unless "multiple active orders" are supported).
If this is set, then the base_standard_offer parent service must
match the parent service of the base_standard_offer in the
amended_private_offer.
Active Term Restrictions: If the term of the amended private offer has NOT ended, then the following compatibility rules apply:
- Price Model Compatibility:
- Flat Fee (with or without usage) offers can amend Flat Fee offers.
- Usage-only or CUD offers can amend usage-only offers.
- Commitment-based offers must amend offers of the same price model subtype (e.g., "additional usage at list price" vs "all usage discounted").
- Billing Frequency Compatibility: Determined by
standard_intervalorcustom_interval_price.- If the amended offer has a custom billing frequency, the new offer must also have a custom frequency.
- If the amended offer has a standard frequency (Monthly, Quarterly, or Yearly), the new offer must maintain the same frequency or transition to a custom frequency.
- Switching between different standard frequencies (e.g., Monthly to Quarterly) is not supported.
- For Monthly frequency, switching between
MONTHLY_PRORATEDandMONTHLY_NOT_PRORATEDis supported, unless the offer'sterm.end_policyisMATCH_AMENDED_OFFER. - For usage-only offers, there are no billing frequency restrictions.
Other criteria for offer amendment are detailed elsewhere.
Note: The following fields are mutually exclusive: amended_private_offer, amended_standard_offer. If a field in that set is populated, all other fields in the set will automatically be cleared.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#amended_standard_offer ⇒ ::String
Returns Optional. An existing standard offer that will be superseded by this offer. An amendment private offer must be transacted if the destination customer billing account already contains an active order for the same product, and otherwise cannot be transacted. The offer to be superseded must be the offer associated with the active order.
If this is set, then the base_standard_offer must contain the same
parent service as the parent service of the amended_standard_offer.
The price model of this offer must be compatible with the price model
of the amended_standard_offer:
- Flat Fee, or Flat Fee with usage offers can amend Flat Fee or Flat Fee with usage standard offers.
- Usage-only offers, or CUD offers can amend usage-only standard offers.
Other criteria for offer amendment are detailed elsewhere.
Note: The following fields are mutually exclusive: amended_standard_offer, amended_private_offer. If a field in that set is populated, all other fields in the set will automatically be cleared.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#base_standard_offer ⇒ ::String
Returns Optional. The StandardOffer this PrivateOffer is based on. Must be in the same project as the private offer, and must be effective at the time of publishing. Must be present to publish the offer.
Format: projects/{project}/locations/{location}/services/{service}/standardOffers/{standard_offer}.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#contract_value ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::ContractValue (readonly)
Returns Output only. Contract value of the offer.
Not included for PRIVATE_OFFER_VIEW_BASIC.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#custom_interval_price ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::CustomIntervalPrice
Returns Optional. Price configurations for offers with custom intervals. Custom interval corresponds to "custom billing frequency", see https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule. A price must be set when publishing the offer.
Note: The following fields are mutually exclusive: custom_interval_price, standard_interval_price. If a field in that set is populated, all other fields in the set will automatically be cleared.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#effective_installment_timeline ⇒ ::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment> (readonly)
Returns Output only. The effective installment timeline of the offer.
Not included for PRIVATE_OFFER_VIEW_BASIC.
Included for PRIVATE_OFFER_VIEW_FULL if all necessary information is
available to generate the timeline, and if the offer has
'standard_interval_price' of 'MONTHLY_PRORATED', 'MONTHLY_NOT_PRORATED',
'QUARTERLY_NOT_PRORATED', or 'YEARLY_NOT_PRORATED'.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#features ⇒ ::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Feature>
Returns Optional. The custom product features to display for this offer.
Feature display_name values must be unique to publish the offer.
The set of features specified here should generally include all features
included in the base service level, with optionally customized values,
but is not required to match exactly and may include additional features.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#reseller_private_offer_plan_id ⇒ ::String (readonly)
Returns Output only. Present for offers created by a reseller from a reseller
private offer plan (RPOP). When set, contains the ID of the originating
RPOP. Not included for PRIVATE_OFFER_VIEW_BASIC.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#revenue_share ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::RevenueShare (readonly)
Returns Output only. Revenue share information for this Private Offer.
Not included for PRIVATE_OFFER_VIEW_BASIC.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#service_level ⇒ ::String (readonly)
Returns Output only. The service level (also known as the 'plan') of the base standard offer. The value is populated at publish time from the base standard offer.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |
#standard_interval_price ⇒ ::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice
Returns Optional. Price configurations for offers with standard intervals. A price must be set when publishing the offer.
Note: The following fields are mutually exclusive: standard_interval_price, custom_interval_price. If a field in that set is populated, all other fields in the set will automatically be cleared.
554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 |
# File 'proto_docs/google/cloud/commerceproducer/v1beta/private_offer.rb', line 554 class SingleProductOffer include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # Additional details used to describe customization of the service level. # # Features are used to distinguish service levels of the same product. # When a product has a single service level, all details can be contained # in the product documentation. When a product has multiple service levels, # each service level can be assigned a distinct set of features to # distinguish the key differences between the service levels. # # In addition to customizing pricing and other transaction details, a # private offer may include customization of partner-managed product # behavior. When this is the case, the details of the custom behavior are # described using features. # @!attribute [rw] display_name # @return [::String] # Optional. Human readable display text characterizing the feature. # Should be sufficiently detailed to identify the feature, allowing # features to be correlated across separate offers and service levels. # Must be non-empty to publish the offer. # The maximum allowed length is 128 characters. # Allows characters from the following Unicode Property Classes: # Letters, Numbers, Punctuation, Symbols, and Separators # @!attribute [rw] value # @return [::String] # Optional. Human readable display text reflecting the value of the # feature. Used for variable features not captured by the display_name # alone. The maximum allowed length is 3000 characters. Allows characters # from the following Unicode Property Classes: Letters, Numbers, # Punctuation, Symbols, and Separators class Feature include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price model of the private offer. # # Private offers are referred to as having different kinds of price models # based on the combination of fields set in the price model. The following # terminology is used in documentation and other reference material. # # * Usage-based: the price model does not set `flat_fee` # * Usage-only: the price model sets only `usage` # * CUD (committed use discount): the price model sets `commitment` # * Commitment discount with additional usage at list price: # The price model sets `commitment` and not `usage`. # * Commitment with all usage discounted: The price model sets # `commitment` and `usage`. # * Flat fee: the price model sets only `flat_fee` # * Flat fee with usage: the price model sets `flat_fee` and `usage` # # See # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-pricing-model#CUD # for the price models. # @!attribute [rw] flat_fee # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::FlatFee] # Optional. The price configurations for the flat fee subscription. # Must be unset when the base standard offer's price model does not # include subscription SKUs. # # Note: The following fields are mutually exclusive: `flat_fee`, `commitment`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] commitment # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Commitment] # Optional. The price configurations for the commitment based # subscription. Must be unset when the base standard offer's price # model includes subscription SKUs. # # Note: The following fields are mutually exclusive: `commitment`, `flat_fee`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] usage # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::Usage] # Optional. The price configurations for the usage part. # If this field is set, the `Commitment.discount_percent` must be unset. # A private offer can apply a discount to all usage or to a usage # commitment, but not both. # Must be unset when the base standard offer's price model includes no # usage SKUs. class PriceModel include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The discount for a specific SKU. # @!attribute [rw] sku # @return [::String] # Optional. The name of a partner SKU from this API. # # Must refer to a SKU in the price model of the base standard offer. # Inclusion in the base price model can occur either directly or # indirectly via inclusion in an included SkuGroup. # # Currently, standard offer price models include only partner SKUs # in the same project as the standard offer. This may change. # # Format: # projects/\\{project}/locations/\\{location}/services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `sku`, `cloud_billing_sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] cloud_billing_sku # @return [::String] # Optional. The name of a Google SKU from the Cloud Billing API. # # Used for partner products sold by Google, such as Premium Operating # System Images sold for use in Compute Engine. This is not common. # SKUs of this type are not present on this API and can instead be # found on the Cloud Billing API or at https://cloud.google.com/skus. # # Must refer to a SKU in the price model of the base standard offer. # Google SKUs are always referenced in standard offers via SkuGroups. # # Format: services/\\{service}/skus/\\{sku} # # Note: The following fields are mutually exclusive: `cloud_billing_sku`, `sku`. If a field in that set is populated, all other fields in the set will automatically be cleared. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent for the SKU. # For example, `10` means a discount of 10%. If the original SKU # price is $100/hour then the discounted price will be $90/hour. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", # and "". # Must be present to publish the offer. class SkuDiscount include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price for the usage SKUs. # @!attribute [rw] default_discount_percent # @return [::Google::Type::Decimal] # Optional. The default discount percent for usage SKUs. # An unset default discount percent is equivalent to 0 (no discount). # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # @!attribute [rw] sku_discounts # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel::SkuDiscount>] # Optional. The discounts for the specific SKUs that override the # `default_discount_percent`. class Usage include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the flat fee subscriptions. # @!attribute [rw] flat_fee_override # @return [::Google::Type::Money] # Optional. Flat fee overriding the default flat fee in the base # standard offer. Value cannot be negative. The currency must be "USD" # and precision is limited to cents. Must be present to publish the # offer, if the parent message is set. The maximum allowed value is # 1,000,000,000 USD. class FlatFee include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The price configurations for the commitment based subscriptions. # @!attribute [rw] commitment_amount # @return [::Google::Type::Money] # Optional. The commitment balance that the customer will receive. # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # Must be present to publish the offer, if the parent message is set. # The maximum allowed value is 1,000,000,000 USD. # # If the current offer amends a private offer where the term has not # ended, and if the field # `single_product_offer.standard_interval_price.price_model.commitment.commitment_amount` # is set on both the current offer and the amended private offer, then # the commitment amount must be equal or higher on the current offer, # compared to the amended private offer. # @!attribute [rw] discount_percent # @return [::Google::Type::Decimal] # Optional. The discount percent on `commitment_amount`. # # For example, `10` means a discount of 10%. If the original # `commitment_amount` is $100 then the discounted amount will be $90. # The customer is charged $90 and receives $100 in credits. # # All reported usage will be charged at the standard price. # If this field is set, the `price_model.usage` must be unset. A # private offer can apply a discount to all usage or to a usage # commitment, but not both. # # Must be between 0 and 100 inclusive, with precision up to 2 decimal # places. If this field is set, then the allowed pattern for 'value' # is `^([0-9]{1,2}(\\.\\d{1,2})?|100(\\.0{1,2})?)$`. # Examples of valid values: "0", "100.0", "12.34", "40.0". # Example of invalid values: ".3", "-1", "100.1", "12.345", "+12", "". # # Must be present to publish the offer. # @!attribute [rw] additional_credit # @return [::Google::Type::Money] # Optional. Additional credit granted to the customer. # Additional credits are only supported for custom interval offers. # Equivalent behavior can be achieved for standard interval offers by # varying the `commitment_amount` and `discount_percent`. # # Value cannot be negative. # The currency must be "USD" and precision is limited to cents. # The maximum allowed value is 1,000,000 USD. # @!attribute [rw] discard_previous_credit_balance # @return [::Boolean] # Optional. Whether to discard the previous credit balance when the # associated installment starts. If not set, the previous credit # balance will be rolled over to the current installment. # # If there are no previous installments, then the value of this field # will not matter - since it has no effect when no credits exist. class Commitment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end # Price configurations for offers with standard intervals. # @!attribute [rw] standard_interval # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::StandardIntervalPrice::StandardInterval] # Optional. The standard interval of the offer. # Must be present to publish unless the price model is usage-only. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the offer. # Must be present to publish the offer. class StandardIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods # The options for offers with standard intervals. module StandardInterval # The private offer does not have an interval. # If this is set, then the offer is "usage-only". # Field `term.duration_months` must be positive. STANDARD_INTERVAL_UNSPECIFIED = 0 # The schedule of the monthly postpay offers. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # No longer supported as of May 2024. Cannot be used to publish # new offers. MONTHLY_POSTPAY = 1 # Monthly installments with proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/01, at the prorated price for April. # # # 2: from 05/01 to 06/01, at the full monthly price for May. # # # 3: from 06/01 to 07/01, at the full monthly price for June. # # # 4: from 07/01 to 07/15, at the prorated price for July. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_PRORATED = 2 # Monthly installments without proration. # This type of offer has "Monthly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 04/15, and the offer duration is # 3 months, the following installments will be created: # # 1: from 04/15 to 05/15, at the full monthly price. # # # 2: from 05/15 to 06/15, at the full monthly price. # # # 3: from 06/15 to 07/15, at the full monthly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. MONTHLY_NOT_PRORATED = 3 # Quarterly installments which are not prorated. # This type of offer has "Quarterly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15, and the offer duration is # 3 quarters, the following installments will be created: # # 1: from 01/15 to 04/15, at the full quarterly price. # # # 2: from 04/15 to 07/15, at the full quarterly price. # # # 3: from 07/15 to 10/15, at the full quarterly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. QUARTERLY_NOT_PRORATED = 4 # Yearly installments which are not prorated. # This type of offer has "Yearly" billing frequency (see # https://docs.cloud.google.com/marketplace/docs/partners/offers/select-payment-schedule). # For example, if the offer starts on 01/15/2025, and the offer # duration is 3 years, the following installments will be created: # # 1: from 01/15/2025 to 01/15/2026, at the full yearly price. # # # 2: from 01/15/2026 to 01/15/2027, at the full yearly price. # # # 3: from 01/15/2027 to 01/15/2028, at the full yearly price. # # All dates represent the start of that day in the America/Los_Angeles # time zone. # # If this is set: # # * The `PriceModel.subscription` oneof must be set. # * Field `term.duration_months` must be positive. YEARLY_NOT_PRORATED = 5 end end # An installment of the offer. # @!attribute [rw] start_time # @return [::Google::Type::DateTime] # Optional. The start time of the installment. # Each installment must have a unique start time with one exception: # When the `term.start_policy` of the offer's term is `IMMEDIATE`, # the `start_time` of the first installment must be unset. # The actual start time is not recorded in the offer and instead is # determined by the time the resulting order became active. # # When the `term.start_policy` of the offer's term is # `SCHEDULED_START_TIME`, then the first installment's `start_time` must # match `term.scheduled_start_time`. # # If the `term.end_policy` of the offer's term is `SCHEDULED_END_TIME`, # then installment `start_time` must be before `term.scheduled_end_time`. # If it's `AFTER_DURATION`, then installment `start_time` must be before # the time calculated by adding the `term.duration_months` to # the start time of the offer. # # The `start_time` of the installments cannot be before the # `accept_deadline_time` of the offer. # # Installment start times must be in strictly increasing chronological # order. # @!attribute [rw] price_model # @return [::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::PriceModel] # Optional. The price model of the installment. # All installments must have the same form of price model. class Installment include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Price configurations for offers with custom intervals. # @!attribute [rw] installments # @return [::Array<::Google::Cloud::CommerceProducer::V1beta::PrivateOffer::SingleProductOffer::Installment>] # Optional. The installments that make up the installment timeline. # All installments must have the same form of price model (e.g. # all commitment, or all flat fee). A subscription must be present # under the price model for every installment. # # Must contain at least one installment to publish the offer. class CustomIntervalPrice include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # The contract value of the offer. # @!attribute [r] total_contract_value # @return [::Google::Type::Money] # Output only. The total contract value of the offer. # This will be set for all non-draft private offers, as long as # 'PRIVATE_OFFER_VIEW_FULL' is requested. For DRAFT private offers, # this will be populated only when the end user's billing account is # set and when the pricing and term configuration is sufficiently # complete to allow for a calculation. class ContractValue include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end # Revenue Share information for a Private Offer. # For more details about the revenue share, including how the value is # determined, see # https://docs.cloud.google.com/marketplace/docs/partners/revenue-share-scenarios. # # Not included for `PRIVATE_OFFER_VIEW_BASIC`, or for DRAFT private offers. # # For non-draft private offers, these fields are populated based on the # following: # # * Offers published after April 20, 2025 will always have revenue # share fields populated. # * Offers published on or before April 20, 2025 will only have revenue # share fields populated if they were associated with an active, # unexpired order on that date. # @!attribute [r] current_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The revenue share currently in effect. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue. # . # @!attribute [r] renewal_term_vendor_net_revenue_percent # @return [::Google::Type::Decimal] # Output only. The expected revenue share for the renewal term. # Not included if the offer does not have renewal terms. # # The range of the value is between 0 and 100. For example, 80 # means the Vendor's current term revenue share is 80%. The vendor # will keep 80% of the revenue after renewal. # . class RevenueShare include ::Google::Protobuf::MessageExts extend ::Google::Protobuf::MessageExts::ClassMethods end end |