Billhighway Cloud API

<back to all web services

FormBuilderRq

The following routes are available for this service:
GET/signup/api/nat/{natID}/group/{groupId}/formBuilder/type/{FormBuilderTypeID}/info
GET/signup/api/nat/{natID}/group/{groupId}/{usertype}/user/{userid}/formBuilder/type/{FormBuilderTypeID}/info
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 FormBuilderRq(IApiRequest):
    nat_i_d: Optional[int] = None
    group_id: Optional[int] = None
    form_builder_type_i_d: Optional[int] = None
    user_type: Optional[str] = None
    user_id: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhNotifyPub:
    notify_type: Optional[str] = None
    notify_event_type: Optional[str] = None
    delay: Optional[int] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhNotifySub:
    notify_type: Optional[str] = None
    notify_action_type: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhNameValue:
    name: Optional[str] = None
    value: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhValidation:
    validation_name: Optional[str] = None
    validation_length: Optional[Decimal] = None
    validation_pattern: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhCustomValidation:
    custom_function_name: Optional[str] = None
    custom_params: Optional[List[str]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhControlDto:
    disabled: Optional[bool] = None
    label: Optional[str] = None
    label2: Optional[str] = None
    name: Optional[str] = None
    options: Optional[List[BhNameValue]] = None
    conditional_values: Optional[List[str]] = None
    select_get_uri: Optional[str] = None
    validation: Optional[List[BhValidation]] = None
    notify_pubs: Optional[List[BhNotifyPub]] = None
    notify_subs: Optional[List[BhNotifySub]] = None
    custom_validation: Optional[BhCustomValidation] = None
    placeholder: Optional[str] = None
    type: Optional[str] = None
    value: Optional[Object] = None
    validation_messages: Optional[Dict[str, str]] = None
    validation_position: Optional[str] = None
    hide_initial_validation: Optional[bool] = None
    width_class: Optional[str] = None
    html: Optional[str] = None
    img: Optional[str] = None
    img_width: Optional[str] = None
    category: Optional[str] = None
    get_uri: Optional[str] = None
    control_style: Optional[str] = None
    has_sensitive_data: Optional[bool] = None
    debug: Optional[bool] = None
    icon: Optional[str] = None
    mask: Optional[str] = None
    post_service: Optional[int] = None
    print_type: Optional[str] = None
    radio_names: Optional[List[BhNameValue]] = None
    children: Optional[List[BhControlDto]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhGroupDto:
    name: Optional[str] = None
    type: Optional[str] = None
    group_style: Optional[str] = None
    debug: Optional[bool] = None
    notify_pubs: Optional[List[BhNotifyPub]] = None
    notify_subs: Optional[List[BhNotifySub]] = None
    control_details: Optional[List[BhControlDto]] = None
    child_group: Optional[BhGroupDto] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhFormDto:
    template_id: Optional[int] = None
    groups: Optional[List[BhGroupDto]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhServiceDetailInfoDto:
    service_id: Optional[int] = None
    name: Optional[str] = None
    mapped_name: Optional[str] = None
    required: Optional[bool] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BhServiceInfoDto:
    service_id: Optional[int] = None
    service_name: Optional[str] = None
    uri: Optional[str] = None
    service_type: Optional[str] = None
    init_form_state: Optional[bool] = None
    service_details: Optional[List[BhServiceDetailInfoDto]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class FormBuilderRs(IApiResponse):
    form: Optional[BhFormDto] = None
    services: Optional[List[BhServiceInfoDto]] = None

Python FormBuilderRq 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.

GET /signup/api/nat/{natID}/group/{groupId}/formBuilder/type/{FormBuilderTypeID}/info HTTP/1.1 
Host: devapi.billhighway.com 
Accept: text/jsv
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	form: 
	{
		templateId: 0,
		groups: 
		[
			{
				name: String,
				type: String,
				groupStyle: String,
				debug: False,
				notifyPubs: 
				[
					{
						notifyType: String,
						notifyEventType: String,
						delay: 0
					}
				],
				notifySubs: 
				[
					{
						notifyType: String,
						notifyActionType: String
					}
				],
				controlDetails: 
				[
					{
						disabled: False,
						label: String,
						label2: String,
						name: String,
						options: 
						[
							{
								name: String,
								value: String
							}
						],
						conditionalValues: 
						[
							String
						],
						selectGetUri: String,
						validation: 
						[
							{
								validationName: String,
								validationLength: 0,
								validationPattern: String
							}
						],
						notifyPubs: 
						[
							{
								notifyType: String,
								notifyEventType: String,
								delay: 0
							}
						],
						notifySubs: 
						[
							{
								notifyType: String,
								notifyActionType: String
							}
						],
						customValidation: 
						{
							customFunctionName: String,
							customParams: 
							[
								String
							]
						},
						placeholder: String,
						type: String,
						value: {},
						validationMessages: 
						{
							String: String
						},
						validationPosition: String,
						hideInitialValidation: False,
						widthClass: String,
						html: String,
						img: String,
						imgWidth: String,
						category: String,
						getUri: String,
						controlStyle: String,
						hasSensitiveData: False,
						debug: False,
						icon: String,
						mask: String,
						postService: 0,
						printType: String,
						radioNames: 
						[
							{
								name: String,
								value: String
							}
						],
						children: 
						[
							{
								disabled: False,
								label: String,
								label2: String,
								name: String,
								options: 
								[
									{
										name: String,
										value: String
									}
								],
								conditionalValues: 
								[
									String
								],
								selectGetUri: String,
								validation: 
								[
									{
										validationName: String,
										validationLength: 0,
										validationPattern: String
									}
								],
								notifyPubs: 
								[
									{
										notifyType: String,
										notifyEventType: String,
										delay: 0
									}
								],
								notifySubs: 
								[
									{
										notifyType: String,
										notifyActionType: String
									}
								],
								customValidation: 
								{
									customFunctionName: String,
									customParams: 
									[
										String
									]
								},
								placeholder: String,
								type: String,
								value: {},
								validationMessages: 
								{
									String: String
								},
								validationPosition: String,
								hideInitialValidation: False,
								widthClass: String,
								html: String,
								img: String,
								imgWidth: String,
								category: String,
								getUri: String,
								controlStyle: String,
								hasSensitiveData: False,
								debug: False,
								icon: String,
								mask: String,
								postService: 0,
								printType: String,
								radioNames: 
								[
									{
										name: String,
										value: String
									}
								],
								children: 
								[
									{
										disabled: False,
										label: String,
										label2: String,
										name: String,
										options: 
										[
											{
												name: String,
												value: String
											}
										],
										conditionalValues: 
										[
											String
										],
										selectGetUri: String,
										validation: 
										[
											{
												validationName: String,
												validationLength: 0,
												validationPattern: String
											}
										],
										notifyPubs: 
										[
											{
												notifyType: String,
												notifyEventType: String,
												delay: 0
											}
										],
										notifySubs: 
										[
											{
												notifyType: String,
												notifyActionType: String
											}
										],
										customValidation: 
										{
											customFunctionName: String,
											customParams: 
											[
												String
											]
										},
										placeholder: String,
										type: String,
										value: {},
										validationMessages: 
										{
											String: String
										},
										validationPosition: String,
										hideInitialValidation: False,
										widthClass: String,
										html: String,
										img: String,
										imgWidth: String,
										category: String,
										getUri: String,
										controlStyle: String,
										hasSensitiveData: False,
										debug: False,
										icon: String,
										mask: String,
										postService: 0,
										printType: String,
										radioNames: 
										[
											{
												name: String,
												value: String
											}
										]
									}
								]
							}
						]
					}
				],
				childGroup: 
				{
					name: String,
					type: String,
					groupStyle: String,
					debug: False,
					notifyPubs: 
					[
						{
							notifyType: String,
							notifyEventType: String,
							delay: 0
						}
					],
					notifySubs: 
					[
						{
							notifyType: String,
							notifyActionType: String
						}
					],
					controlDetails: 
					[
						{
							disabled: False,
							label: String,
							label2: String,
							name: String,
							options: 
							[
								{
									name: String,
									value: String
								}
							],
							conditionalValues: 
							[
								String
							],
							selectGetUri: String,
							validation: 
							[
								{
									validationName: String,
									validationLength: 0,
									validationPattern: String
								}
							],
							notifyPubs: 
							[
								{
									notifyType: String,
									notifyEventType: String,
									delay: 0
								}
							],
							notifySubs: 
							[
								{
									notifyType: String,
									notifyActionType: String
								}
							],
							customValidation: 
							{
								customFunctionName: String,
								customParams: 
								[
									String
								]
							},
							placeholder: String,
							type: String,
							value: {},
							validationMessages: 
							{
								String: String
							},
							validationPosition: String,
							hideInitialValidation: False,
							widthClass: String,
							html: String,
							img: String,
							imgWidth: String,
							category: String,
							getUri: String,
							controlStyle: String,
							hasSensitiveData: False,
							debug: False,
							icon: String,
							mask: String,
							postService: 0,
							printType: String,
							radioNames: 
							[
								{
									name: String,
									value: String
								}
							],
							children: 
							[
								{
									disabled: False,
									label: String,
									label2: String,
									name: String,
									options: 
									[
										{
											name: String,
											value: String
										}
									],
									conditionalValues: 
									[
										String
									],
									selectGetUri: String,
									validation: 
									[
										{
											validationName: String,
											validationLength: 0,
											validationPattern: String
										}
									],
									notifyPubs: 
									[
										{
											notifyType: String,
											notifyEventType: String,
											delay: 0
										}
									],
									notifySubs: 
									[
										{
											notifyType: String,
											notifyActionType: String
										}
									],
									customValidation: 
									{
										customFunctionName: String,
										customParams: 
										[
											String
										]
									},
									placeholder: String,
									type: String,
									value: {},
									validationMessages: 
									{
										String: String
									},
									validationPosition: String,
									hideInitialValidation: False,
									widthClass: String,
									html: String,
									img: String,
									imgWidth: String,
									category: String,
									getUri: String,
									controlStyle: String,
									hasSensitiveData: False,
									debug: False,
									icon: String,
									mask: String,
									postService: 0,
									printType: String,
									radioNames: 
									[
										{
											name: String,
											value: String
										}
									],
									children: 
									[
										{
											disabled: False,
											label: String,
											label2: String,
											name: String,
											options: 
											[
												{
													name: String,
													value: String
												}
											],
											conditionalValues: 
											[
												String
											],
											selectGetUri: String,
											validation: 
											[
												{
													validationName: String,
													validationLength: 0,
													validationPattern: String
												}
											],
											notifyPubs: 
											[
												{
													notifyType: String,
													notifyEventType: String,
													delay: 0
												}
											],
											notifySubs: 
											[
												{
													notifyType: String,
													notifyActionType: String
												}
											],
											customValidation: 
											{
												customFunctionName: String,
												customParams: 
												[
													String
												]
											},
											placeholder: String,
											type: String,
											value: {},
											validationMessages: 
											{
												String: String
											},
											validationPosition: String,
											hideInitialValidation: False,
											widthClass: String,
											html: String,
											img: String,
											imgWidth: String,
											category: String,
											getUri: String,
											controlStyle: String,
											hasSensitiveData: False,
											debug: False,
											icon: String,
											mask: String,
											postService: 0,
											printType: String,
											radioNames: 
											[
												{
													name: String,
													value: String
												}
											]
										}
									]
								}
							]
						}
					],
					childGroup: 
					{
						name: String,
						type: String,
						groupStyle: String,
						debug: False,
						notifyPubs: 
						[
							{
								notifyType: String,
								notifyEventType: String,
								delay: 0
							}
						],
						notifySubs: 
						[
							{
								notifyType: String,
								notifyActionType: String
							}
						],
						controlDetails: 
						[
							{
								disabled: False,
								label: String,
								label2: String,
								name: String,
								options: 
								[
									{
										name: String,
										value: String
									}
								],
								conditionalValues: 
								[
									String
								],
								selectGetUri: String,
								validation: 
								[
									{
										validationName: String,
										validationLength: 0,
										validationPattern: String
									}
								],
								notifyPubs: 
								[
									{
										notifyType: String,
										notifyEventType: String,
										delay: 0
									}
								],
								notifySubs: 
								[
									{
										notifyType: String,
										notifyActionType: String
									}
								],
								customValidation: 
								{
									customFunctionName: String,
									customParams: 
									[
										String
									]
								},
								placeholder: String,
								type: String,
								value: {},
								validationMessages: 
								{
									String: String
								},
								validationPosition: String,
								hideInitialValidation: False,
								widthClass: String,
								html: String,
								img: String,
								imgWidth: String,
								category: String,
								getUri: String,
								controlStyle: String,
								hasSensitiveData: False,
								debug: False,
								icon: String,
								mask: String,
								postService: 0,
								printType: String,
								radioNames: 
								[
									{
										name: String,
										value: String
									}
								],
								children: 
								[
									{
										disabled: False,
										label: String,
										label2: String,
										name: String,
										options: 
										[
											{
												name: String,
												value: String
											}
										],
										conditionalValues: 
										[
											String
										],
										selectGetUri: String,
										validation: 
										[
											{
												validationName: String,
												validationLength: 0,
												validationPattern: String
											}
										],
										notifyPubs: 
										[
											{
												notifyType: String,
												notifyEventType: String,
												delay: 0
											}
										],
										notifySubs: 
										[
											{
												notifyType: String,
												notifyActionType: String
											}
										],
										customValidation: 
										{
											customFunctionName: String,
											customParams: 
											[
												String
											]
										},
										placeholder: String,
										type: String,
										value: {},
										validationMessages: 
										{
											String: String
										},
										validationPosition: String,
										hideInitialValidation: False,
										widthClass: String,
										html: String,
										img: String,
										imgWidth: String,
										category: String,
										getUri: String,
										controlStyle: String,
										hasSensitiveData: False,
										debug: False,
										icon: String,
										mask: String,
										postService: 0,
										printType: String,
										radioNames: 
										[
											{
												name: String,
												value: String
											}
										],
										children: 
										[
											{
												disabled: False,
												label: String,
												label2: String,
												name: String,
												options: 
												[
													{
														name: String,
														value: String
													}
												],
												conditionalValues: 
												[
													String
												],
												selectGetUri: String,
												validation: 
												[
													{
														validationName: String,
														validationLength: 0,
														validationPattern: String
													}
												],
												notifyPubs: 
												[
													{
														notifyType: String,
														notifyEventType: String,
														delay: 0
													}
												],
												notifySubs: 
												[
													{
														notifyType: String,
														notifyActionType: String
													}
												],
												customValidation: 
												{
													customFunctionName: String,
													customParams: 
													[
														String
													]
												},
												placeholder: String,
												type: String,
												value: {},
												validationMessages: 
												{
													String: String
												},
												validationPosition: String,
												hideInitialValidation: False,
												widthClass: String,
												html: String,
												img: String,
												imgWidth: String,
												category: String,
												getUri: String,
												controlStyle: String,
												hasSensitiveData: False,
												debug: False,
												icon: String,
												mask: String,
												postService: 0,
												printType: String,
												radioNames: 
												[
													{
														name: String,
														value: String
													}
												]
											}
										]
									}
								]
							}
						]
					}
				}
			}
		]
	},
	services: 
	[
		{
			serviceId: 0,
			serviceName: String,
			uri: String,
			serviceType: String,
			initFormState: False,
			serviceDetails: 
			[
				{
					serviceId: 0,
					name: String,
					mappedName: String,
					required: False
				}
			]
		}
	]
}