Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions chargebee/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -142,6 +142,8 @@ def __init__(
self.PersonalizedOffer = chargebee.PersonalizedOffer(self.env)
self.Plan = chargebee.Plan(self.env)
self.PortalSession = chargebee.PortalSession(self.env)
self.Preference = chargebee.Preference(self.env)
self.PreferenceDefinition = chargebee.PreferenceDefinition(self.env)
self.PriceVariant = chargebee.PriceVariant(self.env)
self.PricingPageSession = chargebee.PricingPageSession(self.env)
self.PromotionalCredit = chargebee.PromotionalCredit(self.env)
Expand Down
7 changes: 7 additions & 0 deletions chargebee/models/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
from chargebee.models.enums import (
AccessMode,
AccountHolderType,
AccountReceivablesHandling,
AccountType,
Expand Down Expand Up @@ -54,6 +55,7 @@
NotifyReferralSystem,
OfflinePaymentMethod,
OnEvent,
Operand,
Operation,
OperationType,
PauseOption,
Expand All @@ -76,6 +78,7 @@
RetryEngine,
Role,
ScheduleType,
SettingGroup,
Source,
Status,
TaxExemptReason,
Expand Down Expand Up @@ -298,6 +301,10 @@

from chargebee.models.portal_session.operations import PortalSession

from chargebee.models.preference.operations import Preference

from chargebee.models.preference_definition.operations import PreferenceDefinition

from chargebee.models.price_variant.operations import PriceVariant

from chargebee.models.pricing_page_session.operations import PricingPageSession
Expand Down
24 changes: 24 additions & 0 deletions chargebee/models/enums.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
from enum import Enum


class AccessMode(Enum):
READ_WRITE = "read_write"
READ_ONLY = "read_only"

def __str__(self):
return self.value


class AccountHolderType(Enum):
INDIVIDUAL = "individual"
COMPANY = "company"
Expand Down Expand Up @@ -1266,6 +1274,13 @@ def __str__(self):
return self.value


class Operand(Enum):
REQUEST_SOURCE = "request_source"

def __str__(self):
return self.value


class Operation(Enum):
CREATE = "create"
UPDATE = "update"
Expand Down Expand Up @@ -1598,6 +1613,15 @@ def __str__(self):
return self.value


class SettingGroup(Enum):
CONTRACT_TERMS = "contract_terms"
SUB_CANCELATION = "sub_cancelation"
BILLING_RULES = "billing_rules"

def __str__(self):
return self.value


class Source(Enum):
ADMIN_CONSOLE = "admin_console"
API = "api"
Expand Down
2 changes: 2 additions & 0 deletions chargebee/models/preference/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .operations import Preference
from .responses import PreferenceResponse
77 changes: 77 additions & 0 deletions chargebee/models/preference/operations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
from .responses import *
from chargebee import request, environment
from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast
from chargebee.filters import Filters

@dataclass
class Preference:

env: environment.Environment

class Variant(TypedDict):
value: Required[str]
allow_override_in_interface: NotRequired[bool]
allow_override_in_api: NotRequired[bool]
criteria: NotRequired[List[Criteria]]

class UpsertPreferenceParams(TypedDict):
id: Required[str]
value: Required[str]
allow_override_in_interface: NotRequired[bool]
allow_override_in_api: NotRequired[bool]
variants: NotRequired[List[Dict[Any, Any]]]


class ListParams(TypedDict):
setting_group: Required[Filters.EnumFilter]

class UpsertParams(TypedDict):
preferences: NotRequired[List["Preference.UpsertPreferenceParams"]]

def list(self, params: ListParams, headers=None) -> ListResponse:
jsonKeys = {

}
options = {

}
return request.send_list_request(
"get",
request.uri_path("preferences"),
self.env,
cast(Dict[Any, Any], params),
headers,
ListResponse,
None,
False,
jsonKeys,
options,
resource="preference",
operation="list",
)

def upsert(self, params: UpsertParams, headers=None) -> UpsertResponse:
jsonKeys = {

"variants": 1,

}
options = {

"isIdempotent": True,

}
return request.send(
"post",
request.uri_path("preferences"),
self.env,
cast(Dict[Any, Any], params),
headers,
UpsertResponse,
None,
False,
jsonKeys,
options,
resource="preference",
operation="upsert",
)
45 changes: 45 additions & 0 deletions chargebee/models/preference/responses.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
from dataclasses import dataclass
from chargebee.model import Model
from typing import Dict, List, Any
from chargebee.response import Response

@dataclass
class Criteria(Model):
raw_data: Dict[Any, Any] = None
operand: str = None
operator: str = None
values: List[str] = None


@dataclass
class VariantResponse(Model):
raw_data: Dict[Any, Any] = None
value: str = None
allow_override_in_interface: bool = None
allow_override_in_api: bool = None
criteria: List[Criteria] = None


@dataclass
class PreferenceResponse(Model):
raw_data: Dict[Any, Any] = None
id: str = None
setting_group: str = None
value: str = None
allow_override_in_interface: bool = None
allow_override_in_api: bool = None
variants: List[VariantResponse] = None
created_at: int = None
updated_at: int = None


@dataclass
class ListResponse(Response):

preference: PreferenceResponse

@dataclass
class UpsertResponse(Response):
is_idempotency_replayed: bool
preference: PreferenceResponse

2 changes: 2 additions & 0 deletions chargebee/models/preference_definition/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
from .operations import PreferenceDefinition
from .responses import PreferenceDefinitionResponse
67 changes: 67 additions & 0 deletions chargebee/models/preference_definition/operations.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
from .responses import *
from chargebee import request, environment
from typing import TypedDict, Required, NotRequired, Dict, List, Any, cast
from enum import Enum
from chargebee.filters import Filters
from chargebee.models import enums

@dataclass
class PreferenceDefinition:

env: environment.Environment
class ApplicabilityOperator(Enum):
AND = "and"
OR = "or"

def __str__(self):
return self.value

class Operator(Enum):
IS = "is"
IN = "in"

def __str__(self):
return self.value
class VariantCriteriaAllowedOperator(Enum):
IS = "is"
IN = "in"

def __str__(self):
return self.value

class Applicability(TypedDict):
setting: NotRequired[str]
operator: NotRequired["PreferenceDefinition.Operator"]
values: NotRequired[List[str]]

class VariantCriteria(TypedDict):
operand: NotRequired[enums.Operand]
allowed_operator: NotRequired["PreferenceDefinition.VariantCriteriaAllowedOperator"]
value_schema: NotRequired[ValueSchema]



class ListDefinitionsParams(TypedDict):
setting_group: Required[Filters.EnumFilter]

def list_definitions(self, params: ListDefinitionsParams, headers=None) -> ListDefinitionsResponse:
jsonKeys = {

}
options = {

}
return request.send(
"get",
request.uri_path("preferences", "definitions"),
self.env,
cast(Dict[Any, Any], params),
headers,
ListDefinitionsResponse,
None,
False,
jsonKeys,
options,
resource="preferenceDefinition",
operation="listDefinitions",
)
74 changes: 74 additions & 0 deletions chargebee/models/preference_definition/responses.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
from dataclasses import dataclass
from chargebee.model import Model
from typing import Dict, List, Any
from chargebee.response import Response

@dataclass
class AllowedValueResponse(Model):
raw_data: Dict[Any, Any] = None
value: str = None
description: str = None


@dataclass
class ValueSchemaItemsResponse(Model):
raw_data: Dict[Any, Any] = None
type: str = None
allowed_values: List[AllowedValueResponse] = None


@dataclass
class ValueSchema(Model):
raw_data: Dict[Any, Any] = None
type: str = None
min_value: int = None
max_value: int = None
max_chars: int = None
allowed_values: List[AllowedValueResponse] = None
items: ValueSchemaItemsResponse = None


ValueSchemaResponse = ValueSchema


@dataclass
class ApplicabilityResponse(Model):
raw_data: Dict[Any, Any] = None
setting: str = None
operator: str = None
values: List[str] = None


@dataclass
class VariantCriteriaResponse(Model):
raw_data: Dict[Any, Any] = None
operand: str = None
allowed_operator: str = None
value_schema: ValueSchema = None


@dataclass
class PreferenceDefinitionResponse(Model):
raw_data: Dict[Any, Any] = None
id: str = None
setting_group: str = None
main_group: str = None
sub_group: str = None
description: str = None
doc_link: str = None
access_mode: str = None
overridable_in_interface: bool = None
overridable_in_api: bool = None
applicability_operator: str = None
is_namespace: bool = None
key_internal_name: str = None
applicability: List[ApplicabilityResponse] = None
value_schema: ValueSchemaResponse = None
variant_criteria: List[VariantCriteriaResponse] = None


@dataclass
class ListDefinitionsResponse(Response):

preference_definition: PreferenceDefinitionResponse

Loading