bridge-node-server/node_server/swagger_api/api_definitions.json
Martin Donnelly 57bd6c8e6a init
2018-06-24 21:15:03 +01:00

2001 lines
63 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"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"
]
}
}
}