Skip to content

Credit Control

API reference for diameter.message.commands.credit_control.

Diameter Credit Control Application

This module contains Credit Control Request and Answer messages, implementing AVPs documented in rfc8506, rfc5777 and rfc6733, as well as the 3GPP diameter charging application specification, as documented in 3GPP TS 32.299.

CreditControl

CreditControl(header: MessageHeader = None, avps: list[Avp] = None)

Bases: DefinedMessage

A Credit-Control message.

This message class lists message attributes based on the current rfc8506 as python properties, acessible as instance attributes. AVPs not listed in the base protocol can be retrieved using the CreditControl.find_avps search method.

Examples:

AVPs accessible either as instance attributes or by searching:

>>> msg = Message.from_bytes(b"...")
>>> msg.session_id
dra1.mvno.net;2323;546
>>> msg.find_avps((AVP_SESSION_ID, 0))
['dra1.mvno.net;2323;546']

When diameter message is decoded using Message.from_bytes, it returns either an instance of CreditControlRequest or CreditControlAnswer automatically:

>>> msg = Message.from_bytes(b"...")
>>> assert msg.header.is_request is True
>>> assert isinstance(msg, CreditControlRequest)

When creating a new message, the CreditControlRequest or CreditControlAnswer class should be instantiated directly, and values for AVPs set as class attributes:

>>> msg = CreditControlRequest()
>>> msg.session_id = "dra1.mvno.net;2323;546"

Other, custom AVPs can be appended to the message using the CreditControl.append_avp method, or by overwriting the avp attribute entirely. Regardless of the custom AVPs set, the mandatory values listed in RFC6733 must be set, however they can be set as None, if they are not to be used.

Warning

Every AVP documented for the subclasses of this command can be accessed as an instance attribute, even if the original network-received message did not contain that specific AVP. Such AVPs will be returned with the value None when accessed.

Every other AVP not mentioned here, and not present in a network-received message will raise an AttributeError when being accessed; their presence should be validated with hasattr before accessing.

CreditControlAnswer

CreditControlAnswer(
    header: MessageHeader = None, avps: list[Avp] = None
)

Bases: CreditControl

A Credit-Control-Answer message.

acct_multi_session_id instance-attribute

acct_multi_session_id: bytes

auth_application_id instance-attribute

auth_application_id: int

bearer_control_mode instance-attribute

bearer_control_mode: int

cc_request_number instance-attribute

cc_request_number: int

cc_request_type instance-attribute

cc_request_type: int

cc_session_failover instance-attribute

cc_session_failover: int

cc_sub_session_id instance-attribute

cc_sub_session_id: int

charging_rule_install instance-attribute

charging_rule_install: list[ChargingRuleInstall]

check_balance_result instance-attribute

check_balance_result: int

cost_information instance-attribute

cost_information: CostInformation

credit_control_failure_handling instance-attribute

credit_control_failure_handling: int

direct_debiting_failure_handling instance-attribute

direct_debiting_failure_handling: int

event_timestamp instance-attribute

event_timestamp: datetime

failed_avp instance-attribute

failed_avp: list[FailedAvp]

final_unit_indication instance-attribute

final_unit_indication: FinalUnitIndication

granted_service_unit instance-attribute

granted_service_unit: GrantedServiceUnit

low_balance_indication instance-attribute

low_balance_indication: int

multiple_services_credit_control instance-attribute

multiple_services_credit_control: list[MultipleServicesCreditControl]

oc_olr instance-attribute

oc_olr: OcOlr

oc_supported_features instance-attribute

oc_supported_features: OcSupportedFeatures

origin_host instance-attribute

origin_host: bytes

origin_realm instance-attribute

origin_realm: bytes

origin_state_id instance-attribute

origin_state_id: int

proxy_info instance-attribute

proxy_info: list[ProxyInfo]

qos_final_unit_indication instance-attribute

qos_final_unit_indication: QosFinalUnitIndication

qos_information instance-attribute

qos_information: QosInformation

redirect_host instance-attribute

redirect_host: list[str]

redirect_host_usage instance-attribute

redirect_host_usage: int

redirect_max_cache_time instance-attribute

redirect_max_cache_time: int

remaining_balance instance-attribute

remaining_balance: RemainingBalance

result_code instance-attribute

result_code: int

route_record instance-attribute

route_record: list[bytes]

service_information instance-attribute

service_information: ServiceInformation

session_id instance-attribute

session_id: str

user_name instance-attribute

user_name: str

validity_time instance-attribute

validity_time: int

add_multiple_services_credit_control

add_multiple_services_credit_control(
    granted_service_unit: GrantedServiceUnit = None,
    requested_service_unit: RequestedServiceUnit = None,
    used_service_unit: list[UsedServiceUnit] | UsedServiceUnit = None,
    tariff_change_usage: int = None,
    service_identifier: list[int] | int = None,
    rating_group: int = None,
    g_s_u_pool_reference: list[GsuPoolReference] = None,
    validity_time: int = None,
    result_code: int = None,
    final_unit_indication: FinalUnitIndication = None,
    avp: list[Avp] = None,
)

Add a multiple services credit control instance to the answer.

This is identical to doing:

>>> ccr = CreditControlAnswer()
>>> ccr.multiple_services_credit_control.append(
>>>     MultipleServicesCreditControl()
>>> )

Parameters:

Name Type Description Default
granted_service_unit GrantedServiceUnit

Optional granted service units

None
requested_service_unit RequestedServiceUnit

Optional requested service units

None
used_service_unit list[UsedServiceUnit] | UsedServiceUnit

Optional reported used service units

None
tariff_change_usage int

Optional tariff changed usage indication

None
service_identifier list[int] | int

A list of service identifiers

None
rating_group int

An optional rating group identifier

None
g_s_u_pool_reference list[GsuPoolReference]

An optional list of G-S-U-Pool references

None
validity_time int

Validity time in seconds

None
result_code int

A sub-result code for this specific MSCC

None
final_unit_indication FinalUnitIndication

An optional final unit indiciation

None
avp list[Avp]

A list of custom AVPs to attach

None

CreditControlRequest

CreditControlRequest(
    header: MessageHeader = None, avps: list[Avp] = None
)

Bases: CreditControl

A Credit-Control-Request message.

access_network_charging_address instance-attribute

access_network_charging_address: bytes

access_network_charging_identifier_gx instance-attribute

access_network_charging_identifier_gx: bytes

acct_multi_session_id instance-attribute

acct_multi_session_id: bytes

an_gw_address instance-attribute

an_gw_address: bytes

aoc_request_type instance-attribute

aoc_request_type: int

auth_application_id instance-attribute

auth_application_id: int

bearer_usage instance-attribute

bearer_usage: int

called_station_id instance-attribute

called_station_id: bytes

cc_correlation_id instance-attribute

cc_correlation_id: bytes

cc_request_number instance-attribute

cc_request_number: int

cc_request_type instance-attribute

cc_request_type: int

cc_sub_session_id instance-attribute

cc_sub_session_id: int

default_eps_bearer_qos instance-attribute

default_eps_bearer_qos: DefaultEpsBearerQos

destination_host instance-attribute

destination_host: bytes

Destination peer; should not be set for CCR-I, but should be set for the subsequent requests, based on the CCR-I answer.

destination_realm instance-attribute

destination_realm: bytes

event_timestamp instance-attribute

event_timestamp: datetime

event_trigger instance-attribute

event_trigger: int

framed_ip_address instance-attribute

framed_ip_address: bytes

framed_ipv6_prefix instance-attribute

framed_ipv6_prefix: list[bytes]

ip_can_type instance-attribute

ip_can_type: int

ms_timezone instance-attribute

ms_timezone: bytes

multiple_services_credit_control instance-attribute

multiple_services_credit_control: list[MultipleServicesCreditControl]

multiple_services_indicator instance-attribute

multiple_services_indicator: int

network_request_support instance-attribute

network_request_support: int

oc_supported_features instance-attribute

oc_supported_features: OcSupportedFeatures

offline instance-attribute

offline: int

online instance-attribute

online: int

origin_host instance-attribute

origin_host: bytes

origin_realm instance-attribute

origin_realm: bytes

origin_state_id instance-attribute

origin_state_id: int

proxy_info instance-attribute

proxy_info: list[ProxyInfo]

qos_information instance-attribute

qos_information: QosInformation

rat_type instance-attribute

rat_type: int

requested_action instance-attribute

requested_action: int

requested_service_unit instance-attribute

requested_service_unit: RequestedServiceUnit

route_record instance-attribute

route_record: list[bytes]

service_context_id instance-attribute

service_context_id: str

service_identifier instance-attribute

service_identifier: int

service_information instance-attribute

service_information: ServiceInformation

service_parameter_info instance-attribute

service_parameter_info: list[ServiceParameterInfo]

session_id instance-attribute

session_id: str

sgsn_mcc_mnc instance-attribute

sgsn_mcc_mnc: bytes

subscription_id instance-attribute

subscription_id: list[SubscriptionId]

supported_features instance-attribute

supported_features: SupportedFeatures

termination_cause instance-attribute

termination_cause: int

used_service_unit instance-attribute

used_service_unit: list[UsedServiceUnit]

user_equipment_info instance-attribute

user_equipment_info: UserEquipmentInfo

user_equipment_info_extension instance-attribute

user_equipment_info_extension: UserEquipmentInfoExtension

user_location_info instance-attribute

user_location_info: bytes

user_name instance-attribute

user_name: str

add_multiple_services_credit_control

add_multiple_services_credit_control(
    granted_service_unit: GrantedServiceUnit = None,
    requested_service_unit: RequestedServiceUnit = None,
    used_service_unit: list[UsedServiceUnit] | UsedServiceUnit = None,
    tariff_change_usage: int = None,
    service_identifier: list[int] | int = None,
    rating_group: int = None,
    g_s_u_pool_reference: list[GsuPoolReference] = None,
    validity_time: int = None,
    result_code: int = None,
    final_unit_indication: FinalUnitIndication = None,
    avp: list[Avp] = None,
)

Add a multiple services credit control instance to the request.

This is identical to doing:

>>> ccr = CreditControlRequest()
>>> ccr.multiple_services_credit_control.append(
>>>     MultipleServicesCreditControl()
>>> )

Parameters:

Name Type Description Default
granted_service_unit GrantedServiceUnit

Optional granted service units

None
requested_service_unit RequestedServiceUnit

Optional requested service units

None
used_service_unit list[UsedServiceUnit] | UsedServiceUnit

Optional reported used service units

None
tariff_change_usage int

Optional tariff changed usage indication

None
service_identifier list[int] | int

A list of service identifiers

None
rating_group int

An optional rating group identifier

None
g_s_u_pool_reference list[GsuPoolReference]

An optional list of G-S-U-Pool references

None
validity_time int

Validity time in seconds

None
result_code int

A sub-result code for this specific MSCC

None
final_unit_indication FinalUnitIndication

An optional final unit indiciation

None
avp list[Avp]

A list of custom AVPs to attach

None

add_subscription_id

add_subscription_id(
    subscription_id_type: int, subscription_id_data: str
)

Add a subscription ID to the request.

Parameters:

Name Type Description Default
subscription_id_type int

One of the E_SUBSCRIPTION_ID_TYPE_* constant values

required
subscription_id_data str

Actual subscription ID

required