UBIO Automation Cloud · Schema
Ubio Automation Cloud Protocol
AutomationWeb AutomationRPATravelBookingJobsCompany
JSON Schema
{
"$id": "https://protocol.automationcloud.net/schema.json",
"domains": {
"AccountApplication": {
"description": "",
"private": false,
"successCode": {
"outputKey": "confirmation",
"valuePath": "/message"
},
"inputs": {
"url": {
"typeRef": "#/domains/Generic/types/URL",
"description": "Website entry point.",
"initial": true
},
"applicant": {
"typeRef": "#/domains/AccountApplication/types/Applicant"
},
"employment": {
"typeRef": "#/domains/AccountApplication/types/Employment"
},
"options": {
"typeRef": "#/domains/AccountApplication/types/Options",
"default": {},
"initial": true
},
"validationAccount": {
"typeRef": "#/domains/AccountApplication/types/ValidationAccount"
},
"selectedBranch": {
"typeRef": "#/domains/AccountApplication/types/Branch",
"sourceOutputKey": "availableBranches",
"inputMethod": "SelectOne"
},
"mobilePinConfirmation": {
"typeRef": "#/domains/AccountApplication/types/MobilePinConfirmation"
}
},
"outputs": {
"availableBranches": {
"typeRef": "#/domains/AccountApplication/types/Branches"
},
"confirmation": {
"typeRef": "#/domains/AccountApplication/types/Confirmation"
}
},
"types": {
"Options": {
"type": "object",
"description": "Flags for enabling optional automation features.",
"properties": {
"success": {
"type": "boolean",
"default": false
}
},
"required": [],
"additionalProperties": false
},
"Applicant": {
"type": "object",
"description": "The person applying for the bank account.",
"pii": true,
"properties": {
"person": {
"$ref": "#/domains/Generic/types/Person"
},
"address": {
"$ref": "#/domains/AccountApplication/types/Address"
},
"dateOfBirth": {
"type": "string",
"format": "date",
"description": "Date of birth YYYY-MM-DD.",
"example": "1980-01-01"
},
"nationality": {
"$ref": "#/domains/Generic/types/CountryCode",
"description": "Nationality according to passport."
},
"countryOfBirth": {
"$ref": "#/domains/Generic/types/CountryCode",
"description": "Country of birth."
},
"email": {
"type": "string",
"format": "email",
"example": "hello@example.com"
},
"phone": {
"$ref": "#/domains/Generic/types/Phone"
},
"document": {
"$ref": "#/domains/AccountApplication/types/IdentityDocument"
}
},
"required": [
"person",
"dateOfBirth",
"nationality"
],
"additionalProperties": false
},
"Address": {
"type": "object",
"description": "Physical address information, typically used as part of billing or shipping address objects.",
"pii": true,
"properties": {
"line1": {
"type": "string",
"description": "Street name with house number.",
"minLength": 1,
"example": "501 Twin Peaks Blv"
},
"line2": {
"type": "string",
"description": "Additional address information (e.g. flat).",
"example": "Flat 2"
},
"street": {
"$ref": "#/domains/AccountApplication/types/Street"
},
"city": {
"type": "string",
"description": "Name of city, town or other settlement.",
"minLength": 1,
"example": "San Francisco"
},
"postcode": {
"type": "string",
"description": "Postcode in country-specific format, e.g. 5-digit number in US or <code>E3 3RP</code> in UK.",
"minLength": 1,
"example": "94581"
},
"countryCode": {
"$ref": "#/domains/Generic/types/CountryCode"
},
"countrySubdivision": {
"$ref": "#/domains/Generic/types/CountrySubdivision"
}
},
"required": [
"city",
"postcode"
],
"additionalProperties": false
},
"Street": {
"type": "object",
"properties": {
"prefix": {
"type": "string",
"description": "Calle",
"minLength": 1
},
"name": {
"type": "string",
"description": "Romero Robledo"
},
"number": {
"type": "string",
"description": "56"
}
},
"required": [
"name"
],
"additionalProperties": false
},
"Employment": {
"type": "object",
"description": "Applicant employment details.",
"pii": true,
"properties": {
"companyName": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"description": "",
"enum": [
"employed-fulltime",
"employed-parttime",
"unemployed",
"autonomous",
"self-employed",
"on-benefits",
"retired",
"student"
]
},
"profession": {
"type": "string",
"description": "",
"enum": [
"others",
"administrative",
"in-charge",
"manager",
"intermediate-control",
"military",
"worker",
"skilled-worker",
"teacher",
"advanced-technician",
"commission-seller"
]
},
"activitySector": {
"type": "string",
"description": "",
"enum": [
"others",
"public-administration",
"travel-agencies",
"agriculture",
"food-and-tobacco",
"furniture",
"financial",
"commerce",
"communication",
"building",
"diplomats",
"energy-and-water",
"teaching",
"shows",
"electrical-electronic-manufacturing",
"it-services",
"engineering",
"metallurgy",
"military",
"mining",
"paper-and-graphic-arts",
"fishing",
"press",
"vehicle-repair",
"health",
"domestic-services",
"textile",
"transport"
]
},
"phone": {
"$ref": "#/domains/Generic/types/Phone"
},
"otherNetIncome": {
"$ref": "#/domains/Generic/types/Price",
"description": "Applicant's total of other earnings (after tax)."
},
"netIncome": {
"$ref": "#/domains/Generic/types/Price",
"description": "Applicant's total net salary (after tax)."
},
"otherIncomeSource": {
"type": "string",
"enum": [
"others",
"movable-capital",
"real-estate-capital"
]
},
"payFrequency": {
"type": "string",
"enum": [
"monthly",
"weekly",
"fortnightly",
"four-weekly"
]
}
},
"required": [
"status"
],
"additionalProperties": false
},
"Branches": {
"type": "array",
"description": "A list of available branches found on the website.",
"minItems": 1,
"maxItems": 9,
"items": {
"$ref": "#/domains/AccountApplication/types/Branch"
}
},
"Branch": {
"type": "object",
"description": "Branch information.",
"additionalProperties": false,
"properties": {
"name": {
"type": "string",
"example": "MADRID-R. VICTORIA"
},
"address": {
"type": "string",
"example": "AV. REINA VICTORIA, 58"
},
"phoneNumber": {
"type": "string",
"example": "349121257151"
}
},
"required": [
"name"
]
},
"ValidationAccount": {
"type": "object",
"properties": {
"number": {
"type": "string",
"example": "12121212121212"
}
},
"required": [
"number"
],
"additionalProperties": false
},
"MobilePinConfirmation": {
"type": "object",
"description": "Mobile pin confirmation to confirm the applicant's mobile number.",
"pii": true,
"properties": {
"code": {
"type": "string",
"description": "pin confirmation code.",
"example": "12345678",
"minLength": 3,
"maxLength": 10
}
},
"required": [
"code"
],
"additionalProperties": false
},
"IdentityDocument": {
"type": "object",
"description": "Person ID (passport or other document). Automation may fail if this information is required by the website, but not provided.",
"pii": true,
"properties": {
"type": {
"type": "string",
"description": "Document type.",
"enum": [
"passport",
"national-id"
]
},
"number": {
"type": "string",
"description": "Document number.",
"example": "75 127001"
},
"issueDate": {
"type": "string",
"format": "date",
"example": "2008-01-01"
},
"expirationDate": {
"type": "string",
"format": "date",
"example": "2028-01-01"
},
"issueCountryCode": {
"$ref": "#/domains/Generic/types/CountryCode",
"description": "Code of country where the document was issued."
}
},
"required": [
"type",
"number"
],
"additionalProperties": false
},
"Confirmation": {
"type": "object",
"description": "Confirmation of the account.",
"pii": true,
"properties": {
"message": {
"type": "string",
"description": "Confirmation message from the web page.",
"example": "Your account is created."
}
},
"required": [],
"additionalProperties": false
}
},
"errors": [
{
"code": "AccountApplicationDeclined",
"category": "client",
"description": "Account application denied by Bank."
},
{
"code": "MobilePinVerificationFailed",
"category": "client",
"description": "Pin verification failed."
},
{
"code": "InvalidValidationAccountNumber",
"category": "client",
"description": "The validation account number is invalid, according to the supplier."
}
]
},
"AdJob": {
"description": "Internal domain for testing platform features.",
"private": false,
"inputs": {
"options": {
"typeRef": "#/domains/AdJob/types/Options",
"description": "Used by service-api tests.",
"default": {},
"initial": true
},
"password": {
"typeRef": "#/domains/AdJob/types/SomethingPrivate",
"description": "Private/PII/Confidential."
}
},
"outputs": {
"object": {
"typeRef": "#/domains/AdJob/types/Object"
}
},
"types": {
"Object": {
"type": "object",
"description": "An object of arbitrary structure."
},
"Options": {
"type": "object",
"description": "Flags for testing optional features.",
"properties": {
"flag": {
"type": "boolean",
"default": false
}
}
},
"SomethingPrivate": {
"type": "string",
"description": "I contain some PII.",
"pii": true,
"example": "N/A"
}
},
"errors": [
{
"code": "InternalError",
"category": "server",
"description": "AdJob error occurred"
},
{
"code": "ClientError",
"category": "client",
"description": "Client caused error"
}
]
},
"BicycleInsurance": {
"description": "",
"private": false,
"successCode": {
"outputKey": "confirmation",
"valuePath": "/reference"
},
"inputs": {
"url": {
"typeRef": "#/domains/Generic/types/URL",
"description": "Website entry point.",
"initial": true
},
"bikes": {
"typeRef": "#/domains/BicycleInsurance/types/Bikes"
},
"account": {
"typeRef": "#/domains/Generic/types/Account"
},
"applicant": {
"typeRef": "#/domains/BicycleInsurance/types/Applicant"
},
"directDebit": {
"typeRef": "#/domains/BicycleInsurance/types/DirectDebit"
},
"selectedAddress": {
"typeRef": "#/domains/BicycleInsurance/types/Address"
},
"payment": {
"typeRef": "#/domains/Generic/types/Payment"
},
"panToken": {
"typeRef": "#/domains/Generic/types/PanToken"
},
"finalPriceConsent": {
"typeRef": "#/domains/Generic/types/PriceConsent",
"sourceOutputKey": "finalPrice",
"inputMethod": "Consent",
"description": "Client's consent for final price, should exactly match the <code>finalPrice</code> object from output.<br/>Automation will not proceed with placing order until the consent is provided."
},
"cover": {
"typeRef": "#/domains/BicycleInsurance/types/SelectedOptions"
},
"coverStartDate": {
"typeRef": "#/domains/BicycleInsurance/types/CoverStartDate"
},
"selectedPaymentMethod": {
"typeRef": "#/domains/BicycleInsurance/types/PaymentMethod"
},
"optionalExtras": {
"typeRef": "#/domains/BicycleInsurance/types/OptionalExtras"
},
"selectedPackage": {
"typeRef": "#/domains/BicycleInsurance/types/Package"
}
},
"outputs": {
"coverValues": {
"typeRef": "#/domains/BicycleInsurance/types/AvailableOptions"
},
"availablePackages": {
"typeRef": "#/domains/BicycleInsurance/types/AvailablePackages"
},
"availablePaymentMethods": {
"typeRef": "#/domains/BicycleInsurance/types/AvailablePaymentMethods"
},
"availableAddresses": {
"typeRef": "#/domains/BicycleInsurance/types/AvailableAddresses"
},
"estimatedQuote": {
"typeRef": "#/domains/BicycleInsurance/types/QuoteValue"
},
"quote": {
"typeRef": "#/domains/BicycleInsurance/types/QuoteValue"
},
"documents": {
"typeRef": "#/domains/BicycleInsurance/types/Documents"
},
"registrationDocs": {
"typeRef": "#/domains/BicycleInsurance/types/Documents"
},
"finalPrice": {
"description": "Emitted immediately before placing order, when final price is available.<br/>Automation will request <code>finalPriceConsent</code> input which should match this object.",
"typeRef": "#/domains/Generic/types/PriceConsent"
},
"confirmation": {
"typeRef": "#/domains/BicycleInsurance/types/Confirmation"
}
},
"types": {
"Bikes": {
"type": "array",
"description": "An array of Bike objects.",
"items": {
"$ref": "#/domains/BicycleInsurance/types/Bike"
},
"minItems": 1
},
"Bike": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"road",
"mountain",
"hybrid",
"electric",
"folding"
]
},
"make": {
"type": "string",
"minLength": 1
},
"value": {
"type": "string",
"minLength": 1
},
"dateOfPurchase": {
"type": "string",
"format": "date",
"description": "Date of birth YYYY-MM-DD.",
"example": "1980-01-01"
},
"condition": {
"type": "string",
"enum": [
"new",
"used"
]
}
},
"required": [
"type",
"make",
"value"
],
"additionalProperties": false
},
"Applicant": {
"type": "object",
"pii": true,
"properties": {
"person": {
"type": "object",
"description": "Basic information about person's identity.",
"pii": true,
"properties": {
"title": {
"type": "string",
"description": "",
"enum": [
"mr",
"miss",
"ms",
"mrs"
]
},
"firstName": {
"type": "string",
"description": "First name(s) or given name(s), as specified in ID.",
"minLength": 1,
"example": "Bob"
},
"lastName": {
"type": "string",
"description": "Last name or surname, as specified in ID.",
"minLength": 1,
"example": "Smith"
},
"dateOfBirth": {
"type": "string",
"format": "date",
"description": "Date of birth YYYY-MM-DD.",
"example": "1980-01-01"
},
"email": {
"type": "string",
"format": "email",
"example": "hello@example.com"
},
"phone": {
"$ref": "#/domains/Generic/types/Phone"
}
},
"required": [
"title",
"firstName",
"lastName",
"dateOfBirth",
"email",
"phone"
],
"additionalProperties": false
},
"address": {
"$ref": "#/domains/Generic/types/ExplicitAddress"
}
},
"required": [
"person",
"address"
],
"additionalProperties": false
},
"DirectDebit": {
"type": "object",
"description": "Account details for direct debit.",
"pii": true,
"properties": {
"sortCode": {
"type": "string",
"description": "Bank sort code",
"pattern": "\\d{2}-?\\d{2}-?\\d{2}",
"example": "56-00-29"
},
"accountNumber": {
"type": "string",
"minLength": 8,
"maxLength": 8,
"description": "Cover marketing name as provided by the insurer.",
"example": "26207729"
},
"accountName": {
"type": "string",
"minLength": 1
},
"bankName": {
"type": "string",
"minLength": 1
}
},
"required": [
"sortCode",
"accountNumber",
"accountName",
"bankName"
],
"additionalProperties": false
},
"AvailablePaymentMethods": {
"type": "array",
"description": "An array of PaymentMethod objects.",
"items": {
"$ref": "#/domains/BicycleInsurance/types/PaymentMethod"
},
"minItems": 1
},
"PaymentMethod": {
"oneOf": [
{
"$ref": "#/domains/BicycleInsurance/types/PaymentMethodPrice"
},
{
"$ref": "#/domains/BicycleInsurance/types/PaymentMethodTotal"
}
]
},
"PaymentMethodPrice": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"annually",
"monthly"
]
},
"method": {
"type": "string",
"enum": [
"direct-debit",
"credit-card",
"mixed"
]
},
"price": {
"$ref": "#/domains/Generic/types/Price"
}
},
"required": [
"type",
"method",
"price"
],
"additionalProperties": false
},
"PaymentMethodTotal": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"annually",
"monthly"
]
},
"method": {
"type": "string",
"enum": [
"direct-debit",
"credit-card",
"mixed"
]
},
"monthly": {
"$ref": "#/domains/Generic/types/Price"
},
"total": {
"$ref": "#/domains/Generic/types/Price"
}
},
"required": [
"type",
"method",
"monthly",
"total"
],
"additionalProperties": false
},
"QuoteValue": {
"type": "object",
"properties": {
"monthly": {
"$ref": "#/domains/Generic/types/Price"
},
"annually": {
"$ref": "#/domains/Generic/types/Price"
}
},
"required": [],
"additionalProperties": false
},
"Confirmation": {
"type": "object",
"properties": {
"reference": {
"type": "string",
"description": "Booking reference grabbed from the page.",
"example": "RL2XYZ"
},
"message": {
"type": "string",
"description": "Message about the successful operation."
}
},
"required": [
"message"
],
"additionalProperties": false
},
"OptionalExtras": {
"type": "object",
"properties": {},
"required": [],
"additionalProperties": true
},
"AvailableAddresses": {
"type": "array",
"description": "An array of Addresses.",
"items": {
"$ref": "#/domains/BicycleInsurance/types/Address"
},
"minItems": 1
},
"Address": {
"type": "string"
},
"AvailablePackages": {
"type": "array",
"description": "An array of Package objects.",
"items": {
"$ref": "#/domains/BicycleInsurance/types/Package"
},
"minItems": 1
},
"Package": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string",
"minLength": 1
},
"monthly": {
"$ref": "#/domains/Generic/types/Price"
},
"annually": {
"$ref": "#/domains/Generic/types/Price"
},
"benefits": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"name"
],
"additionalProperties": true
},
"Documents": {
"type": "array",
"description": "An array of Link objects.",
"items": {
"$ref": "#/domains/Generic/types/Link"
},
"minItems": 1
},
"AvailableOptions": {
"type": "array",
"description": "Additional options to be filled in.",
"items": {
"anyOf": [
{
"$ref": "#/domains/BicycleInsurance/types/AvailableOptionString"
},
{
"$ref": "#/domains/BicycleInsurance/types/AvailableOptionBoolean"
},
{
"$ref": "#/domains/BicycleInsurance/types/AvailableOptionSelectOne"
},
{
"$ref": "#/domains/BicycleInsurance/types/AvailableOptionSelectMany"
}
]
}
},
"AvailableOptionString": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"String"
]
},
"label": {
"type": "string"
}
},
"required": [
"inputType",
"label"
],
"additionalProperties": false
},
"AvailableOptionBoolean": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"Boolean"
]
},
"label": {
"type": "string"
}
},
"required": [
"inputType",
"label"
],
"additionalProperties": false
},
"AvailableOptionSelectOne": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"SelectOne"
]
},
"label": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"inputType",
"label",
"options"
],
"additionalProperties": false
},
"AvailableOptionSelectMany": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"SelectMany"
]
},
"label": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"inputType",
"label",
"options"
],
"additionalProperties": false
},
"SelectedOptions": {
"type": "array",
"description": "Additional options to fill in.",
"items": {
"anyOf": [
{
"$ref": "#/domains/BicycleInsurance/types/SelectedOptionString"
},
{
"$ref": "#/domains/BicycleInsurance/types/SelectedOptionBoolean"
},
{
"$ref": "#/domains/BicycleInsurance/types/SelectedOptionSelectOne"
},
{
"$ref": "#/domains/BicycleInsurance/types/SelectedOptionSelectMany"
}
]
}
},
"SelectedOptionString": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"String"
]
},
"label": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"inputType",
"label",
"text"
],
"additionalProperties": false
},
"SelectedOptionBoolean": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"String"
]
},
"label": {
"type": "string"
},
"option": {
"type": "boolean"
}
},
"required": [
"inputType",
"label",
"option"
],
"additionalProperties": false
},
"SelectedOptionSelectOne": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"SelectOne"
]
},
"label": {
"type": "string"
},
"option": {
"type": "string"
}
},
"required": [
"inputType",
"label",
"option"
],
"additionalProperties": false
},
"SelectedOptionSelectMany": {
"type": "object",
"properties": {
"inputType": {
"enum": [
"SelectMany"
]
},
"label": {
"type": "string"
},
"options": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"inputType",
"label",
"options"
],
"additionalProperties": false
},
"CoverStartDate": {
"type": "string",
"format": "date",
"description": "The date the cover starts on.",
"example": "1980-01-01"
}
},
"errors": [
{
"code": "AccountDetailsInvalid",
"category": "client",
"description": "The account details are invalid"
},
{
"code": "BicycleDetailsInvalid",
"category": "client",
"description": "The bicycle details are invalid"
},
{
"code": "DirectDebitDetailsInvalid",
"category": "client",
"description": "The direct debit details are invalid"
},
{
"code": "ApplicantDetailsInvalid",
"category": "client",
"description": "The applicant's details are invalid"
},
{
"code": "QuoteNotAvailableOnline",
"category": "website",
"description": "The requested quote is not available online"
}
]
},
"BookingTRV": {
"des
# --- truncated at 32 KB (781 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ubio-automation-cloud/refs/heads/main/json-schema/ubio-automation-cloud-protocol-schema.json