| POST | /PMI |
|---|
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 PmiReply(IHaveErrorField):
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
billhighway_payment_confirmation_number: Optional[str] = None
billhighway_user_id: Optional[int] = None
bh_invoice_batch_id: Optional[List[int]] = None
chap_mem_payid: Optional[int] = None
error_code: Optional[int] = None
error_message: Optional[str] = None
is_error: Optional[bool] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecurringInvoiceSettings:
donation_amount: Optional[str] = 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 AttributeItem:
name: Optional[str] = None
value: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Chapter:
group_id: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Member:
class_name: Optional[str] = None
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
group_id: Optional[str] = None
user_id: Optional[str] = None
alternate_user_id: Optional[str] = None
bh_user_id: Optional[int] = None
first_name: Optional[str] = None
last_name: Optional[str] = None
middle_name: Optional[str] = None
preferred_email_address: Optional[str] = None
other_email_address: Optional[str] = None
preferred_phone_number: Optional[str] = None
preferred_address1: Optional[str] = None
preferred_address2: Optional[str] = None
preferred_city: Optional[str] = None
preferred_state: Optional[str] = None
preferred_zip: Optional[str] = None
preferred_country: Optional[str] = None
access_level: Optional[str] = None
member_status: Optional[str] = None
member_type_client: Optional[str] = None
billing_type: Optional[str] = None
fiscal_year: Optional[int] = None
work_location: Optional[str] = None
dob: Optional[datetime.datetime] = None
paperless: Optional[str] = None
display_name: Optional[str] = None
disable_login: Optional[str] = None
recurring_invoice_settings: Optional[RecurringInvoiceSettings] = None
form_fields: Optional[List[SubscriberFormField]] = None
attributes: Optional[List[AttributeItem]] = None
group_list: Optional[List[Chapter]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InvoiceItem(IInvoiceItemValidation):
unique_id: Optional[str] = None
product_name: Optional[str] = None
amount_due: Optional[Decimal] = None
product_type: Optional[str] = None
act_pattern_type_i_d: Optional[int] = None
term_start_date: Optional[datetime.datetime] = None
term_end_date: Optional[datetime.datetime] = None
recognition_period: Optional[int] = None
revenue_account: Optional[str] = None
accounts_receivable_account: Optional[str] = None
liability_account: Optional[str] = None
credit_expense_account: Optional[str] = None
invoice_clearing_account: Optional[str] = None
cost_center: Optional[str] = None
region: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Invoice(IInvoiceValidation):
unique_id: Optional[str] = None
client_id: Optional[int] = None
group_id: Optional[str] = None
description: Optional[str] = None
opportunity_id: Optional[str] = None
installments: Optional[int] = None
frequency: Optional[int] = None
invoice_due_date: Optional[datetime.datetime] = None
deliver: Optional[bool] = None
user_id: Optional[str] = None
bh_user_id: Optional[int] = None
currency_type: Optional[str] = None
invoice_items: Optional[List[InvoiceItem]] = None
invoice_no: Optional[int] = None
invoice_amt: Optional[Decimal] = None
external_inv_batch_no: Optional[str] = None
exempt_from_late_fee: Optional[bool] = 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 CreditCardPayment(CreditCardPayment):
subscription_info: Optional[SubscriptionParameters] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesForceCreditInvoiceDetails:
invoice: Optional[int] = None
amount_paid: Optional[Decimal] = None
region: Optional[str] = None
cost_center: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CreateApplyCredit:
class_name: Optional[str] = None
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
group_id: Optional[str] = None
user_id: Optional[str] = None
bh_user_id: Optional[int] = None
credit_id: Optional[int] = None
currency_type: Optional[str] = None
credit_type: Optional[str] = None
notes: Optional[str] = None
invoice_details: Optional[List[SalesForceCreditInvoiceDetails]] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SalesForceMemberPaymentInvoiceDetail:
class_name: Optional[str] = None
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
invoice: Optional[int] = None
amount_paid: Optional[str] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AchPayment:
class_name: Optional[str] = None
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
group_id: Optional[str] = None
user_id: Optional[str] = None
bh_user_id: Optional[int] = None
amount: Optional[Decimal] = None
currency_type: Optional[str] = None
country: Optional[str] = None
routing_number: Optional[str] = None
account_number: Optional[str] = None
ach_reference: Optional[str] = None
account_type: Optional[str] = None
is_savings_account: Optional[bool] = None
payer_name: Optional[str] = None
check_number: Optional[str] = None
preferred_email_address: Optional[str] = None
memo: Optional[str] = None
invoice_list: Optional[List[SalesForceMemberPaymentInvoiceDetail]] = None
auto_pay: Optional[bool] = None
store_ach_info: Optional[bool] = None
encryption_type_id: Optional[int] = None
@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Pmi:
unique_id: Optional[str] = None
created_date_time: Optional[datetime.datetime] = None
client_id: Optional[int] = None
group_id: Optional[int] = None
member_info: Optional[Member] = None
invoice_collection: Optional[List[Invoice]] = None
cc_payment_info: Optional[CreditCardPayment] = None
credit_info: Optional[CreateApplyCredit] = None
ach_payment_info: Optional[AchPayment] = None
lockbox_id: Optional[int] = None
member_subscription_invoice_id: Optional[int] = None
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 /PMI HTTP/1.1
Host: devapi.billhighway.com
Accept: application/json
Content-Type: application/json
Content-Length: length
{"UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":0,"MemberInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","AlternateUserId":"String","BhUserId":0,"FirstName":"String","LastName":"String","MiddleName":"String","PreferredEmailAddress":"String","OtherEmailAddress":"String","PreferredPhoneNumber":"String","PreferredAddress1":"String","PreferredAddress2":"String","PreferredCity":"String","PreferredState":"String","PreferredZip":"String","PreferredCountry":"String","AccessLevel":"String","MemberStatus":"String","MemberTypeClient":"String","BillingType":"String","FiscalYear":0,"WorkLocation":"String","DOB":"0001-01-01T00:00:00.0000000","Paperless":"String","DisplayName":"String","DisableLogin":"String","RecurringInvoiceSettings":{"DonationAmount":"String"},"FormFields":[{"Name":"String","Value":"String"}],"Attributes":[{"Name":"String","Value":"String"}],"GroupList":[{"GroupId":"String"}]},"InvoiceCollection":[{"UniqueId":"String","ClientId":0,"GroupId":"String","UserId":"String","OpportunityId":"String","InvoiceDueDate":"0001-01-01T00:00:00.0000000","Installments":0,"Frequency":0,"BhUserId":0,"Description":"String","Deliver":false,"CurrencyType":"String","InvoiceItems":[{"ProductName":"String","AmountDue":"String","RevenueAccount":"String"}],"InvoiceNo":0,"InvoiceAmt":0,"ExternalInvBatchNo":"String","ExemptFromLateFee":false}],"CcPaymentInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"Amount":"String","AutoPay":false,"CurrencyType":"String","Country":"String","CardReferenceOrCardNumber":"String","StoreCardInfo":false,"Address1":"String","Address2":"String","BillingCity":"String","BillingState":"String","PreferredEmailAddress":"String","Memo":"String","OpportunityId":"String","ExpMonth":0,"ExpYear":0,"Cvv":"String","PostalCode":"String","Location":"String","NameOnCard":"String","CardType":"String","InvoiceList":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"Invoice":0,"AmountPaid":"String"}]},"CreditInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"CreditId":0,"CurrencyType":"String","CreditType":"String","Notes":"String","InvoiceDetails":[{"Invoice":0,"AmountPaid":0,"Region":"String","CostCenter":"String"}]},"AchPaymentInfo":{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"GroupId":"String","UserId":"String","BhUserId":0,"Amount":0,"CurrencyType":"String","Country":"String","RoutingNumber":"String","AccountNumber":"String","AchReference":"String","AccountType":"String","IsSavingsAccount":false,"PayerName":"String","CheckNumber":"String","PreferredEmailAddress":"String","Memo":"String","InvoiceList":[{"ClassName":"String","UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"Invoice":0,"AmountPaid":"String"}],"AutoPay":false,"StoreAchInfo":false,"EncryptionTypeId":0},"LockboxId":0,"MemberSubscriptionInvoiceId":0}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length
{"UniqueId":"String","CreatedDateTime":"0001-01-01T00:00:00.0000000","ClientId":0,"BillhighwayPaymentConfirmationNumber":"String","BillhighwayUserId":0,"BhInvoiceBatchId":[0],"ChapMemPayid":0,"ErrorCode":0,"ErrorMessage":"String","IsError":true}