2001 lines
63 KiB
JSON
2001 lines
63 KiB
JSON
{
|
||
"definitions": {
|
||
"CspReport": {
|
||
"description": "De-facto CSP report format per https://www.tollmanz.com/content-security-policy-report-samples/",
|
||
"type": "object",
|
||
"properties": {
|
||
"blocked-uri": {
|
||
"type": "string"
|
||
},
|
||
"document-uri": {
|
||
"type": "string"
|
||
},
|
||
"effective-directive": {
|
||
"type": "string"
|
||
},
|
||
"original-policy": {
|
||
"type": "string"
|
||
},
|
||
"referrer": {
|
||
"type": "string"
|
||
},
|
||
"status-code": {
|
||
"type": "integer"
|
||
},
|
||
"violated-directive": {
|
||
"type": "string"
|
||
},
|
||
"source-file": {
|
||
"type": "string"
|
||
},
|
||
"line-number": {
|
||
"type": "integer"
|
||
},
|
||
"column-number": {
|
||
"type": "integer"
|
||
},
|
||
"request": {
|
||
"type": "string"
|
||
},
|
||
"request-headers": {
|
||
"type": "string"
|
||
},
|
||
"script-sample": {
|
||
"type": "string"
|
||
}
|
||
}
|
||
},
|
||
"imageDataUri": {
|
||
"description": "RFC 2397 compliant data URI, constrained to base64 encoded images",
|
||
"type": "string",
|
||
"pattern": "^data:image\\/(png|jpeg);base64,[A-Za-z0-9\\/+]+(={0,2})$",
|
||
"minLength": 4,
|
||
"maxLength": 50000,
|
||
"example": "data:image/png;base64,a1B2c3=="
|
||
},
|
||
"email": {
|
||
"description": "basic email address parsing. See http://www.regular-expressions.info/email.html",
|
||
"type": "string",
|
||
"pattern": "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9.%+-.@]",
|
||
"minLength": 7,
|
||
"maxLength": 254,
|
||
"example": "admin@example.com"
|
||
},
|
||
"uuid": {
|
||
"description": "reference to another object in the database",
|
||
"type": "string",
|
||
"pattern": "^([a-f0-9]{24})$",
|
||
"x-invalid-pattern": "[^a-f0-9]",
|
||
"minLength": 24,
|
||
"maxLength": 24,
|
||
"example": "12a345b67c8901234d567e89"
|
||
},
|
||
"DeviceHardware": {
|
||
"description": "The device hardware type (as specified by the manufacturer).",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 75
|
||
}
|
||
],
|
||
"example":"iphone 5S"
|
||
},
|
||
"DeviceSoftware": {
|
||
"description": "The software type and version at registration (not updated)",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 75
|
||
}
|
||
],
|
||
"example":"IOS 10"
|
||
},
|
||
"BridgeID": {
|
||
"description": "A unique reference",
|
||
"type": "string",
|
||
"pattern": "\\d{8}T\\d{9}[A-z\\d]{14}",
|
||
"x-invalid-pattern": "[^0-9A-z]",
|
||
"minLength": 32,
|
||
"maxLength": 32
|
||
},
|
||
"ImageRef": {
|
||
"description": "reference to an image in the database with optional defaults.",
|
||
"type": "string",
|
||
"pattern": "^([a-f0-9]{24}|(defaultSelfie)|(defaultCompanyLogo0))$",
|
||
"minLength": 13,
|
||
"maxLength": 24,
|
||
"example": "12a345b67c8901234d567e89"
|
||
},
|
||
"uuidNullable": {
|
||
"description": "reference to another object in the database or `null`",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^([a-f0-9]{24})$",
|
||
"x-invalid-pattern": "[^a-f0-9]",
|
||
"minLength": 24,
|
||
"maxLength": 24,
|
||
"example": "12a345B67c8901234D567e89"
|
||
},
|
||
"hex256": {
|
||
"description": "A 256bit hex value",
|
||
"type": "string",
|
||
"pattern": "^([a-f0-9]{64})$",
|
||
"x-invalid-pattern": "[^a-f0-9]",
|
||
"minLength": 64,
|
||
"maxLength": 64,
|
||
"example": "1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
|
||
},
|
||
"generalText": {
|
||
"description": "General text format + special chars",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z0-9'[\\]()@?!\\-/.,_&*:;+=]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9'[\\]()@?!\\-/.,_&*:;+=]",
|
||
"example": "SomeTextWithoutSpacesButWith'&','*',etc."
|
||
},
|
||
"generalTextSpace": {
|
||
"description": "General text format + special chars + space",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z0-9'[\\]()@?!\\-/.,_&*:;+= ]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9'[\\]()@?!\\-/.,_&*:;+= ]",
|
||
"example": "Some Text With Spaces plus '&', '*', etc."
|
||
},
|
||
"generalTextSpaceNullable": {
|
||
"description": "General text format + special chars + space or `null`",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^([A-Za-z0-9'[\\]()@?!\\-/.,_&*:;+= ]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9'[\\]()@?!\\-/.,_&*:;+= ]",
|
||
"example": "Some Text With Spaces plus '&', '*', etc."
|
||
},
|
||
"fullAlphaNumeric": {
|
||
"description": "Text with only ASCII letters + numbers",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z0-9]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9]",
|
||
"example": "SomeTextWithoutSpacesOrSpecialCharsButWith0123456789"
|
||
},
|
||
"fullAlphaNumericDashSpace": {
|
||
"description": "Text with only ASCII letters + numbers + dash",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z0-9\\- ]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9\\- ]",
|
||
"example": "Some text with spaces plus 0123456789 And -"
|
||
},
|
||
"fullAlphaNumericDashSpaceNullable": {
|
||
"description": "Text with only ASCII letters + numbers + dash",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^([A-Za-z0-9\\- ]*)$",
|
||
"x-invalid-pattern": "[^a-zA-Z0-9\\- ]",
|
||
"example": "Some text with spaces plus 0123456789 And -"
|
||
},
|
||
"alpha": {
|
||
"description": "Text with only ASCII letters",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z]*)$",
|
||
"x-invalid-pattern": "[^A-Za-z]",
|
||
"example": "SomeTextWithOnlyAsciiLetters"
|
||
},
|
||
"alphaSpace": {
|
||
"description": "Text with only ASCII letters and space",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z ]*)$",
|
||
"x-invalid-pattern": "[^A-Za-z ]",
|
||
"example": "Some Text With Only Ascii Letters plus space"
|
||
},
|
||
"alphaSpaceNullable": {
|
||
"description": "Optional text with only ASCII letters and space",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^([A-Za-z ]*)$",
|
||
"x-invalid-pattern": "[^A-Za-z ]",
|
||
"example": "Some Text With Only Ascii Letters plus space"
|
||
},
|
||
"alphaDashSpace": {
|
||
"description": "Text with only ASCII letters, dash, and space",
|
||
"type": "string",
|
||
"pattern": "^([A-Za-z\\- ]*)$",
|
||
"x-invalid-pattern": "[^A-Za-z\\- ]",
|
||
"example": "Some Text With Only Ascii Letters plus space plus -"
|
||
},
|
||
"paycodeString": {
|
||
"description": "Paycode string. Mostly 0-9A-Z with some ambiguous letters removed",
|
||
"type": "string",
|
||
"pattern": "^([0-9ABCDEFGHJKLMNPRSTUVWXYZ]*)$",
|
||
"x-invalid-pattern": "[^0-9ABCDEFGHJKLMNPRSTUVWXYZ]",
|
||
"example": "A1A1A"
|
||
},
|
||
"lowerCaseHex": {
|
||
"description": "Lower case, hexadecimal string (for hashes etc.)",
|
||
"type": "string",
|
||
"pattern": "^([a-f0-9]*)$",
|
||
"x-invalid-pattern": "[^a-f0-9]",
|
||
"example": "f0a1"
|
||
},
|
||
"numeric": {
|
||
"description": "Numbers only, but sent as a string",
|
||
"type": "string",
|
||
"pattern": "^([0-9]*)$",
|
||
"x-invalid-pattern": "[^0-9]",
|
||
"example": "123"
|
||
},
|
||
"version": {
|
||
"description": "Version number formatting",
|
||
"type": "string",
|
||
"pattern": "^([a-z0-9.\\-]*)$",
|
||
"x-invalid-pattern": "[^a-z0-9.\\-]",
|
||
"example": "0.0.0-abcdefg1234"
|
||
},
|
||
"accountNumberAnon": {
|
||
"description": "An anonymised account number",
|
||
"type": "string",
|
||
"pattern": "^\\*{5}[0-9]{3}$",
|
||
"example": "*****234"
|
||
},
|
||
"SortCodeAnon": {
|
||
"description": "An anonymised sort code",
|
||
"type": "string",
|
||
"pattern": "^\\*{2}-\\*{2}-[0-9]{2}",
|
||
"example": "**-**-12"
|
||
},
|
||
"CardPanAnon": {
|
||
"description": "An anonymised card number",
|
||
"type": "string",
|
||
"pattern": "^[0-9][* ]*[0-9 ]{3,4}$",
|
||
"example": "0*** **** **** *234"
|
||
},
|
||
"MerchantIdAnon": {
|
||
"description": "An anonymised AcquirerMerchantId",
|
||
"type": "string",
|
||
"pattern": "^\\*{5}[0-9a-zA-Z]{3}$",
|
||
"example": "*****A3b"
|
||
},
|
||
"WorldpayMerchantId": {
|
||
"description": "The Worldpay MerchantID format.",
|
||
"type": "string",
|
||
"pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
||
"example": "4db79f58-b8e8-4485-9346-1aafe16ffc57",
|
||
"x-invalid-pattern": "[^0-9a-f\\-]"
|
||
},
|
||
"WorldpayServiceKey": {
|
||
"description": "The Worldpay Service Key format.",
|
||
"type": "string",
|
||
"pattern": "^(?:T_S_|T_C_|L_S_|L_C_)[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$",
|
||
"example": "T_S_4db79f58-b8e8-4485-9346-1aafe16ffc57",
|
||
"x-invalid-pattern": "[^0-9a-f\\-_TLSC]"
|
||
},
|
||
"cardDate": {
|
||
"description": "Dates on cards.",
|
||
"type": "string",
|
||
"pattern": "^(?:0[1-9]|1[0-2])-[0-9][0-9]$",
|
||
"x-invalid-pattern": "[^0-9\\-]"
|
||
},
|
||
"phoneNumber": {
|
||
"description": "Phone number for a mobile device (with all spaces or dashes removed)",
|
||
"type": "string",
|
||
"pattern": "^\\+([0-9]*)$",
|
||
"x-invalid-pattern": "[^0-9+]",
|
||
"minLength": 8,
|
||
"maxLength": 35,
|
||
"example": "+447700900000"
|
||
},
|
||
"phoneNumberAnon": {
|
||
"description": "Phone number for a mobile device, anonymised",
|
||
"type": "string",
|
||
"pattern": "^\\+[0-9]{2,3} [0-9][ *]*[0-9]{3}$",
|
||
"minLength": 8,
|
||
"maxLength": 35,
|
||
"example": "+44 1*** ***000"
|
||
},
|
||
"phoneNumberNullable": {
|
||
"description": "Phone number for a mobile device (with all spaces or dashes removed)",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^\\+([0-9]*)$",
|
||
"x-invalid-pattern": "[^0-9+]",
|
||
"minLength": 8,
|
||
"maxLength": 35,
|
||
"example": "+447700900000"
|
||
},
|
||
"phoneNumberAnonNullable": {
|
||
"description": "Phone number for a mobile device, anonymised",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^\\+[0-9]{2,3} [0-9][ *]*[0-9]{3}$",
|
||
"minLength": 8,
|
||
"maxLength": 35,
|
||
"example": "+44 1*** ***000"
|
||
},
|
||
"featureFlags": {
|
||
"description": "Flags for extra features enabled for the client",
|
||
"type": "array",
|
||
"items": {
|
||
"type": "string",
|
||
"minLength": 1,
|
||
"maxLength": 50
|
||
},
|
||
"example": ["test"]
|
||
},
|
||
"geojson-point": {
|
||
"description": "A Geo-JSON point (easting, northing), or null if location unknown",
|
||
"type": [ "null", "object" ],
|
||
"example": {"type": "Point", "coordinates": [-3.548724, 55.872482]},
|
||
"properties": {
|
||
"type": {
|
||
"description": "Defines that this is a geo-json point (as opposed to other geo-json primitives",
|
||
"type": "string",
|
||
"enum": [ "Point" ]
|
||
},
|
||
"coordinates": {
|
||
"description": "Co-ordinates in [0]=easting, [1]=northing order",
|
||
"type": "array",
|
||
"items": {
|
||
"description": "Coordinate. Note that northing is limited to +/- 90, not +/- 180.",
|
||
"type": "number",
|
||
"maximum": 180,
|
||
"minimum": -180
|
||
},
|
||
"maxItems": 2,
|
||
"minItems": 2
|
||
}
|
||
}
|
||
},
|
||
"ipNullable": {
|
||
"description": "An IP address (either IPv4 or IPv6), or null if none",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^((?:[0-9]{1,3}.){3}[0-9]{1,3}|(?:[0-9a-zA-Z]{0,4}\\:){2,7}[0-9a-zA-Z]{1,4})$",
|
||
"minLength": 3,
|
||
"maxLength": 32,
|
||
"example": "::1"
|
||
},
|
||
"loginMethod": {
|
||
"description": "Valid login methods",
|
||
"type": "string",
|
||
"enum": [ "Bridge" ],
|
||
"example": "Bridge",
|
||
"default": "Bridge"
|
||
},
|
||
"operatorName": {
|
||
"description": "The operator for this account (e.g. Comcarde, <bank> etc.)",
|
||
"type": "string",
|
||
"enum": [ "Comcarde" ],
|
||
"example": "Comcarde",
|
||
"default": "Comcarde"
|
||
},
|
||
"accountType": {
|
||
"description": "Type of an end user account",
|
||
"type": "string",
|
||
"enum": [
|
||
"Credit/Debit Receiving Account",
|
||
"Credit/Debit Payment Card",
|
||
"Bank Account",
|
||
"Bridge eCash"
|
||
],
|
||
"example": "Credit/Debit Payment Card"
|
||
},
|
||
"clientImageType": {
|
||
"description": "Identifies the client image to use for an account",
|
||
"type": "string",
|
||
"enum": [
|
||
"defaultSelfie",
|
||
"Selfie",
|
||
"defaultCompanyLogo0",
|
||
"CompanyLogo0",
|
||
"Item"
|
||
],
|
||
"example": "defaultSelfie"
|
||
},
|
||
"clientImageUploadType": {
|
||
"description": "Identifies the client image types that can be uploaded",
|
||
"type": "string",
|
||
"enum": [
|
||
"Selfie",
|
||
"CompanyLogo0",
|
||
"Item"
|
||
],
|
||
"example": "defaultSelfie"
|
||
},
|
||
"kycGender": {
|
||
"description": "The gender as required by the ID verification/AML service.",
|
||
"type": "string",
|
||
"enum":[
|
||
"",
|
||
"M",
|
||
"F"
|
||
]
|
||
},
|
||
"security.Device.sessionHeader": {
|
||
"description": "The format for the session info header - `x-bridge-device-session` for the bridge_device security layer. It must be formatted as `<deviceToken>:<sessionToken>`.",
|
||
"type": "string",
|
||
"minLength": 85,
|
||
"maxLength": 85,
|
||
"pattern": "[A-Za-z0-9]{42}:[A-Za-z0-9]{42}",
|
||
"example": "ABCDEFGHIJKLMONPQRSTUVWXYZabcdefghijklmnop:0123456789qrstuvwxyzABCDEFGHIJKLMNOPQRSTUV"
|
||
},
|
||
"security.Device.hmacHeader": {
|
||
"description": "The format for the HMAC header - `x-bridge-hmac`. It is HMAC-SHA-256 of '<request path><request method><ISO-8601 timestamp: `YYYY-MM-DDTHH:MM:SS.sssZ`><email><request/response body><sessionHeader>'",
|
||
"$ref": "#/definitions/hex256"
|
||
},
|
||
"security.Device.hmacTimestamp": {
|
||
"description": "The format for the HMAC timestamp header - `x-bridge-timestamp`. It is ISO-8601 timestamp: `YYYY-MM-DDTHH:MM:SS.sssZ`",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"question": {
|
||
"description": "A question that must be answered to confirm knowledge of customer details",
|
||
"type": "object",
|
||
"properties": {
|
||
"questionID": {
|
||
"description": "ID of the question to tie up with answers when submitted to the server",
|
||
"$ref": "api_definitions.json#/definitions/BridgeID"
|
||
},
|
||
"questionType": {
|
||
"description": "The type of question to ask the user.",
|
||
"type":"string",
|
||
"enum": [
|
||
"postcode",
|
||
"card",
|
||
"transactions",
|
||
"device",
|
||
"dob"
|
||
]
|
||
},
|
||
"questionText": {
|
||
"description": "Extra info for the question. Usually the name of item being asked about.",
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpace"
|
||
}
|
||
},
|
||
"required": [ "questionID", "questionType", "questionText" ]
|
||
},
|
||
"answer": {
|
||
"description": "The answer to a customer verification question",
|
||
"type": "object",
|
||
"properties": {
|
||
"questionID": {
|
||
"description": "ID of the question to tie up with this answer on the server",
|
||
"$ref": "api_definitions.json#/definitions/BridgeID"
|
||
},
|
||
"answer": {
|
||
"description": "The answer to the question asked of the user.",
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpace"
|
||
}
|
||
},
|
||
"required": [ "questionID", "answer" ]
|
||
},
|
||
"ErrorInfo": {
|
||
"description": "More information on the error reason",
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"description": "Error code",
|
||
"type": "integer",
|
||
"default": -1,
|
||
"example": 1
|
||
},
|
||
"info": {
|
||
"description": "Text description of the issue",
|
||
"type": "string",
|
||
"default": "Unknown Error",
|
||
"example": "Some error"
|
||
}
|
||
}
|
||
},
|
||
"SuccessInfo": {
|
||
"description": "More information on the error reason",
|
||
"type": "object",
|
||
"properties": {
|
||
"code": {
|
||
"description": "Success code",
|
||
"type": "integer",
|
||
"default": -1,
|
||
"example": 10000
|
||
},
|
||
"info": {
|
||
"description": "Text description of the success",
|
||
"type": "string",
|
||
"default": "Unknown Success",
|
||
"example": "Some success"
|
||
}
|
||
}
|
||
},
|
||
"deviceAuthorisation": {
|
||
"description": "The Pin for this device",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/numeric" },
|
||
{
|
||
"minLength": 5,
|
||
"maxLength": 1024
|
||
}
|
||
],
|
||
"example": "12345"
|
||
},
|
||
"DeviceUuid": {
|
||
"description": "Unique and hidden identifier for the device (created by client)",
|
||
"allOf": [
|
||
{
|
||
"minLength": 30,
|
||
"maxLength": 150
|
||
},
|
||
{
|
||
"$ref": "#/definitions/generalTextSpace"
|
||
}
|
||
]
|
||
},
|
||
"token": {
|
||
"description": "A random token",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/fullAlphaNumeric" },
|
||
{
|
||
"minLength": 42,
|
||
"maxLength": 42
|
||
}
|
||
],
|
||
"example": "abcdefghijklmnopqrstuvwxyzABCDEF0123456789"
|
||
},
|
||
"image": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ImageID": {
|
||
"description": "Unique id of the image",
|
||
"$ref": "api_definitions.json#/definitions/ImageRef",
|
||
"readOnly": true
|
||
},
|
||
"ImageFile": {
|
||
"description": "The image data encoded as base64.",
|
||
"$ref": "api_definitions.json#/definitions/imageDataUri"
|
||
},
|
||
"FileType": {
|
||
"description": "The file type (from the allowed set)",
|
||
"type": "string",
|
||
"enum": [
|
||
"JPG",
|
||
"JPEG",
|
||
"PNG"
|
||
]
|
||
},
|
||
"ImageType": {
|
||
"description": "The type of image (customer or company image etc.)",
|
||
"$ref": "api_definitions.json#/definitions/clientImageType"
|
||
},
|
||
"ImageReported": {
|
||
"description": "Defines if this user has reported this image",
|
||
"type": "boolean",
|
||
"readOnly": true
|
||
}
|
||
},
|
||
"required": [ "ImageFile", "FileType", "ImageType" ]
|
||
},
|
||
"imageUpload": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ImageFile": {
|
||
"description": "The image data encoded as a png or jpeg Data URI.",
|
||
"$ref": "api_definitions.json#/definitions/imageDataUri"
|
||
},
|
||
"ImageType": {
|
||
"description": "The type of image (customer or company image etc.)",
|
||
"$ref": "api_definitions.json#/definitions/clientImageUploadType"
|
||
}
|
||
},
|
||
"required": [ "ImageFile", "ImageType" ]
|
||
},
|
||
"User": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ClientName": {
|
||
"description": "Client's email address",
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"DisplayName": {
|
||
"description": "Client's display name",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 101
|
||
}
|
||
]
|
||
},
|
||
"Selfie": {
|
||
"description": "The image to use for the client",
|
||
"$ref": "api_definitions.json#/definitions/ImageRef"
|
||
}
|
||
}
|
||
},
|
||
"kyc": {
|
||
"type": "object",
|
||
"description": "Know Your Customer (KYC) data. When KYC is not set, you may receive an empty string from the server for `Gender`, but it MUST NOT be an empty string in set requests.",
|
||
"properties": {
|
||
"Title": {
|
||
"description": "Client's title (Mr, Mrs, Ms, Dr, etc.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 20
|
||
}
|
||
]
|
||
},
|
||
"FirstName": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"LastName": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"MiddleNames": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpaceNullable" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"DateOfBirth": {
|
||
"description": "Date of birth as an ISO8601 full-date (YYYY-MM-DD)",
|
||
"type": [ "null", "string" ],
|
||
"format": "date"
|
||
},
|
||
"ResidentialAddressID": {
|
||
"$ref": "api_definitions.json#/definitions/uuidNullable"
|
||
},
|
||
"Gender": {
|
||
"$ref": "api_definitions.json#/definitions/kycGender"
|
||
}
|
||
},
|
||
"required": ["Title", "FirstName", "LastName", "DateOfBirth", "ResidentialAddressID", "Gender"]
|
||
},
|
||
"merchant": {
|
||
"type": "object",
|
||
"description": "Information on the Client's merchant",
|
||
"properties": {
|
||
"CompanyName": {
|
||
"description": "The company name as registered at Companies' House.",
|
||
"type": [ "null", "string" ],
|
||
"pattern": "^[AÀÁÂÃÄÅĀĂĄǺÆǼBCÇĆĈĊČDÞĎĐEÈÉÊËĒĔĖĘĚFGĜĞĠĢHĤĦIÌÍÎÏĨĪĬĮİJĴKĶLĹĻĽĿŁMNÑŃŅŇŊOÒÓÔÕÖØŌŎŐǾŒPQRŔŖŘSŚŜŞŠTŢŤŦUÙÚÛÜŨŪŬŮŰŲVWŴẀẂẄXYỲÝŶŸZŹŻŽ&@£$€¥0-9.,:;\\-‘’'()[\\]{}<>!«»“”\"?\\\\/*=#%+ ]*$",
|
||
"x-invalid-pattern": "[^AÀÁÂÃÄÅĀĂĄǺÆǼBCÇĆĈĊČDÞĎĐEÈÉÊËĒĔĖĘĚFGĜĞĠĢHĤĦIÌÍÎÏĨĪĬĮİJĴKĶLĹĻĽĿŁMNÑŃŅŇŊOÒÓÔÕÖØŌŎŐǾŒPQRŔŖŘSŚŜŞŠTŢŤŦUÙÚÛÜŨŪŬŮŰŲVWŴẀẂẄXYỲÝŶŸZŹŻŽ&@£$€¥0-9.,:;\\-‘’'()[\\]{}<>!«»“”\"?\\\\/*=#%+ ]",
|
||
"minLength": 1,
|
||
"maxLength": 160
|
||
},
|
||
"CompanyAlias": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"CompanySubName": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"VATNo": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 3,
|
||
"maxLength": 25
|
||
}
|
||
]
|
||
},
|
||
"CompanyLogo": {
|
||
"$ref": "api_definitions.json#/definitions/ImageRef"
|
||
}
|
||
},
|
||
"required": ["CompanyName", "CompanyAlias"]
|
||
},
|
||
"address": {
|
||
"type": "object",
|
||
"description": "Address",
|
||
"properties": {
|
||
"AddressID": {
|
||
"description": "The id of this address",
|
||
"$ref": "api_definitions.json#/definitions/uuid",
|
||
"readOnly": true
|
||
},
|
||
"AddressDescription": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"BuildingNameFlat": {
|
||
"description": "Building name or flat number",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 1,
|
||
"maxLength": 64
|
||
}
|
||
]
|
||
},
|
||
"Address1": {
|
||
"description": "First line of address",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 4,
|
||
"maxLength": 64
|
||
}
|
||
]
|
||
},
|
||
"Address2": {
|
||
"description": "Second line of address",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 4,
|
||
"maxLength": 64
|
||
}
|
||
]
|
||
},
|
||
"Town": {
|
||
"description": "Postal Town",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 3,
|
||
"maxLength": 32
|
||
}
|
||
]
|
||
},
|
||
"County": {
|
||
"description": "County / Region",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 3,
|
||
"maxLength": 32
|
||
}
|
||
]
|
||
},
|
||
"PostCode": {
|
||
"description": "Post code",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/fullAlphaNumericDashSpace" },
|
||
{
|
||
"minLength": 3,
|
||
"maxLength": 32
|
||
}
|
||
]
|
||
},
|
||
"Country": {
|
||
"description": "Country. Only open to UK residents at present",
|
||
"type": "string",
|
||
"enum": [ "United Kingdom" ]
|
||
},
|
||
"PhoneNumberAnon": {
|
||
"description": "An anonymised phone number returned from queries",
|
||
"$ref": "api_definitions.json#/definitions/phoneNumberAnonNullable"
|
||
},
|
||
"PhoneNumber": {
|
||
"description": "A contact number at this address; ideally a land line",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/phoneNumberNullable" },
|
||
{
|
||
"minLength": 8,
|
||
"maxLength": 35
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"transaction": {
|
||
"type": "object",
|
||
"properties": {
|
||
"TransactionID": {
|
||
"description": "The id of the transaction",
|
||
"$ref": "api_definitions.json#/definitions/uuid",
|
||
"readOnly": true
|
||
},
|
||
"TransactionType": {
|
||
"description": "The type of transaction: 0=Outgoing, 1=Incoming, 2=Outgoing Full Refund, 3=Incoming Full Refund, 4=Outgoing Parial Refund, 5=Incoming Full Refind, 6=Outgoing Manual Correction, 7=Incoming Manual Correction, 8=Aborted Outgoing Transaction, 9=Aborted Incoming Transaction",
|
||
"type": "integer",
|
||
"enum": [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ]
|
||
},
|
||
"AccountID": {
|
||
"description": "The account id with which this transaction is associated",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
},
|
||
"OtherDisplayName": {
|
||
"description": "Display name of the other party",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100
|
||
}
|
||
]
|
||
},
|
||
"OtherSubDisplayName": {
|
||
"description": "Sub display name of the other party",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100
|
||
}
|
||
]
|
||
},
|
||
"OtherImage": {
|
||
"description": "Image reference of the other party",
|
||
"$ref": "api_definitions.json#/definitions/ImageRef"
|
||
},
|
||
"TotalAmount": {
|
||
"description": "Total amount (request + tip) in pence (100 = £1.00)",
|
||
"type": "number"
|
||
},
|
||
"SaleTime": {
|
||
"description": "Time of the sale (UTC)",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"MyLocation": {
|
||
"description": "My location during the transaction",
|
||
"$ref": "api_definitions.json#/definitions/geojson-point"
|
||
},
|
||
"MerchantInvoiceNumber": {
|
||
"description": "Monotonically increasing invoice number (per Merchant)",
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"readOnly": true
|
||
}
|
||
}
|
||
},
|
||
"transactionDetail": {
|
||
"type": "object",
|
||
"properties": {
|
||
"OtherDisplayName": {
|
||
"description": "Display name of the other party",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100
|
||
}
|
||
]
|
||
},
|
||
"OtherSubDisplayName": {
|
||
"description": "Sub display name of the other party",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100
|
||
}
|
||
]
|
||
},
|
||
"OtherImage": {
|
||
"description": "Image reference of the other party",
|
||
"$ref": "api_definitions.json#/definitions/ImageRef"
|
||
},
|
||
"TransactionStatus": {
|
||
"description": "Status code for the transaction",
|
||
"type": "integer",
|
||
"enum": [ 0, 1, 2, 3, 4, 10, 11, 12, 13, 14, 15, 16, 17 ]
|
||
},
|
||
"StatusInfo": {
|
||
"description": "Textual description of the current status",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"maxLength": 100
|
||
}
|
||
]
|
||
},
|
||
"MerchantInvoice": {
|
||
"description": "Array of invoiceItems or `null` if no invoice details.",
|
||
"type": [ "null", "array" ],
|
||
"items": {
|
||
"$ref": "api_definitions.json#/definitions/invoiceItem"
|
||
}
|
||
},
|
||
"MerchantComment": {
|
||
"description": "Optional free-text annotation from merchant.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"maxLength": 300
|
||
}
|
||
],
|
||
"example": "You were served today by Richard"
|
||
},
|
||
"MerchantVATNo": {
|
||
"description": "Vat number. `null` if unregistered",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"maxLength": 50
|
||
}
|
||
],
|
||
"example": "GB 123 456 789"
|
||
},
|
||
"RequestAmount": {
|
||
"description": "Request amount in pence (100 = £1.00)",
|
||
"type": "number",
|
||
"minimum": 0
|
||
},
|
||
"TipAmount": {
|
||
"description": "Tip amount in pence (100 = £1.00)",
|
||
"type": ["null", "number"],
|
||
"minimum": 0
|
||
},
|
||
"TotalAmount": {
|
||
"description": "Total amount (request + tip) in pence (100 = £1.00)",
|
||
"type": "number",
|
||
"minimum": 0
|
||
},
|
||
"AmountRefunded": {
|
||
"description": "Total of all refunds in pence (100 = £1.00)",
|
||
"type": "number",
|
||
"minimum": 0
|
||
},
|
||
"MyLocation": {
|
||
"description": "My location during the transaction",
|
||
"$ref": "api_definitions.json#/definitions/geojson-point"
|
||
},
|
||
"SaleTime": {
|
||
"description": "Time of the sale (UTC)",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"MerchantInvoiceNumber": {
|
||
"description": "Monotonically increasing invoice number (per Merchant)",
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"readOnly": true
|
||
}
|
||
}
|
||
},
|
||
"invoiceItem": {
|
||
"type": "object",
|
||
"properties": {
|
||
"Item_ID": {
|
||
"description": "ID of the merchant item",
|
||
"$ref": "api_definitions.json#/definitions/uuidNullable"
|
||
},
|
||
"Item_Code": {
|
||
"description": "Barcode or merchant code",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50
|
||
}
|
||
],
|
||
"example": "98768926735178"
|
||
},
|
||
"Item_Description": {
|
||
"description": "Free form description",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 1,
|
||
"maxLength": 150
|
||
}
|
||
],
|
||
"example": "10cm Brush"
|
||
},
|
||
"Line_TotalAmount": {
|
||
"description": "Total amount for an invoice line in pence (100 = £1.00).",
|
||
"type": "integer",
|
||
"example": 798
|
||
},
|
||
"Line_VATAmount": {
|
||
"description": "VAT amount for an invoice line in pence (100 = £1.00).",
|
||
"type": "integer",
|
||
"example": 798
|
||
},
|
||
"Item_VATCode": {
|
||
"description": "VAT Code information (freeform)",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50
|
||
}
|
||
],
|
||
"example": "T1"
|
||
},
|
||
"Item_VATRate": {
|
||
"description": "VAT rate in basis points (100 = 1%)",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"example": 2000
|
||
},
|
||
"Item_NetAmount": {
|
||
"description": "Per item cost net of VAT in pence (100 = £1.00), or NULL if using gross amounts",
|
||
"type": ["null", "integer"],
|
||
"example": 638
|
||
},
|
||
"Item_GrossAmount": {
|
||
"description": "Per item cost gross of VAT in pence (100 = £1.00), or NULL if using net amounts",
|
||
"type": ["null", "integer"],
|
||
"example": 160
|
||
},
|
||
"Item_Quantity": {
|
||
"description": "Quantity of this item",
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"example": 2
|
||
},
|
||
"Item_Refunded": {
|
||
"description": "Array of refunds given on this item, or `null` if no refunds",
|
||
"type": [ "null", "array" ],
|
||
"items": {
|
||
"$ref": "api_definitions.json#/definitions/refundItem"
|
||
}
|
||
},
|
||
"Item_LoyaltyPoints": {
|
||
"description": "The loyalty points for this product (or null if not set).",
|
||
"type": [ "null", "integer" ],
|
||
"minimum": 0,
|
||
"default": null
|
||
}
|
||
},
|
||
"required": ["Item_Code", "Item_Description", "Item_VATRate", "Line_VATAmount", "Item_NetAmount", "Line_TotalAmount", "Item_Quantity"]
|
||
},
|
||
"refundItem": {
|
||
"type": "object",
|
||
"description": "Details of a (potentially partial) refund given for an `invoiceItem`",
|
||
"properties": {
|
||
"Refund_Quantity": {
|
||
"description": "Quantity of items refunded in this refund.",
|
||
"type": "number",
|
||
"minimum": 0
|
||
},
|
||
"Refund_Date": {
|
||
"description": "Date the refund was processed",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"Refund_Reason": {
|
||
"description": "Freeform reason for the refund",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100
|
||
}
|
||
],
|
||
"example": "Customer return."
|
||
}
|
||
}
|
||
},
|
||
"transactionDispute": {
|
||
"type": "object",
|
||
"properties": {
|
||
"DisputeReason": {
|
||
"description": "User provided reason for disputing the payment.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 250
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"account": {
|
||
"type": "object",
|
||
"description": "Details on bank account, credit card, debit card, etc.",
|
||
"properties": {
|
||
"AccountID": {
|
||
"description": "Unique account identifier",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
},
|
||
"AccountType": {
|
||
"description": "The type of account: credit card, bank account, etc.",
|
||
"$ref": "api_definitions.json#/definitions/accountType"
|
||
},
|
||
"ClientAccountName": {
|
||
"description": "Client's friendly name for the account",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"NameOnAccount": {
|
||
"description": "The name on the customer's account",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/alphaSpace" },
|
||
{
|
||
"minLength": 5,
|
||
"maxLength": 64
|
||
}
|
||
]
|
||
},
|
||
"VendorID": {
|
||
"description": "ID for the bank method or card issuer",
|
||
"readOnly": true,
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"VendorAccountName": {
|
||
"description": "The account name defined by the account vendor",
|
||
"readOnly": true,
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"ReceivingAccount": {
|
||
"description": "0 = can't receive payments, 1 = can receive payments",
|
||
"type": "integer",
|
||
"enum": [ 0, 1 ],
|
||
"example": 0
|
||
},
|
||
"PaymentsAccount": {
|
||
"description": "0 = can't make payments, 1 = can make payments",
|
||
"type": "integer",
|
||
"enum": [ 0, 1 ],
|
||
"example": 1
|
||
},
|
||
"BalanceAvailable": {
|
||
"description": "0 = balance not available, 1 = balance available",
|
||
"type": "integer",
|
||
"enum": [ 0, 1 ],
|
||
"example": 0
|
||
},
|
||
"Balance": {
|
||
"description": "Balance (if available). Balance in pence: 100 = £1.00",
|
||
"readOnly": true,
|
||
"type": [ "null", "integer" ],
|
||
"example": 0
|
||
},
|
||
"IconLocation": {
|
||
"description": "Icon image for the account. Append to https://xxx.bridgepay.uk/icons/",
|
||
"readOnly": true,
|
||
"$ref": "api_definitions.json#/definitions/generalText"
|
||
},
|
||
"UserImage": {
|
||
"$ref": "api_definitions.json#/definitions/clientImageType"
|
||
},
|
||
"AccountNumber": {
|
||
"$ref": "api_definitions.json#/definitions/accountNumberAnon"
|
||
},
|
||
"SortCode": {
|
||
"$ref": "api_definitions.json#/definitions/SortCodeAnon"
|
||
},
|
||
"CardPAN": {
|
||
"$ref": "api_definitions.json#/definitions/CardPanAnon"
|
||
},
|
||
"AccountStatus": {
|
||
"description": "Account status: 1 = Locked and can't be deleted, 2 = Deleted (but retained for historical records).",
|
||
"type": "number",
|
||
"enum": [0, 1, 2]
|
||
},
|
||
"BillingAddress": {
|
||
"$ref": "api_definitions.json#/definitions/uuidNullable"
|
||
}
|
||
}
|
||
},
|
||
"LoginBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"password": {
|
||
"description": "user's password",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"email",
|
||
"password"
|
||
]
|
||
},
|
||
"ChangePasswordBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"currentPassword": {
|
||
"description": "user's current password",
|
||
"type": "string"
|
||
},
|
||
"newPassword": {
|
||
"description": "user's new password",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"currentPassword",
|
||
"newPassword"
|
||
]
|
||
},
|
||
"ForgotPasswordBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
}
|
||
},
|
||
"required": [
|
||
"email"
|
||
]
|
||
},
|
||
"ResetNewPasswordBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"validationToken": {
|
||
"description": "validationToken from the recovery email sent to the user",
|
||
"type": "string"
|
||
},
|
||
"newPassword": {
|
||
"description": "new password for the user",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"email",
|
||
"validationToken",
|
||
"newPassword"
|
||
]
|
||
},
|
||
"RecoveryTokenBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"validationToken": {
|
||
"description": "validationToken sent out-of-band to the client",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"validationToken"
|
||
]
|
||
},
|
||
"RecoveryTokenPwBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"validationToken": {
|
||
"description": "validationToken sent out-of-band to the client",
|
||
"type": "string"
|
||
},
|
||
"newPassword": {
|
||
"description": "new password for the client",
|
||
"type": "string"
|
||
}
|
||
},
|
||
"required": [
|
||
"validationToken",
|
||
"newPassword"
|
||
]
|
||
},
|
||
"CreateUserBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"password": {
|
||
"description": "Users desired password",
|
||
"type": "string"
|
||
},
|
||
"method": {
|
||
"$ref": "api_definitions.json#/definitions/loginMethod"
|
||
},
|
||
"operator": {
|
||
"$ref": "api_definitions.json#/definitions/operatorName"
|
||
}
|
||
},
|
||
"required": [
|
||
"email",
|
||
"password"
|
||
]
|
||
},
|
||
"ConfirmEmailBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"emailValidationToken": {
|
||
"description": "Validation token value as received by email.",
|
||
"$ref": "api_definitions.json#/definitions/token"
|
||
}
|
||
},
|
||
"required": [
|
||
"emailValidationToken"
|
||
]
|
||
},
|
||
"CompleteRegistrationBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"password": {
|
||
"description": "User's desired password",
|
||
"type": "string"
|
||
},
|
||
"emailValidationToken": {
|
||
"description": "Validation token value as received by email.",
|
||
"$ref": "api_definitions.json#/definitions/token"
|
||
}
|
||
},
|
||
"required": [
|
||
"password",
|
||
"emailValidationToken"
|
||
]
|
||
},
|
||
"DenyEmailBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
}
|
||
},
|
||
"required": [
|
||
"email"
|
||
]
|
||
},
|
||
"ChangeEmailBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"email": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
}
|
||
},
|
||
"required": [
|
||
"email"
|
||
]
|
||
},
|
||
"UpdateAccountBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ClientAccountName": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"BillingAddress": {
|
||
"description": "Reference to the address assocaited with the account",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
},
|
||
"Lock": {
|
||
"description": "Sets the account to be locked (can't be deleted from a mobile app), or unlocked (can be deleted)",
|
||
"type": "boolean"
|
||
}
|
||
}
|
||
},
|
||
"AddAccountBase": {
|
||
"description": "Parameters required to add any merchant account",
|
||
"type": "object",
|
||
"properties": {
|
||
"ClientAccountName": {
|
||
"description": "Client's friendly name for the account",
|
||
"allOf": [{
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpace"
|
||
},
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"UserImage": {
|
||
"$ref": "api_definitions.json#/definitions/clientImageType"
|
||
},
|
||
"NameOnAccount": {
|
||
"description": "Name as it appears on the account",
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/alphaSpace"
|
||
},
|
||
{
|
||
"minLength": 5,
|
||
"maxLength": 64
|
||
}
|
||
]
|
||
},
|
||
"BillingAddress": {
|
||
"description": "Reference to the address associated with the account",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
}
|
||
},
|
||
"required": [
|
||
"ClientAccountName",
|
||
"NameOnAccount",
|
||
"BillingAddress"
|
||
]
|
||
},
|
||
"AddAccountCredoraxMerchantBody": {
|
||
"description": "Parameters required to add a Credorax merchant account",
|
||
"type": "object",
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/AddAccountBase"
|
||
},
|
||
{
|
||
"type": "object",
|
||
"properties": {
|
||
"AcquirerMerchantID": {
|
||
"description": "Credorax assigned gateway merchant ID",
|
||
"type": "string",
|
||
"pattern": "^[A-Z0-9_]*$",
|
||
"x-invalid-pattern": "[^A-Z0-9_]",
|
||
"minLength": 3,
|
||
"maxLength": 8
|
||
},
|
||
"AcquirerCipher": {
|
||
"description": "Credorax assigned cipher to authenticate requests",
|
||
"type": "string",
|
||
"pattern": "^[A-Za-z0-9]*$",
|
||
"x-invalid-pattern": "[^A-Za-z0-9]",
|
||
"minLength": 1,
|
||
"maxLength": 32
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"required": [
|
||
"ClientAccountName",
|
||
"NameOnAccount",
|
||
"AcquirerMerchantID",
|
||
"AcquirerCipher",
|
||
"BillingAddress"
|
||
]
|
||
},
|
||
"AddAccountWorldpayMerchantBody": {
|
||
"description": "Parameters required to add a Worldpay merchant account",
|
||
"type": "object",
|
||
"allOf": [{
|
||
"$ref": "api_definitions.json#/definitions/AddAccountBase"
|
||
},
|
||
{
|
||
"type": "object",
|
||
"properties": {
|
||
"AcquirerMerchantID": {
|
||
"$ref": "api_definitions.json#/definitions/WorldpayMerchantId"
|
||
},
|
||
"AcquirerCipher": {
|
||
"$ref": "api_definitions.json#/definitions/WorldpayServiceKey"
|
||
}
|
||
}
|
||
}
|
||
],
|
||
"required": [
|
||
"ClientAccountName",
|
||
"NameOnAccount",
|
||
"BillingAddress",
|
||
"AcquirerMerchantID",
|
||
"AcquirerCipher"
|
||
]
|
||
},
|
||
"AccountIdObject": {
|
||
"type": "object",
|
||
"properties": {
|
||
"objectID": {
|
||
"description": "Id of an account",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
}
|
||
},
|
||
"required": [ "objectID" ]
|
||
},
|
||
"device": {
|
||
"type": "object",
|
||
"properties": {
|
||
"DeviceID": {
|
||
"description": "Id of the device",
|
||
"$ref": "api_definitions.json#/definitions/uuid",
|
||
"readOnly": true
|
||
},
|
||
"DeviceName": {
|
||
"description": "The name of the device as given by the user.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 75
|
||
}
|
||
]
|
||
},
|
||
"DeviceNumber": {
|
||
"$ref": "api_definitions.json#/definitions/phoneNumberAnon",
|
||
"readOnly": true
|
||
},
|
||
"DeviceHardware": {
|
||
"$ref": "api_definitions.json#/definitions/DeviceHardware"
|
||
},
|
||
"DeviceSoftware": {
|
||
"$ref": "api_definitions.json#/definitions/DeviceSoftware"
|
||
},
|
||
"DeviceStatus": {
|
||
"description": "The status of the device as a bitmask. 0x01=Verified, 0x02=Authorised, 0x04=Client Suspended (e.g. lost phone), 0x08=Device Barred (can only be set/cleared by Administrator)",
|
||
"type": "number",
|
||
"readOnly": true
|
||
},
|
||
"LastLoginLocation": {
|
||
"description": "Location of the device at last login",
|
||
"$ref": "api_definitions.json#/definitions/geojson-point"
|
||
},
|
||
"LastLoginIP": {
|
||
"description": "IP Address of the device during the last login",
|
||
"$ref": "api_definitions.json#/definitions/ipNullable"
|
||
},
|
||
"LastLogin": {
|
||
"description": "The last login date/time for this device",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"DefaultAccount": {
|
||
"description": "The default account for this device",
|
||
"$ref": "api_definitions.json#/definitions/uuidNullable"
|
||
}
|
||
}
|
||
},
|
||
"item": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ItemID": {
|
||
"description": "Id of the version of the item",
|
||
"$ref": "api_definitions.json#/definitions/uuid",
|
||
"readOnly": true
|
||
},
|
||
"BridgeID": {
|
||
"description": "Id of the item. Multiple objects with the same BridgeID are considered versions of the same item.",
|
||
"type": "string",
|
||
"format": "\\d{8}T\\d{9}[A-z\\d]{14}",
|
||
"example": "20160523T0938434561F0T6oy0H22C7n",
|
||
"readOnly": true
|
||
},
|
||
"ItemStatus": {
|
||
"description": "Status of the item: 1 = active, 2 = deleted.",
|
||
"type": "integer",
|
||
"enum": [ 1, 2 ],
|
||
"example": "1",
|
||
"readOnly": true
|
||
},
|
||
"ItemCode": {
|
||
"description": "Merchant code, UPC, etc.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50,
|
||
"default": ""
|
||
}
|
||
]
|
||
},
|
||
"Description": {
|
||
"description": "Freeform description of item",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 1,
|
||
"maxLength": 150
|
||
}
|
||
]
|
||
},
|
||
"Tags": {
|
||
"description": "Array of tags for this item",
|
||
"type": "array",
|
||
"items": {
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/fullAlphaNumericDashSpace" },
|
||
{
|
||
"minLength": 1,
|
||
"maxLength": 20
|
||
}
|
||
]
|
||
}
|
||
},
|
||
"VATCode": {
|
||
"description": "Freeform information",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpaceNullable" },
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 50
|
||
}
|
||
]
|
||
},
|
||
"VATRate": {
|
||
"description": "The VAT Rate of the item in 10ths of a percent. e.g. 2000 = 20%",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"maximum": 10000
|
||
},
|
||
"NetAmount": {
|
||
"description": "The item price excluding VAT in pence (e.g. 100 = £1.00), or NULL if using gross amounts",
|
||
"type": ["null", "integer"],
|
||
"minimum": 0
|
||
},
|
||
"GrossAmount": {
|
||
"description": "The item price including VAT in pence (e.g. 100 = £1.00), or NULL if using net amounts",
|
||
"type": ["null","integer"],
|
||
"minimum": 0
|
||
},
|
||
"ImageID": {
|
||
"description": "The image associated with this item",
|
||
"$ref": "api_definitions.json#/definitions/uuidNullable"
|
||
},
|
||
"LoyaltyPoints": {
|
||
"description": "The loyalty points for this product (or null if not set).",
|
||
"type": [ "null", "integer" ],
|
||
"minimum": 0,
|
||
"default": null
|
||
},
|
||
"LastUpdate": {
|
||
"description": "The date & time this item was last updated",
|
||
"type": "string",
|
||
"format": "date-time",
|
||
"readOnly": true
|
||
}
|
||
},
|
||
"required": ["Description", "VATRate", "NetAmount", "GrossAmount"]
|
||
},
|
||
"AddDeviceBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ClientName": {
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
},
|
||
"DeviceNumber": {
|
||
"$ref": "api_definitions.json#/definitions/phoneNumber"
|
||
},
|
||
"Password": {
|
||
"description": "user's password",
|
||
"type": "string"
|
||
},
|
||
"DeviceHardware":{
|
||
"$ref": "api_definitions.json#/definitions/DeviceHardware"
|
||
},
|
||
"DeviceSoftware":{
|
||
"$ref": "api_definitions.json#/definitions/DeviceSoftware"
|
||
},
|
||
"DeviceUuid": {
|
||
"$ref": "api_definitions.json#/definitions/DeviceUuid"
|
||
},
|
||
"Location": {
|
||
"description": "Location of the device",
|
||
"$ref": "api_definitions.json#/definitions/geojson-point"
|
||
}
|
||
},
|
||
"required": ["ClientName", "DeviceNumber", "Password", "DeviceUuid", "DeviceHardware", "DeviceSoftware"]
|
||
},
|
||
"ReportLostBody": {
|
||
"type": "object",
|
||
"properties": {
|
||
"DeviceNumber": {
|
||
"$ref": "api_definitions.json#/definitions/phoneNumber"
|
||
}
|
||
},
|
||
"required": ["DeviceNumber"]
|
||
},
|
||
"pendingInvoice": {
|
||
"type": "object",
|
||
"properties": {
|
||
"InvoiceID": {
|
||
"description": "ID for this invoice",
|
||
"$ref": "api_definitions.json#/definitions/uuid",
|
||
"readOnly": true
|
||
},
|
||
"InvoiceStatus": {
|
||
"description": "The status of the invoice",
|
||
"type": "integer",
|
||
"enum": [ 20, 21, 22 ],
|
||
"readOnly": true
|
||
},
|
||
"CustomerDisplayName": {
|
||
"description": "The display name for the customer",
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpace"
|
||
},
|
||
{
|
||
"minLength": 0,
|
||
"maxLength": 100,
|
||
"readOnly": true
|
||
}
|
||
]
|
||
},
|
||
"DueDate": {
|
||
"description": "The date & time this invoice comes due, or null for no due date",
|
||
"type": "string",
|
||
"format": "date-time"
|
||
},
|
||
"MerchantInvoice": {
|
||
"description": "Array of invoiceItems or `null` if no invoice details.",
|
||
"type": [ "null", "array" ],
|
||
"items": {
|
||
"$ref": "api_definitions.json#/definitions/invoiceItem"
|
||
},
|
||
"default": null
|
||
},
|
||
"MerchantComment": {
|
||
"description": "Optional free-text annotation from merchant.",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"maxLength": 300
|
||
}
|
||
],
|
||
"example": "Invoice for service due",
|
||
"default": ""
|
||
},
|
||
"MerchantVATNo": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpaceNullable"
|
||
},
|
||
{
|
||
"minLength": 3,
|
||
"maxLength": 25
|
||
}
|
||
]
|
||
},
|
||
"CustomerComment": {
|
||
"description": "Optional free-text annotation from customer (e.g. why they rejected the invoice).",
|
||
"allOf": [
|
||
{ "$ref": "api_definitions.json#/definitions/generalTextSpace" },
|
||
{
|
||
"maxLength": 300
|
||
}
|
||
],
|
||
"readOnly": true,
|
||
"example": "Invoice is for incorrect amount.",
|
||
"default": ""
|
||
},
|
||
"MerchantAccountID": {
|
||
"description": "The account the merchant wants the invoice to be paid into",
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
},
|
||
"RequestAmount": {
|
||
"description": "Request amount in pence (100 = £1.00). Max £250.00",
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"maximum": 25000
|
||
},
|
||
"MerchantInvoiceNumber": {
|
||
"description": "Monotonically increasing invoice number (per Merchant)",
|
||
"type": "number",
|
||
"minimum": 0,
|
||
"readOnly": true
|
||
},
|
||
"CreationDate": {
|
||
"description": "The date this invoice was created",
|
||
"type": "string",
|
||
"format": "datetime",
|
||
"readOnly": true
|
||
},
|
||
"LastUpdate": {
|
||
"description": "The last time this invoice was updated",
|
||
"type": "string",
|
||
"format": "datetime",
|
||
"readOnly": true
|
||
}
|
||
},
|
||
"required": ["MerchantAccountID", "DueDate", "RequestAmount"]
|
||
},
|
||
"pendingInvoiceDetail": {
|
||
"allOf": [
|
||
{"$ref": "api_definitions.json#/definitions/pendingInvoice"},
|
||
{
|
||
"properties": {
|
||
"CustomerEmail": {
|
||
"description": "Email address of the customer to be charged (or null if the customer no longer exists)",
|
||
"$ref": "api_definitions.json#/definitions/email",
|
||
"readOnly": true
|
||
}
|
||
}
|
||
}
|
||
]
|
||
},
|
||
"addUpdateInvoice": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/pendingInvoice"
|
||
},
|
||
{
|
||
"properties": {
|
||
"CustomerEmail": {
|
||
"description": "Email address of the customer to be charged",
|
||
"$ref": "api_definitions.json#/definitions/email"
|
||
}
|
||
},
|
||
"required": [
|
||
"CustomerEmail"
|
||
]
|
||
}
|
||
]
|
||
},
|
||
"promoCode": {
|
||
"type": "object",
|
||
"description": "A promotional code to enable functionality",
|
||
"properties": {
|
||
"PromoCode": {
|
||
"$ref": "api_definitions.json#/definitions/uuid"
|
||
}
|
||
},
|
||
"required": [
|
||
"PromoCode"
|
||
]
|
||
},
|
||
"apiToken": {
|
||
"type": "object",
|
||
"description": "An API access token.",
|
||
"properties": {
|
||
"name": {
|
||
"description": "A memorable name for the token",
|
||
"allOf": [
|
||
{
|
||
"$ref": "api_definitions.json#/definitions/generalTextSpace"
|
||
},
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 101
|
||
}
|
||
]
|
||
},
|
||
"token": {
|
||
"description": "The API token (only in responses from the server)",
|
||
"readOnly": true,
|
||
"type": "string",
|
||
"pattern": "^[a-zA-Z0-9\\-_]+?\\.[a-zA-Z0-9\\-_]+?\\.([a-zA-Z0-9\\-_]+)?$"
|
||
}
|
||
},
|
||
"required": [
|
||
"name"
|
||
]
|
||
},
|
||
"successfulDeviceLoginResponse": {
|
||
"description": "Login Successful",
|
||
"type":"object",
|
||
"properties": {
|
||
"code": {
|
||
"description": "Code for further information. For first ever login this will be 10010",
|
||
"type": "integer",
|
||
"example": "10010"
|
||
},
|
||
"info": {
|
||
"description": "Text description of the further information",
|
||
"type": "string",
|
||
"example": "First login successful"
|
||
},
|
||
"SessionToken": {
|
||
"description": "The session token to use in future calls",
|
||
"$ref": "#/definitions/token"
|
||
},
|
||
"DeviceName": {
|
||
"description": "The name of the device as given by the user.",
|
||
"allOf": [
|
||
{ "$ref": "#/definitions/generalTextSpace" },
|
||
{
|
||
"minLength": 2,
|
||
"maxLength": 75
|
||
}
|
||
]
|
||
},
|
||
"MerchantStatus": {
|
||
"description": "True if the client is an active merchant",
|
||
"type": "boolean",
|
||
"example": false
|
||
},
|
||
"ServerVersion": {
|
||
"description": "The current server version.",
|
||
"$ref": "#/definitions/version"
|
||
},
|
||
"PaymentMin": {
|
||
"description": "The minimum payment allowed for a transaction (in pence). This may be further limited by merchant configuration.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"PaymentMax": {
|
||
"description": "The maximum payment allowed for a transaction (in pence). This may be further limited by merchant configuration.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"TipMin": {
|
||
"description": "The minimum tip allowed for a transaction if a tip is provided (in pence). This may be further limited by merchant configuration.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"TipMax": {
|
||
"description": "The maximum tip allowed for a transaction if a tip is provided (in pence). This may be further limited by merchant configuration.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"TransactionMin": {
|
||
"description": "The minimum total amount (payment + tip) allowed for a full transaction (in pence). This may be further limited by merchant configuration.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"ClientDetailsSet": {
|
||
"description": "True if the client details have been set. Otherwise they must be set before attempting to make any transactions.",
|
||
"type": "boolean"
|
||
},
|
||
"FeatureFlags": {
|
||
"description": "List of additonal features that are enabled for this client",
|
||
"$ref": "#/definitions/featureFlags"
|
||
},
|
||
"SessionTimeout": {
|
||
"description": "The session timeout time between messages (in milliseconds).",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"example": 0
|
||
},
|
||
"PayCodeTimeout": {
|
||
"description": "The maximum length of time allowed for a paycode to be redeemed (in milliseconds).",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"example": 0
|
||
},
|
||
"CallTimeout": {
|
||
"description": "The maximum length of time any request is expected to take (in milliseconds).",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"example": 0
|
||
},
|
||
"PollingInterval": {
|
||
"description": "The length of time a client should leave between checking the status of a paycode (in milliseconds).",
|
||
"type": "integer",
|
||
"minimum": 0,
|
||
"example": 0
|
||
},
|
||
"DesyncThreshold": {
|
||
"description": "Maximum deviation between server and client clock synchronization (in milliseconds). All requests will be rejected if the client is outwith this threshold.",
|
||
"type": "integer",
|
||
"minimum": 0
|
||
},
|
||
"AcceptEULA": {
|
||
"description": "If present, returns the new EULA version that the user must accept to continue.",
|
||
"$ref": "#/definitions/version"
|
||
}
|
||
},
|
||
"required": [
|
||
"code", "info", "SessionToken", "DeviceName", "SessionTimeout", "PayCodeTimeout",
|
||
"PollingInterval", "CallTimeout", "MerchantStatus", "ServerVersion", "PaymentMin",
|
||
"PaymentMax", "TipMin", "TipMax", "TransactionMin", "ClientDetailsSet",
|
||
"DesyncThreshold", "FeatureFlags"
|
||
]
|
||
},
|
||
"pendingHmacResponse": {
|
||
"description": "A pending HMAC needs to be accepted before further requests can be made.",
|
||
"type": "object",
|
||
"properties": {
|
||
"PendingHMAC": {
|
||
"description": "Returns a new secure HMAC key that should be used for all future requests. The client must call `/devices/{objectID}/rotatedHMAC` to confirm acceptance. All other commands will be rejected until the HMAC Key change has been confirmed.",
|
||
"$ref": "api_definitions.json#/definitions/hex256"
|
||
}
|
||
},
|
||
"required": [
|
||
"PendingHMAC"
|
||
]
|
||
}
|
||
}
|
||
} |