import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ApiClientHeader:
client_id: Optional[int] = None
referrer: Optional[str] = None
ip_address: Optional[str] = None
logged_in_user_id: Optional[int] = None
group_id: Optional[int] = None
task: Optional[str] = None
machine: Optional[str] = None
location: Optional[str] = None
created_by: Optional[int] = None
campaign_id: Optional[int] = None
re_captcha_score: Optional[Decimal] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SubscriberFormField:
name: Optional[str] = None
value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SubscriptionParameters:
form_template_i_d: Optional[int] = None
subscription_invoice_i_d: Optional[int] = None
client_subscriber_id: Optional[str] = None
signup_type_i_d: Optional[int] = None
frequency_i_d: Optional[int] = None
auto_renew: Optional[bool] = None
company_i_d: Optional[int] = None
user_i_d: Optional[int] = None
chap_mem_pay_i_d: Optional[int] = None
member_subscription_inv_i_d: Optional[int] = None
fields: Optional[List[SubscriberFormField]] = None
created_by: Optional[int] = None
updated_by: Optional[int] = None
aptify_update_type: Optional[int] = None
renewed_member_subscription_inv_i_d: Optional[int] = None
chap_id: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CampaignInformation:
campaign_id: Optional[int] = None
campaign_name: Optional[str] = None
amount: Optional[Decimal] = None
chap_pay_i_d: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillMeLaterSubscription:
header: Optional[ApiClientHeader] = None
subscription_info: Optional[SubscriptionParameters] = None
campaign_info: Optional[List[CampaignInformation]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillMeCloudServiceResponse:
is_duplicate: Optional[bool] = None
is_successful: Optional[bool] = None
error_code: Optional[str] = None
message: Optional[str] = None
is_error: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BillMePaymentResult(BillMeCloudServiceResponse):
transaction_record_i_d: Optional[int] = None
Python BillMeLaterSubscription DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /json/reply/BillMeLaterSubscription HTTP/1.1
Host: devapi.billhighway.com
Accept: application/json
Content-Type: application/json
Content-Length: length
{"Header":{"ClientId":0,"Referrer":"String","IpAddress":"String","LoggedInUserId":0,"GroupId":0,"Task":"String","Machine":"String","Location":"String","CreatedBy":0,"CampaignId":0,"ReCaptchaScore":0},"SubscriptionInfo":{"FormTemplateID":0,"SubscriptionInvoiceID":0,"ClientSubscriberId":"String","SignupTypeID":0,"FrequencyID":0,"AutoRenew":false,"CompanyID":0,"UserID":0,"ChapMemPayID":0,"MemberSubscriptionInvID":0,"Fields":[{"Name":"String","Value":"String"}],"CreatedBy":0,"UpdatedBy":0,"AptifyUpdateType":0,"RenewedMemberSubscriptionInvID":0,"ChapId":0},"CampaignInfo":[{"CampaignId":0,"CampaignName":"String","Amount":0,"ChapPayID":"String"}]}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"TransactionRecordID":0,"IsDuplicate":false,"IsSuccessful":false,"ErrorCode":"String","Message":"String","IsError":false}