Ubio Automation Cloud Protocol

AutomationWeb AutomationRPATravelBookingJobsCompany
View JSON Schema on GitHub

JSON Schema

ubio-automation-cloud-protocol-schema.json Raw ↑
{
  "$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