--- swagger: "2.0" info: title: NB Loans API description: Loans Swagger Specification version: 1.0.4 contact: name: Nedbank API Marketplace license: name: TBD x-ibm-name: nb-loans-api name: "" basePath: /nb-loans/v1 schemes: - https consumes: - application/json produces: - application/json - cc309236 paths: /loans/leads: put: summary: Save the leads data and return status operationId: Leads responses: 200: description: A successful response. schema: $ref: '#/definitions/LeadsResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: body in: body required: true schema: $ref: '#/definitions/LeadsRequest' tags: - LoansService security: - TPPOAuth2Security: - tpp_client_credential client_id: [] X-IBM-Client-Secret: [] /loans/getcaseid: get: summary: Returns the case id ans its status operationId: CaseId responses: 200: description: A successful response. schema: $ref: '#/definitions/CaseIdResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: x-nb-subscription-id type: string required: true in: header description: Intent id for this transaction tags: - LoansService security: - X-IBM-Client-Secret: [] client_id: [] TPPOAuth2Security: - tpp_client_credential /loans/customer-disburse: get: summary: Return the status of the loan to be disbursed to customer/TPP operationId: CustomerDisburse responses: 200: description: A successful response. schema: $ref: '#/definitions/CustomerDisburseResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/Authorization-Param' tags: - LoansService security: - X-IBM-Client-Secret: [] client_id: [] TPPOAuth2Security: - tpp_client_credential /loans/{caseId}/accept-offer: post: summary: Accept a selected loan offer operationId: AcceptLoanOffer responses: 200: description: A successful response. schema: $ref: '#/definitions/StatusResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' - name: body in: body required: true schema: $ref: '#/definitions/AcceptOfferRequest' tags: - LoansService /loans/{caseId}/accept-offer/status: get: responses: 200: description: A successful response. schema: $ref: '#/definitions/AcceptOfferResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' operationId: AcceptOfferStatus /loans/{caseId}/offers: get: summary: Calculate and return offers based on available information operationId: GetOffers responses: 200: description: A successful response. schema: $ref: '#/definitions/StatusResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' tags: - LoansService /loans/{caseId}/offers/status: get: summary: Calculate and return offers based on available information operationId: GetOffersStatus responses: 200: description: A successful response. schema: $ref: '#/definitions/LoanOffersResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' tags: - LoansService /loans/{caseId}/recalculate-offer: put: summary: Recalculate an offer based on updated information operationId: CalculateLoanOffer responses: 200: description: A successful response. schema: $ref: '#/definitions/RecalculateOfferResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' - name: body in: body required: true schema: $ref: '#/definitions/RecalculateOfferRequest' tags: - LoansService /cancel-loan: post: summary: Cancel the loan application operationId: CancelLoanApplication responses: 200: description: A successful response. schema: $ref: '#/definitions/CancelLoanResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: body in: body required: true schema: $ref: '#/definitions/CancelLoanRequest' tags: - LoansService /refund-loan: post: summary: Refund the provisioned loan operationId: RefundLoan responses: 200: description: A successful response. schema: $ref: '#/definitions/RefundLoanResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: body in: body required: true schema: $ref: '#/definitions/RefundLoanRequest' tags: - LoansService security: - TPPOAuth2Security: - tpp_client_credential client_id: [] X-IBM-Client-Secret: [] /loans/{caseId}/status: get: summary: Return the status of the requested loan operationId: LoanStatus responses: 200: description: A successful response. schema: $ref: '#/definitions/LoanStatusResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - $ref: '#/parameters/CaseId-Param' tags: - LoansService security: - X-IBM-Client-Secret: [] client_id: [] TPPOAuth2Security: - tpp_client_credential /loans/initialise-loan/status: get: responses: 200: description: A successful response. schema: $ref: '#/definitions/InitializeLoanResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' operationId: InitializeLoanApplicationStatus /loans/initialise-loan: post: summary: Initializes the loan application operationId: InitializeLoanApplication responses: 200: description: A successful response. schema: $ref: '#/definitions/StatusResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: body in: body required: true schema: $ref: '#/definitions/InitializeLoanRequest' tags: - LoansService /loans/initiate-debicheck/status: get: responses: 200: description: A successful response. schema: type: object properties: Status: description: status of debicheck mandate type: string 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' operationId: DebiCheckStatus tags: - LoansService /loans/initiate-debicheck: post: summary: Initiate debicheck mandate operationId: InitiateDebiCheck responses: 200: description: A successful response. schema: $ref: '#/definitions/StatusResponse' 400: description: Bad Request 401: description: Unauthorized 403: description: Forbidden 429: description: Too Many Requests 500: description: Internal Server Error parameters: - $ref: '#/parameters/x-fapi-financial-id-Param' - $ref: '#/parameters/x-fapi-customer-last-logged-time-Param' - $ref: '#/parameters/x-fapi-customer-ip-address-Param' - $ref: '#/parameters/x-fapi-interaction-id-Param' - $ref: '#/parameters/Authorization-Param' - $ref: '#/parameters/x-customer-user-agent-Param' - name: body in: body required: true schema: $ref: '#/definitions/InitiateDebiCheckRequest' tags: - LoansService parameters: x-fapi-financial-id-Param: in: header name: x-fapi-financial-id type: string required: true description: The unique id of the ASPSP to which the request is issued. The unique id will be issued by OB. x-fapi-customer-ip-address-Param: in: header name: x-fapi-customer-ip-address type: string required: false description: The PSU's IP address if the PSU is currently logged in with the TPP. x-fapi-interaction-id-Param: in: header name: x-fapi-interaction-id type: string required: false description: An RFC4122 UID used as a correlation id. x-fapi-customer-last-logged-time-Param: in: header name: x-fapi-customer-last-logged-time type: string required: false description: "The time when the PSU last logged in with the TPP. \nAll dates in the HTTP headers are represented as RFC 7231 Full Dates. An example is below: \nSun, 10 Sep 2017 19:43:31 UTC" pattern: ^(Mon|Tue|Wed|Thu|Fri|Sat|Sun), \d{2} (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) \d{4} \d{2}:\d{2}:\d{2} (GMT|UTC)$ Authorization-Param: in: header name: Authorization type: string required: true description: An Authorisation Token as per https://tools.ietf.org/html/rfc6750 x-customer-user-agent-Param: in: header name: x-customer-user-agent type: string description: Indicates the user-agent that the PSU is using. required: false CaseId-Param: in: path name: caseId type: integer required: true format: int64 description: Case ID returned from the initialize loan request for this specific application. definitions: LeadsResponseStatus: type: string enum: - SUCCESS - FAILED default: SUCCESS InitiateDebiCheckRequest: type: object properties: Data: $ref: '#/definitions/InitiateDebiCheckRequestDataMessage' InitiateDebiCheckRequestDataMessage: type: object properties: CaseId: type: string DebiCheckResponse: type: string enum: - SUCCESS - DECLINED default: SUCCESS LeadsRequest: type: object properties: Data: $ref: '#/definitions/LeadsRequestDataMessage' LeadsResponse: type: object properties: Data: $ref: '#/definitions/LeadsResponseDataMessage' LeadsRequestDataMessage: type: object required: - Name - Surname - IDNumber - Cellphone - ProcessID properties: Title: type: string Name: type: string Surname: type: string IDNumber: type: string Cellphone: type: string ProcessID: type: string Email: type: string Work: type: string Home: type: string ProductCode: type: integer format: int64 LeadsResponseDataMessage: type: object properties: Status: $ref: '#/definitions/LeadsResponseStatus' LeadID: type: string CaseIdResponse: type: object properties: Data: $ref: '#/definitions/CaseIdResponseDataMessage' CaseIdResponseDataMessage: type: object properties: CaseId: type: string Status: $ref: '#/definitions/CaseIdResponseStatus' CaseIdResponseStatus: type: string enum: - DATA_REQUIRED - LOAN_INITIALIZED - LOAN_DECLINED - LOAN_REJECTED_STAFF - OFFERS_NOT_GENERATED - EVIDENCE_REQUIRED - LOAN_ACCEPTED - LOAN_CALCULATED - LOAN_ALREADY_CALCULATED - LOAN_ALREADY_ACCEPTED - LOAN_PROCESS_FAILED - CANCEL_SUCCESS - CANCEL_FAILED default: CANCEL_SUCCESS StatusResponse: type: object properties: Data: $ref: '#/definitions/StatusResponseDataMessage' StatusResponseDataMessage: type: object properties: Status: $ref: '#/definitions/StatusEnum' StatusEnum: type: string enum: - IN_PROGRESS default: IN_PROGRESS CustomerDisburseResponse: type: object properties: Data: $ref: '#/definitions/CustomerDisburseResponseDataMessage' CustomerDisburseResponseDataMessage: type: object properties: Status: type: string enum: - SUCCESS - FAILED default: SUCCESS DisburseToCustomer: type: string default: "No" LoanStatusResponse: type: object properties: Data: $ref: '#/definitions/LoanStatusResponseDataMessage' LoanStatusResponseDataMessage: type: object properties: CaseId: type: string LoanAmount: type: number format: float DateTimeLoanProvisioned: type: string Status: type: string enum: - LOAN_STATUS_UNDEFINED - LOAN_DECLINED - LOAN_ACCEPTED default: LOAN_STATUS_UNDEFINED AcceptOfferRequestDataMessage: type: object properties: LoanDetails: $ref: '#/definitions/LoanDetails' EvidenceResponse: type: array items: $ref: '#/definitions/EvidenceResponse' AcceptOfferResponseDataMessage: type: object properties: Status: $ref: '#/definitions/AcceptLoanResponseStatus' EvidenceRequest: type: array items: $ref: '#/definitions/EvidenceRequest' LoanOffersResponseDataMessage: type: object properties: Status: $ref: '#/definitions/LoanResponseStatus' Finances: $ref: '#/definitions/Finances' Offers: type: array items: $ref: '#/definitions/CalculatedOffer' Items: type: array items: $ref: '#/definitions/RequiredItemsType' EvidenceRequest: type: array items: $ref: '#/definitions/EvidenceRequest' InitializeLoanRequestDataMessage: type: object properties: Amount: type: integer format: int64 ProductCode: type: integer format: int64 InitializeLoanResponseDataMessage: type: object properties: Status: $ref: '#/definitions/InitializeResponseStatus' Items: type: array items: $ref: '#/definitions/RequiredItemsType' CaseId: type: string RecalculateOfferRequestDataMessage: type: object properties: LoanDetails: $ref: '#/definitions/LoanDetails' RecalculateOfferResponseDataMessage: type: object properties: Status: $ref: '#/definitions/RecalculateResponseStatus' Offer: $ref: '#/definitions/CalculatedOffer' AcceptOfferRequest: type: object properties: Data: $ref: '#/definitions/AcceptOfferRequestDataMessage' AcceptOfferResponse: type: object properties: Data: $ref: '#/definitions/AcceptOfferResponseDataMessage' CalculatedOffer: type: object properties: RequestedLoanAmount: type: integer format: int64 OriginallyRequestedLoanAmount: type: integer format: int64 LoanPurposeType: type: integer format: int64 IsAppealAllowed: type: boolean format: boolean IsChangeAllowed: type: boolean format: boolean Repayment: $ref: '#/definitions/LoanRepayentDetails' Interest: $ref: '#/definitions/InterestDetails' Pricing: $ref: '#/definitions/ProductPricing' CrossSellDetails: $ref: '#/definitions/CrossSellDetails' Insurance: $ref: '#/definitions/Insurance' CrossSellDetails: type: object properties: Optionality: type: string AcceptanceStatus: type: string EvidenceRequest: type: object properties: Id: type: string FullText: type: string EvidenceResponse: type: object properties: Id: type: string Timestamp: type: string Response: type: string Fee: type: object properties: Currency: type: string Amount: type: number format: float Type: type: string Frequency: type: string Description: type: string Finances: type: object properties: Income: type: integer format: int32 Expenses: type: integer format: int32 DebtObligationTotal: type: integer format: int32 LoanOffersResponse: type: object properties: Data: $ref: '#/definitions/LoanOffersResponseDataMessage' InitializeLoanRequest: type: object properties: Data: $ref: '#/definitions/InitializeLoanRequestDataMessage' InitializeLoanResponse: type: object properties: Data: $ref: '#/definitions/InitializeLoanResponseDataMessage' Insurance: type: object properties: MonthlyInsurancePremium: type: number format: float InsuranceCommission: type: number format: float CostOfInsurance: type: number format: float CreditCostMultiple: type: number format: float InsuranceFlatFee: type: number format: float InterestDetails: type: object properties: Rate: type: number format: float Type: type: string FriendlyDescription: type: string IsStaffPreferentialRate: type: boolean format: boolean DecimalRate: type: number format: float LoanDetails: type: object properties: Amount: type: integer format: int64 Term: type: integer format: int64 LoanRepayentDetails: type: object properties: Currency: type: string CreditCostMultiple: type: number format: float MinAmount: type: number format: float MaxAmount: type: number format: float Amount: type: number format: float TotalFeeAndCreditCost: type: number format: float CreditAdvanced: type: number format: float Frequency: type: string TotalRepayment: type: number format: float BaseInstallmentAmount: type: number format: float TotalInstallmentAmount: type: number format: float TotalPaymentToLenders: type: number format: float ProductPricing: type: object properties: Fee: type: array items: $ref: '#/definitions/Fee' RecalculateOfferRequest: type: object properties: Data: $ref: '#/definitions/RecalculateOfferRequestDataMessage' RecalculateOfferResponse: type: object properties: Data: $ref: '#/definitions/RecalculateOfferResponseDataMessage' CancelLoanRequest: type: object properties: Data: $ref: '#/definitions/CancelLoanRequestCancelDataMessage' CancelLoanRequestCancelDataMessage: type: object properties: CaseId: type: string Reason: type: string CancelLoanResponse: type: object properties: Data: $ref: '#/definitions/CancelLoanResponseDataMessage' CancelLoanResponseDataMessage: type: object properties: Status: $ref: '#/definitions/CancelResponseStatus' CaseId: type: string RefundLoanRequest: type: object properties: Data: $ref: '#/definitions/RefundLoanRequestDataMessage' RefundLoanRequestDataMessage: type: object properties: CaseId: type: string OriginalAmount: type: number format: float AmountToRefund: type: number format: float DateTimeLoanProvisioned: type: string Reason: type: string RefundLoanResponse: type: object properties: Data: $ref: '#/definitions/RefundLoanResponseDataMessage' RefundLoanResponseDataMessage: type: object properties: Status: $ref: '#/definitions/RefundResponseStatus' CaseId: type: string RequiredItemsType: type: string enum: - DEMOGRAPHIC - RESIDENTIAL_ADDRESS - EMPLOYMENT - NATIONALITY - COUNTRY_OF_RESIDENCE - PLACE_OF_BIRTH - COUNTRY_OF_BIRTH - SOURCE_OF_INCOME - ID_DOCUMENT - XDS_QUESTIONS - FINANCIAL_DATA - FATCA - MARITAL_STATUS default: DEMOGRAPHIC LoanResponseStatus: type: string enum: - DATA_REQUIRED - LOAN_CALCULATED - LOAN_ALREADY_CALCULATED - LOAN_DECLINED - LOAN_ACCEPTED - LOAN_ALREADY_ACCEPTED - LOAN_PROCESS_FAILED default: DATA_REQUIRED AcceptLoanResponseStatus: type: string enum: - OFFERS_NOT_GENERATED - EVIDENCE_REQUIRED - LOAN_DECLINED - LOAN_ACCEPTED - LOAN_ALREADY_ACCEPTED - LOAN_PROCESS_FAILED default: OFFERS_NOT_GENERATED RecalculateResponseStatus: type: string enum: - LOAN_CALCULATED - LOAN_DECLINED - LOAN_PROCESS_FAILED default: LOAN_CALCULATED InitializeResponseStatus: type: string enum: - DATA_REQUIRED - LOAN_INITIALIZED - LOAN_DECLINED - LOAN_PROCESS_FAILED - LOAN_REJECTED_STAFF default: DATA_REQUIRED CancelResponseStatus: type: string enum: - CANCEL_SUCCESS - CANCEL_FAILED default: CANCEL_SUCCESS RefundResponseStatus: type: string enum: - REFUND_SUCCESS - REFUND_FAILED default: REFUND_FAILED x-ibm-configuration: enforced: true testable: true phase: realized securityDefinitions: PSUOAuth2Security: type: oauth2 description: OAuth flow, it is required when the PSU needs to perform SCA with the ASPSP when a TPP wants to access an ASPSP resource owned by the PSU flow: accessCode scopes: loans: Ability to read identity openid: cc314048 authorizationUrl: https://api.nedbank.co.za/apimarket/sandbox/oauth/oauth20/authorize tokenUrl: https://api.nedbank.co.za/apimarket/sandbox/nboauth/oauth20/token x-tokenIntrospect: url: https://api-market.nedsecure.nednet.co.za/mga/sps/oauth/oauth20/introspect X-IBM-Client-Secret: type: apiKey description: "" in: header name: X-IBM-Client-Secret client_id: type: apiKey description: "" in: header name: X-IBM-Client-Id TPPOAuth2Security: type: oauth2 flow: application tokenUrl: https://api.nedbank.co.za/apimarket/sandbox/nboauth/oauth20/token scopes: tpp_client_credential: TPP Client Credential Scope description: TPP client credential authorisation flow with the ASPSP x-tokenIntrospect: url: https://api-market.nedsecure.nednet.co.za/mga/sps/oauth/oauth20/introspect security: - X-IBM-Client-Secret: [] client_id: [] PSUOAuth2Security: - loans - openid x-ibm-endpoints: - endpointUrl: https://api.nedbank.co.za/apimarket/sandbox type: - production ...