v2.2-rc2 is not ratified and MUST NOT be used for production. Current: v2.1. Changelog
This is v2.2-rc2 — a release candidate for the v2.2 standards, published for review and not yet ratified. It MUST NOT be used as the basis for a production implementation. For the current standards, switch to v2.1 using the version selector. See the v2.1 → v2.2-rc2 changelog for every change in this version.
Products & Leads — Requirements v2.2-rc26 min read
The rules your Ozone Connect GET /products and POST /leads endpoints must follow. Read alongside the TPP Products and Leads requirements, which describe how TPPs call the API and present your products.
Products & Leads is not consent-based: a TPP holding the BDSP role calls it with a client_credentials token, and only while a customer is in a live session with the TPP. The API Hub validates the TPP's token, role, and request against the OpenAPI schema before it calls your Ozone Connect endpoints, so you do not re-validate them. The rules below cover what your endpoints must return.
Retrieve Products
/productsThe API Hub calls your Ozone Connect GET /products endpoint on behalf of a TPP to retrieve your product catalogue.
ProductCategory returns only products of that category; IsShariaCompliant returns only products whose IsShariaCompliant matches; LastUpdatedDateTime returns only products updated after that date and time.SortField (LastUpdatedDateTime or ProductId; default LastUpdatedDateTime) in SortOrder (asc or desc; default asc).page and page-size on every request. Return only the requested page, and populate meta.totalPages and meta.totalRecords for the full filtered result set.datadata MUST include LFIId, LFIBrandId, and Products — the products offered under that brand.ProductId, ProductName, and ProductCategory. ProductId MUST be unique to the product within your catalogue.Product MUST be returned for the product's ProductCategory: CurrentAccount → Product.CurrentAccount; SavingsAccount → Product.SavingsAccount; CreditCard → Product.CreditCard; Finance → Product.Finance; Mortgage → Product.Mortgage.Links.ApplicationUri, Links.ApplicationPhoneNumber, Links.ApplicationEmail, or Links.ApplicationDescription, so the TPP always has a way for the customer to apply. Where more than one is populated, TPPs treat ApplicationUri as the preferred channel.LastUpdatedDateTimeLastUpdatedDateTime filter and the default sort both depend on it.IsShariaCompliant on every product so the IsShariaCompliant filter is accurate. Where a product has been confirmed as Sharia-compliant, populate ShariaStructure with its Islamic finance contract type, and AlternativeBrandName and ShariaInformation where held.EffectiveFromDateTime, EffectiveToDateTime, and LastUpdatedDateTime MUST carry an explicit offset (e.g. 2027-07-22T00:00:00Z). You SHOULD emit UTC; the offset -00:00 MUST NOT be used. Apply the offset on the LastUpdatedDateTime query parameter — two encodings of the same instant MUST filter identically.Sharia-compliant product data. v2.2 adds a Sharia-compliant counterpart to each interest-based rate structure. Every field below is optional: an LFI with no Islamic products sends nothing new. Where you offer Islamic products, describe them with these fields rather than approximating them in the interest-based ones. See changelog §19.
Product.ExpectedProfitRatesRateType (FixedProfit or VariableProfit), DepositRateType, and RateDetails, and MAY include ProfitSharingRatio, ProfitDistributionMethod, ProfitDistributionFrequency, and Description.DepositRateTypeExpectedProfitRate for your projected return on a profit-sharing deposit, and IndicativeProfitRate where the rate is illustrative only. The two are not comparable, and TPPs rely on this field to tell them apart.Product.ShariaFinanceRatesRateType: FixedProfit, VariableProfit, or HybridProfit. ProfitCalculationMethod takes PrincipalBalance, OutstandingBalance, InitialDrawdownAmount, UnusedCreditLine, or UtilizedLimit.InterestCalculationMethod now describes interest only. Where a charge uses an Islamic calculation method, populate ProfitCalculationMethod instead.Product.TakafulRequired, Product.TakafulDescriptionTakafulRequired to true and describe the type and purpose of the cover in TakafulDescription (1–500 characters).Create a Lead
/leadsWhen a customer asks to be contacted about your products, the TPP submits a lead and the API Hub forwards it to your Ozone Connect POST /leads endpoint. The API Hub does not retain the lead: once you have responded, your systems hold the only copy.
POST /leads schema. Name, Email, EmiratesId, MarketingOptOut, and ProductCategories are always present; PhoneNumber, Nationality, ResidentialAddress, and LeadInformation are present when the customer provided them.201. The response data MUST include LeadId, Name, Email, EmiratesId, and MarketingOptOut.LeadIdProductCategoriesMarketingOptOuttrue, use the lead's details only to follow up on this request, not for marketing communications.EmiratesId matches ^784-?[0-9]{4}-?[0-9]{7}-?[0-9]{1}$ — the hyphens are optional, so the same ID can arrive in either form. GivenName, LastName, and FullName contain Latin letters, space, apostrophe, period, and hyphen only; BusinessName also allows digits, ampersand, comma, parentheses, and forward slash. AddressLine uses the ISO 20022 PostalAddress27 character set.EmiratesId in the responseEmiratesId MUST match the same pattern. Return the value as received.Error Responses
The API Hub maps your error responses to the TPP standard. Error bodies MUST carry an errorCode and an errorMessage.
400Resource.InvalidFormat or Body.InvalidFormat, or a namespaced code.500GenericRecoverableError where a retry may succeed; otherwise GenericError.