regis

<back to all web services

AddRegistrationsBillingPlanPreviewRequest

Requires Authentication
Required role:REGISUserRole
The following routes are available for this service:
POST/Registration/{uuid}/Add/{reporting_term}/BillingPlanPreview
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 InvoiceItemResponse:
    response_status: Optional[ResponseStatus] = None
    invoice_item_u_u_i_d: Optional[str] = None
    rate_id: int = 0
    rate_code: Optional[str] = None
    rate_description: Optional[str] = None
    reporting_term: Optional[str] = None
    charge: Optional[Decimal] = None
    credit: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InstructorResponse:
    response_status: Optional[ResponseStatus] = None
    regent_id: int = 0
    regent_login: Optional[str] = None
    preferred_name: Optional[str] = None
    first_name: Optional[str] = None
    last_name: Optional[str] = None
    full_name: Optional[str] = None
    email: Optional[str] = None
    image_base64: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentResponse:
    code: Optional[str] = None
    document_name: Optional[str] = None
    document_description: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SectionResponse:
    response_status: Optional[ResponseStatus] = None
    sec_u_u_i_d: Optional[str] = None
    course_name: Optional[str] = None
    section_code: Optional[str] = None
    course_title: Optional[str] = None
    course_short_title: Optional[str] = None
    course_description: Optional[str] = None
    crosslist_description: Optional[str] = None
    crosslist_course_name: Optional[str] = None
    location_long_name: Optional[str] = None
    room: Optional[str] = None
    instructors: Optional[List[InstructorResponse]] = None
    required_documents: Optional[List[DocumentResponse]] = None
    start_date: Optional[datetime.datetime] = None
    end_date: Optional[datetime.datetime] = None
    first_meeting_date: Optional[datetime.datetime] = None
    last_meeting_date: Optional[datetime.datetime] = None
    meeting_days: Optional[str] = None
    start_times: Optional[List[str]] = None
    end_times: Optional[List[str]] = None
    is_online_only: bool = False
    is_weekend: bool = False
    is_weekday: bool = False
    is_evening: bool = False
    is_waitlist: bool = False
    has_special_requirements: bool = False
    special_requirements: Optional[str] = None
    is_unlisted: bool = False
    credit_amounts: Optional[List[Decimal]] = None
    audit_amounts: Optional[List[Decimal]] = None
    audits_short_name: Optional[str] = None
    audits_long_name: Optional[str] = None
    credits_short_name: Optional[str] = None
    credits_long_name: Optional[str] = None
    distance_ed_materials: Optional[str] = None
    prerequisites: Optional[str] = None
    corequisites: Optional[str] = None
    capacity: Optional[int] = None
    flat_fee_amount: Optional[Decimal] = None
    additional_fee_amount: Optional[Decimal] = None
    registered_students: int = 0
    three_credit_plus: int = 0
    two_credit: int = 0
    one_credit: int = 0
    three_audit_plus: int = 0
    two_audit: int = 0
    one_audit: int = 0
    crosslist_registered_students: int = 0
    grades_received: int = 0
    crosslist_grades_received: int = 0
    registration_start_date: Optional[datetime.datetime] = None
    registration_end_date: Optional[datetime.datetime] = None
    add_start_date: Optional[datetime.datetime] = None
    add_end_date: Optional[datetime.datetime] = None
    drop_start_date: Optional[datetime.datetime] = None
    drop_end_date: Optional[datetime.datetime] = None
    grading_end_date: Optional[datetime.datetime] = None
    term: Optional[str] = None
    reporting_term: Optional[str] = None
    reporting_year: int = 0
    current_status: Optional[str] = None
    added_by: Optional[str] = None
    added_date: Optional[datetime.datetime] = None
    changed_by: Optional[str] = None
    changed_date: Optional[datetime.datetime] = None
    timestamp: datetime.datetime = datetime.datetime(1, 1, 1)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StudentSectionResponse(SectionResponse):
    student_section_u_u_i_d: Optional[str] = None
    registered_amount: Decimal = decimal.Decimal(0)
    is_provisional: bool = False
    is_audit: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StudentSectionInvoiceItemResponse(InvoiceItemResponse):
    student_section: Optional[StudentSectionResponse] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RegistrationBillingPlanInvoiceItemGroupResponse:
    name: Optional[str] = None
    description: Optional[str] = None
    rate_code: Optional[str] = None
    rate_description: Optional[str] = None
    total_charges: Optional[Decimal] = None
    total_credits: Optional[Decimal] = None
    student_section_invoice_items: Optional[List[StudentSectionInvoiceItemResponse]] = None
    invoice_items: Optional[List[InvoiceItemResponse]] = None
    other_invoice_items: Optional[List[InvoiceItemResponse]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RegistrationBillingPlanTermResponse:
    reporting_term: Optional[str] = None
    term_name: Optional[str] = None
    due_date: Optional[datetime.datetime] = None
    total_charges: Optional[Decimal] = None
    total_credits: Optional[Decimal] = None
    invoice_item_groups: Optional[List[RegistrationBillingPlanInvoiceItemGroupResponse]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RegistrationBillingPlanResponse:
    transaction_uuid: Optional[str] = None
    uuid: Optional[str] = None
    regent_id: int = 0
    reporting_term: Optional[str] = None
    total_charges: Optional[Decimal] = None
    total_credits: Optional[Decimal] = None
    terms: Optional[List[RegistrationBillingPlanTermResponse]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InvoiceResponse:
    response_status: Optional[ResponseStatus] = None
    invoice_u_u_i_d: Optional[str] = None
    regent_id: int = 0
    uuid: Optional[str] = None
    reporting_term: Optional[str] = None
    total_charges: Optional[Decimal] = None
    total_credits: Optional[Decimal] = None
    current_status: Optional[str] = None
    timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
    billing_plan: Optional[RegistrationBillingPlanResponse] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class InvoiceItemAdminResponse:
    response_status: Optional[ResponseStatus] = None
    invoice_item_u_u_i_d: Optional[str] = None
    rate_id: int = 0
    rate_code: Optional[str] = None
    rate_description: Optional[str] = None
    is_required: bool = False
    is_optional: bool = False
    charge: Optional[Decimal] = None
    credit: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BenefitResponse:
    rate_id: int = 0
    rate_code: Optional[str] = None
    rate_description: Optional[str] = None
    percentage_rate: Decimal = decimal.Decimal(0)
    is_optional: bool = False
    is_required: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AddRegistrationsResponse(InvoiceResponse):
    transaction_uuid: Optional[str] = None
    student_section_invoice_items: Optional[List[StudentSectionInvoiceItemResponse]] = None
    section_rates: Optional[Dict[str, List[SectionRateWithAmountResponse]]] = None
    credit_tuition_rate: Optional[InvoiceItemAdminResponse] = None
    audit_tuition_rate: Optional[InvoiceItemAdminResponse] = None
    student_age: Optional[int] = None
    student_age_at_earliest_section_start_date: Optional[int] = None
    is_regent_grad: bool = False
    is_only_unclassified: bool = False
    can_register_for_audit_in_term: bool = False
    can_register_for_credit_in_term: bool = False
    messages: Optional[List[str]] = None
    current_term_audit_hours: Decimal = decimal.Decimal(0)
    current_term_credit_hours: Decimal = decimal.Decimal(0)
    total_credit_hours: Decimal = decimal.Decimal(0)
    available_invoice_items: Optional[List[InvoiceItemAdminResponse]] = None
    available_benefits: Optional[List[BenefitResponse]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AddRegistrationWithBenefitRequest:
    student_section_uuid: Optional[str] = None
    description: Optional[str] = None
    amount: Decimal = decimal.Decimal(0)
    charge: Decimal = decimal.Decimal(0)
    is_audit: bool = False
    benefit_id: Optional[int] = None
    benefit_amount: Optional[Decimal] = None
    second_benefit_id: Optional[int] = None
    second_benefit_amount: Optional[Decimal] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AddRegistrationsAdditionalChargeSubmitRequest:
    rate_id: int = 0
    description: Optional[str] = None
    charge: Decimal = decimal.Decimal(0)
    credit: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AddRegistrationsBillingPlanPreviewRequest:
    transaction_uuid: Optional[str] = None
    uuid: Optional[str] = None
    reporting_term: Optional[str] = None
    registrations: Optional[List[AddRegistrationWithBenefitRequest]] = None
    additional_term_charges: Optional[List[AddRegistrationsAdditionalChargeSubmitRequest]] = None
    description: Optional[str] = None
    authorizing_uuid: Optional[str] = None
    use_authoritative_billing_plan: bool = False

Python AddRegistrationsBillingPlanPreviewRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /Registration/{uuid}/Add/{reporting_term}/BillingPlanPreview HTTP/1.1 
Host: data.regent-college.edu 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	transaction_uuid: String,
	uuid: String,
	reporting_term: String,
	registrations: 
	[
		{
			student_section_uuid: String,
			description: String,
			amount: 0,
			charge: 0,
			is_audit: False,
			benefit_id: 0,
			benefit_amount: 0,
			second_benefit_id: 0,
			second_benefit_amount: 0
		}
	],
	additional_term_charges: 
	[
		{
			rate_id: 0,
			description: String,
			charge: 0,
			credit: 0
		}
	],
	description: String,
	authorizing_uuid: String,
	use_authoritative_billing_plan: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	transaction_uuid: String,
	studentSectionInvoiceItems: 
	[
		{
			studentSection: 
			{
				studentSectionUUID: String,
				registered_amount: 0,
				is_provisional: False,
				is_audit: False,
				responseStatus: 
				{
					errorCode: String,
					message: String,
					stackTrace: String,
					errors: 
					[
						{
							errorCode: String,
							fieldName: String,
							message: String,
							meta: 
							{
								String: String
							}
						}
					],
					meta: 
					{
						String: String
					}
				},
				secUUID: String,
				course_name: String,
				section_code: String,
				course_title: String,
				course_short_title: String,
				course_description: String,
				crosslist_description: String,
				crosslist_course_name: String,
				location_long_name: String,
				room: String,
				instructors: 
				[
					{
						responseStatus: 
						{
							errorCode: String,
							message: String,
							stackTrace: String,
							errors: 
							[
								{
									errorCode: String,
									fieldName: String,
									message: String,
									meta: 
									{
										String: String
									}
								}
							],
							meta: 
							{
								String: String
							}
						},
						regent_id: 0,
						regent_login: String,
						preferred_name: String,
						first_name: String,
						last_name: String,
						full_name: String,
						email: String,
						image_base64: String
					}
				],
				required_documents: 
				[
					{
						code: String,
						document_name: String,
						document_description: String
					}
				],
				start_date: 0001-01-01,
				end_date: 0001-01-01,
				first_meeting_date: 0001-01-01,
				last_meeting_date: 0001-01-01,
				meeting_days: String,
				start_times: 
				[
					String
				],
				end_times: 
				[
					String
				],
				is_online_only: False,
				is_weekend: False,
				is_weekday: False,
				is_evening: False,
				is_waitlist: False,
				has_special_requirements: False,
				special_requirements: String,
				is_unlisted: False,
				credit_amounts: 
				[
					0
				],
				audit_amounts: 
				[
					0
				],
				audits_short_name: String,
				audits_long_name: String,
				credits_short_name: String,
				credits_long_name: String,
				distance_ed_materials: String,
				prerequisites: String,
				corequisites: String,
				capacity: 0,
				flat_fee_amount: 0,
				additional_fee_amount: 0,
				registered_students: 0,
				three_credit_plus: 0,
				two_credit: 0,
				one_credit: 0,
				three_audit_plus: 0,
				two_audit: 0,
				one_audit: 0,
				crosslist_registered_students: 0,
				grades_received: 0,
				crosslist_grades_received: 0,
				registration_start_date: 0001-01-01,
				registration_end_date: 0001-01-01,
				add_start_date: 0001-01-01,
				add_end_date: 0001-01-01,
				drop_start_date: 0001-01-01,
				drop_end_date: 0001-01-01,
				grading_end_date: 0001-01-01,
				term: String,
				reporting_term: String,
				reporting_year: 0,
				current_status: String,
				added_by: String,
				added_date: 0001-01-01,
				changed_by: String,
				changed_date: 0001-01-01,
				timestamp: 0001-01-01
			},
			responseStatus: 
			{
				errorCode: String,
				message: String,
				stackTrace: String,
				errors: 
				[
					{
						errorCode: String,
						fieldName: String,
						message: String,
						meta: 
						{
							String: String
						}
					}
				],
				meta: 
				{
					String: String
				}
			},
			invoiceItemUUID: String,
			rate_id: 0,
			rate_code: String,
			rate_description: String,
			reporting_term: String,
			charge: 0,
			credit: 0
		}
	],
	sectionRates: 
	{
		String: 
		[
			{
				rate_id: 0,
				charge: 0,
				credit: 0,
				responseStatus: 
				{
					errorCode: String,
					message: String,
					stackTrace: String,
					errors: 
					[
						{
							errorCode: String,
							fieldName: String,
							message: String,
							meta: 
							{
								String: String
							}
						}
					],
					meta: 
					{
						String: String
					}
				},
				uuid: String,
				secUUID: String,
				section_id: 0,
				course_name: String,
				section_code: String,
				title: String,
				reporting_term: String,
				rate_code: String,
				rate_description: String,
				is_override_credit_rate: False,
				is_override_audit_rate: False
			}
		]
	},
	creditTuitionRate: 
	{
		responseStatus: 
		{
			errorCode: String,
			message: String,
			stackTrace: String,
			errors: 
			[
				{
					errorCode: String,
					fieldName: String,
					message: String,
					meta: 
					{
						String: String
					}
				}
			],
			meta: 
			{
				String: String
			}
		},
		invoiceItemUUID: String,
		rate_id: 0,
		rate_code: String,
		rate_description: String,
		is_required: False,
		is_optional: False,
		charge: 0,
		credit: 0
	},
	auditTuitionRate: 
	{
		responseStatus: 
		{
			errorCode: String,
			message: String,
			stackTrace: String,
			errors: 
			[
				{
					errorCode: String,
					fieldName: String,
					message: String,
					meta: 
					{
						String: String
					}
				}
			],
			meta: 
			{
				String: String
			}
		},
		invoiceItemUUID: String,
		rate_id: 0,
		rate_code: String,
		rate_description: String,
		is_required: False,
		is_optional: False,
		charge: 0,
		credit: 0
	},
	studentAge: 0,
	studentAgeAtEarliestSectionStartDate: 0,
	isRegentGrad: False,
	isOnlyUnclassified: False,
	canRegisterForAuditInTerm: False,
	canRegisterForCreditInTerm: False,
	messages: 
	[
		String
	],
	currentTermAuditHours: 0,
	currentTermCreditHours: 0,
	totalCreditHours: 0,
	availableInvoiceItems: 
	[
		{
			responseStatus: 
			{
				errorCode: String,
				message: String,
				stackTrace: String,
				errors: 
				[
					{
						errorCode: String,
						fieldName: String,
						message: String,
						meta: 
						{
							String: String
						}
					}
				],
				meta: 
				{
					String: String
				}
			},
			invoiceItemUUID: String,
			rate_id: 0,
			rate_code: String,
			rate_description: String,
			is_required: False,
			is_optional: False,
			charge: 0,
			credit: 0
		}
	],
	availableBenefits: 
	[
		{
			rate_id: 0,
			rate_code: String,
			rate_description: String,
			percentage_rate: 0,
			is_optional: False,
			is_required: False
		}
	],
	responseStatus: 
	{
		errorCode: String,
		message: String,
		stackTrace: String,
		errors: 
		[
			{
				errorCode: String,
				fieldName: String,
				message: String,
				meta: 
				{
					String: String
				}
			}
		],
		meta: 
		{
			String: String
		}
	},
	invoiceUUID: String,
	regent_id: 0,
	uuid: String,
	reporting_term: String,
	total_charges: 0,
	total_credits: 0,
	current_status: String,
	timestamp: 0001-01-01,
	billingPlan: 
	{
		transaction_uuid: String,
		uuid: String,
		regent_id: 0,
		reporting_term: String,
		total_charges: 0,
		total_credits: 0,
		terms: 
		[
			{
				reporting_term: String,
				term_name: String,
				due_date: 0001-01-01,
				total_charges: 0,
				total_credits: 0,
				invoiceItemGroups: 
				[
					{
						name: String,
						description: String,
						rate_code: String,
						rate_description: String,
						total_charges: 0,
						total_credits: 0,
						studentSectionInvoiceItems: 
						[
							{
								studentSection: 
								{
									studentSectionUUID: String,
									registered_amount: 0,
									is_provisional: False,
									is_audit: False,
									responseStatus: 
									{
										errorCode: String,
										message: String,
										stackTrace: String,
										errors: 
										[
											{
												errorCode: String,
												fieldName: String,
												message: String,
												meta: 
												{
													String: String
												}
											}
										],
										meta: 
										{
											String: String
										}
									},
									secUUID: String,
									course_name: String,
									section_code: String,
									course_title: String,
									course_short_title: String,
									course_description: String,
									crosslist_description: String,
									crosslist_course_name: String,
									location_long_name: String,
									room: String,
									instructors: 
									[
										{
											responseStatus: 
											{
												errorCode: String,
												message: String,
												stackTrace: String,
												errors: 
												[
													{
														errorCode: String,
														fieldName: String,
														message: String,
														meta: 
														{
															String: String
														}
													}
												],
												meta: 
												{
													String: String
												}
											},
											regent_id: 0,
											regent_login: String,
											preferred_name: String,
											first_name: String,
											last_name: String,
											full_name: String,
											email: String,
											image_base64: String
										}
									],
									required_documents: 
									[
										{
											code: String,
											document_name: String,
											document_description: String
										}
									],
									start_date: 0001-01-01,
									end_date: 0001-01-01,
									first_meeting_date: 0001-01-01,
									last_meeting_date: 0001-01-01,
									meeting_days: String,
									start_times: 
									[
										String
									],
									end_times: 
									[
										String
									],
									is_online_only: False,
									is_weekend: False,
									is_weekday: False,
									is_evening: False,
									is_waitlist: False,
									has_special_requirements: False,
									special_requirements: String,
									is_unlisted: False,
									credit_amounts: 
									[
										0
									],
									audit_amounts: 
									[
										0
									],
									audits_short_name: String,
									audits_long_name: String,
									credits_short_name: String,
									credits_long_name: String,
									distance_ed_materials: String,
									prerequisites: String,
									corequisites: String,
									capacity: 0,
									flat_fee_amount: 0,
									additional_fee_amount: 0,
									registered_students: 0,
									three_credit_plus: 0,
									two_credit: 0,
									one_credit: 0,
									three_audit_plus: 0,
									two_audit: 0,
									one_audit: 0,
									crosslist_registered_students: 0,
									grades_received: 0,
									crosslist_grades_received: 0,
									registration_start_date: 0001-01-01,
									registration_end_date: 0001-01-01,
									add_start_date: 0001-01-01,
									add_end_date: 0001-01-01,
									drop_start_date: 0001-01-01,
									drop_end_date: 0001-01-01,
									grading_end_date: 0001-01-01,
									term: String,
									reporting_term: String,
									reporting_year: 0,
									current_status: String,
									added_by: String,
									added_date: 0001-01-01,
									changed_by: String,
									changed_date: 0001-01-01,
									timestamp: 0001-01-01
								},
								responseStatus: 
								{
									errorCode: String,
									message: String,
									stackTrace: String,
									errors: 
									[
										{
											errorCode: String,
											fieldName: String,
											message: String,
											meta: 
											{
												String: String
											}
										}
									],
									meta: 
									{
										String: String
									}
								},
								invoiceItemUUID: String,
								rate_id: 0,
								rate_code: String,
								rate_description: String,
								reporting_term: String,
								charge: 0,
								credit: 0
							}
						],
						invoiceItems: 
						[
							{
								responseStatus: 
								{
									errorCode: String,
									message: String,
									stackTrace: String,
									errors: 
									[
										{
											errorCode: String,
											fieldName: String,
											message: String,
											meta: 
											{
												String: String
											}
										}
									],
									meta: 
									{
										String: String
									}
								},
								invoiceItemUUID: String,
								rate_id: 0,
								rate_code: String,
								rate_description: String,
								reporting_term: String,
								charge: 0,
								credit: 0
							}
						],
						otherInvoiceItems: 
						[
							{
								responseStatus: 
								{
									errorCode: String,
									message: String,
									stackTrace: String,
									errors: 
									[
										{
											errorCode: String,
											fieldName: String,
											message: String,
											meta: 
											{
												String: String
											}
										}
									],
									meta: 
									{
										String: String
									}
								},
								invoiceItemUUID: String,
								rate_id: 0,
								rate_code: String,
								rate_description: String,
								reporting_term: String,
								charge: 0,
								credit: 0
							}
						]
					}
				]
			}
		]
	}
}