curl -sk -u <ADMIN_USERNAME>:<ADMIN_PASSWORD> -X POST \
"https://localhost:9443/api/server/v1/api-resources" \
-H "Content-Type: application/json" \
-d '{
"name": "Payments API",
"identifier": "payments_api",
"description": "UK Open Banking Payment Initiation (PISP) API - RAR authorization details types",
"requiresAuthorization": false,
"authorizationDetailsTypes": [
{
"type": "domestic_payment",
"name": "Domestic Payment Type",
"description": "Domestic single immediate payment initiation authorization details",
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"type": "object",
"additionalProperties": false,
"required": ["type", "Initiation"],
"properties": {
"type": { "type": "string", "const": "domestic_payment" },
"version": { "type": "string" },
"ReadRefundAccount": { "type": "string", "enum": ["No", "Yes"] },
"Permission": { "type": "string", "enum": ["Create"] },
"Initiation": {
"type": "object",
"additionalProperties": false,
"required": ["InstructionIdentification", "EndToEndIdentification", "InstructedAmount", "CreditorAccount"],
"properties": {
"InstructionIdentification": { "type": "string", "minLength": 1, "maxLength": 35 },
"EndToEndIdentification": { "type": "string", "minLength": 1, "maxLength": 35 },
"LocalInstrument": { "$ref": "#/$defs/LocalInstrument" },
"InstructedAmount": { "$ref": "#/$defs/ActiveCurrencyAndAmount" },
"DebtorAccount": { "$ref": "#/$defs/DebtorAccount" },
"CreditorAgent": { "$ref": "#/$defs/CreditorAgent" },
"CreditorAccount": { "$ref": "#/$defs/CreditorAccount" },
"CreditorPostalAddress": { "$ref": "#/$defs/PostalAddress" },
"UltimateCreditor": { "$ref": "#/$defs/UltimateParty" },
"UltimateDebtor": { "$ref": "#/$defs/UltimateParty" },
"RegulatoryReporting": { "type": "array", "items": { "$ref": "#/$defs/RegulatoryReporting" }, "maxItems": 10 },
"RemittanceInformation": { "$ref": "#/$defs/RemittanceInformation" },
"SupplementaryData": { "$ref": "#/$defs/SupplementaryData" }
}
},
"Authorisation": { "$ref": "#/$defs/Authorisation" },
"SCASupportData": { "$ref": "#/$defs/SCASupportData" },
"Risk": { "$ref": "#/$defs/Risk" }
},
"$defs": {
"CurrencyCode": { "type": "string", "pattern": "^[A-Z]{3,3}$" },
"CountryCode": { "type": "string", "pattern": "^[A-Z]{2,2}$" },
"LEI": { "type": "string", "pattern": "^[A-Z0-9]{18,18}[0-9]{2,2}$", "minLength": 1, "maxLength": 20 },
"AmountSimpleType": { "type": "string", "pattern": "^\\d{1,13}$|^\\d{1,13}\\.\\d{1,5}$" },
"ActiveCurrencyAndAmount": {
"type": "object", "additionalProperties": false, "required": ["Amount", "Currency"],
"properties": { "Amount": { "$ref": "#/$defs/AmountSimpleType" }, "Currency": { "$ref": "#/$defs/CurrencyCode" } }
},
"AccountSchemeName": { "type": "string", "enum": ["UK.OBIE.BBAN", "UK.OBIE.IBAN", "UK.OBIE.PAN", "UK.OBIE.Paym", "UK.OBIE.SortCodeAccountNumber", "UK.OBIE.Wallet"] },
"FinancialInstitutionSchemeName": { "type": "string", "enum": ["UK.OBIE.BICFI"] },
"LocalInstrument": { "type": "string", "enum": ["UK.OBIE.BACS", "UK.OBIE.BalanceTransfer", "UK.OBIE.CHAPS", "UK.OBIE.Euro1", "UK.OBIE.FPS", "UK.OBIE.Link", "UK.OBIE.MoneyTransfer", "UK.OBIE.Paym", "UK.OBIE.SEPACreditTransfer", "UK.OBIE.SEPAInstantCreditTransfer", "UK.OBIE.SWIFT", "UK.OBIE.Target2"] },
"AddressType": { "type": "string", "enum": ["BIZZ", "DLVY", "MLTO", "PBOX", "ADDR", "HOME", "CORR", "STAT"] },
"PostalAddress": {
"type": "object", "additionalProperties": false,
"properties": {
"AddressType": { "$ref": "#/$defs/AddressType" },
"Department": { "type": "string", "minLength": 1, "maxLength": 70 },
"SubDepartment": { "type": "string", "minLength": 1, "maxLength": 70 },
"StreetName": { "type": "string", "minLength": 1, "maxLength": 140 },
"BuildingNumber": { "type": "string", "minLength": 1, "maxLength": 16 },
"BuildingName": { "type": "string", "minLength": 1, "maxLength": 140 },
"Floor": { "type": "string", "minLength": 1, "maxLength": 70 },
"UnitNumber": { "type": "string", "minLength": 1, "maxLength": 16 },
"Room": { "type": "string", "minLength": 1, "maxLength": 70 },
"PostBox": { "type": "string", "minLength": 1, "maxLength": 16 },
"TownLocationName": { "type": "string", "minLength": 1, "maxLength": 140 },
"DistrictName": { "type": "string", "minLength": 1, "maxLength": 140 },
"CareOf": { "type": "string", "minLength": 1, "maxLength": 140 },
"PostCode": { "type": "string", "minLength": 1, "maxLength": 16 },
"TownName": { "type": "string", "minLength": 1, "maxLength": 140 },
"CountrySubDivision": { "type": "string", "minLength": 1, "maxLength": 35 },
"Country": { "$ref": "#/$defs/CountryCode" },
"AddressLine": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 70 }, "minItems": 0, "maxItems": 7 }
}
},
"DebtorAccount": {
"type": "object", "additionalProperties": false, "required": ["SchemeName", "Identification"],
"properties": {
"SchemeName": { "$ref": "#/$defs/AccountSchemeName" },
"Identification": { "type": "string", "minLength": 1, "maxLength": 256 },
"Name": { "type": "string", "minLength": 1, "maxLength": 350 },
"SecondaryIdentification": { "type": "string", "minLength": 1, "maxLength": 34 }
}
},
"CreditorAccount": {
"type": "object", "additionalProperties": false, "required": ["SchemeName", "Identification", "Name"],
"properties": {
"SchemeName": { "$ref": "#/$defs/AccountSchemeName" },
"Identification": { "type": "string", "minLength": 1, "maxLength": 256 },
"Name": { "type": "string", "minLength": 1, "maxLength": 350 },
"SecondaryIdentification": { "type": "string", "minLength": 1, "maxLength": 34 }
}
},
"CreditorAgent": {
"type": "object", "additionalProperties": false,
"properties": {
"SchemeName": { "$ref": "#/$defs/FinancialInstitutionSchemeName" },
"Identification": { "type": "string", "minLength": 1, "maxLength": 35 },
"Name": { "type": "string", "minLength": 1, "maxLength": 140 },
"LEI": { "$ref": "#/$defs/LEI" },
"PostalAddress": { "$ref": "#/$defs/PostalAddress" }
}
},
"UltimateParty": {
"type": "object", "additionalProperties": true,
"properties": {
"Name": { "type": "string", "minLength": 1, "maxLength": 140 },
"Identification": { "type": "string", "minLength": 1, "maxLength": 256 },
"LEI": { "$ref": "#/$defs/LEI" },
"SchemeName": { "$ref": "#/$defs/AccountSchemeName" },
"PostalAddress": { "$ref": "#/$defs/PostalAddress" }
}
},
"RegulatoryAuthority": {
"type": "object", "additionalProperties": true,
"properties": { "Name": { "type": "string", "minLength": 1, "maxLength": 140 }, "CountryCode": { "$ref": "#/$defs/CountryCode" } }
},
"StructuredRegulatoryReporting": {
"type": "object", "additionalProperties": true,
"properties": {
"Type": { "type": "string", "minLength": 1, "maxLength": 35 },
"Date": { "type": "string", "format": "date-time" },
"Country": { "$ref": "#/$defs/CountryCode" },
"Amount": { "$ref": "#/$defs/ActiveCurrencyAndAmount" },
"Information": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 35 } }
}
},
"RegulatoryReporting": {
"type": "object", "additionalProperties": true,
"properties": {
"DebitCreditReportingIndicator": { "type": "string", "enum": ["CRED", "DEBT", "BOTH"] },
"Authority": { "$ref": "#/$defs/RegulatoryAuthority" },
"Details": { "type": "array", "items": { "$ref": "#/$defs/StructuredRegulatoryReporting" } }
}
},
"ReferredDocumentInformation": {
"type": "object", "additionalProperties": true,
"properties": {
"Issuer": { "type": "string", "minLength": 1, "maxLength": 35 },
"Number": { "type": "string", "minLength": 1, "maxLength": 35 },
"RelatedDate": { "type": "string", "format": "date-time" }
}
},
"CreditorReferenceInformation": {
"type": "object", "additionalProperties": true,
"properties": {
"Issuer": { "type": "string", "minLength": 1, "maxLength": 35 },
"Reference": { "type": "string", "minLength": 1, "maxLength": 35 }
}
},
"RemittanceStructured": {
"type": "object", "additionalProperties": true,
"properties": {
"ReferredDocumentInformation": { "type": "array", "items": { "$ref": "#/$defs/ReferredDocumentInformation" } },
"ReferredDocumentAmount": { "$ref": "#/$defs/AmountSimpleType" },
"CreditorReferenceInformation": { "$ref": "#/$defs/CreditorReferenceInformation" },
"Invoicer": { "type": "string", "minLength": 1, "maxLength": 256 },
"Invoicee": { "type": "string", "minLength": 1, "maxLength": 256 },
"TaxRemittance": { "type": "string", "minLength": 1, "maxLength": 140 },
"AdditionalRemittanceInformation": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 140 }, "maxItems": 3 }
}
},
"RemittanceInformation": {
"type": "object", "additionalProperties": true,
"properties": {
"Structured": { "type": "array", "items": { "$ref": "#/$defs/RemittanceStructured" } },
"Unstructured": { "type": "array", "items": { "type": "string", "minLength": 1, "maxLength": 140 } }
}
},
"SupplementaryData": { "type": "object", "additionalProperties": true },
"Risk": {
"type": "object", "additionalProperties": false,
"properties": {
"PaymentContextCode": { "type": "string", "enum": ["BillingGoodsAndServicesInAdvance", "BillingGoodsAndServicesInArrears", "EcommerceMerchantInitiatedPayment", "FaceToFacePointOfSale", "TransferToSelf", "TransferToThirdParty", "BillPayment", "EcommerceGoods", "EcommerceServices", "PartyToParty", "PispPayee", "Other"] },
"MerchantCategoryCode": { "type": "string", "minLength": 3, "maxLength": 4 },
"MerchantCustomerIdentification": { "type": "string", "minLength": 1, "maxLength": 70 },
"ContractPresentIndicator": { "type": "boolean" },
"BeneficiaryPrepopulatedIndicator": { "type": "boolean" },
"DeliveryAddress": { "$ref": "#/$defs/PostalAddress" }
}
},
"Authorisation": {
"type": "object", "additionalProperties": false, "required": ["AuthorisationType"],
"properties": {
"AuthorisationType": { "type": "string", "enum": ["Any", "Single", "Multiple"] },
"CompletionDateTime": { "type": "string", "format": "date-time" }
}
},
"SCASupportData": {
"type": "object", "additionalProperties": true,
"properties": {
"RequestedSCAExemptionType": { "type": "string", "enum": ["BillPayment", "ContactlessTravel", "EcommerceGoods", "EcommerceServices", "Kiosk", "Parking", "PartyToParty"] },
"AppliedAuthenticationApproach": { "type": "string", "maxLength": 40, "enum": ["CA", "SCA"] },
"ReferencePaymentOrderId": { "type": "string", "minLength": 1, "maxLength": 40 }
}
}
}
}
}
]
}'
Description
When an OAuth2/OIDC authorization request includes a moderately large but entirely valid
authorization_detailspayload (Rich Authorization Requests, RFC 9396) - e.g. a fully-populated UK Open Banking domestic payment initiation object with nested Initiation/Risk/Authorisation/PostalAddress fields - session persistence during /authorize fails with a MySQL data truncation errorSteps to Reproduce
Register an API resource with the
domestic_paymentauthorization_details type — the full UK Open Banking Payment Initiation schema (uses internal$ref/$defs, same pattern as Issue 1):(Full schema also includes
CategoryPurposeCode,PaymentPurposeCode,CreditorReferenceCode,DocumentCode,ProxyCode,MandateClassification,ExtendedAccountType,Proxy,Creditor,ExchangeRateInformation,Frequency,MandateRelatedInformation$defs— trimmed here for brevity; none of them are exercised by the reproduction payload below.)Authorize an OAuth2 application (authorization_code grant) for this type:
Push the authorization request via PAR (
/oauth2/par), withauthorization_detailscarrying a single, realistic domestic payment instruction:This returns a
request_uriof the formurn:ietf:params:oauth:par:request_uri:<PAR_ID>.As a logged-in user (
cookies.txtfrom a prior authenticated login to this instance, same as Issues 1/2), authorize using thatrequest_uri:curl -sk -b cookies.txt \ "https://localhost:9443/oauth2/authorize?client_id=<CLIENT_ID>&request_uri=urn:ietf:params:oauth:par:request_uri:<PAR_ID>"Result: The
/authorizerequest fails; the server log shows:Please select the area issue is related to
API Access Mgt & Authorization
Version
7.3.0
Environment Details (with versions)
No response
Developer Checklist
impact/behavioral-changeadded7.2.0-migration)configadded