Protección

Requesting Data

Call the data endpoints with your sender-constrained token, the right FAPI headers, scopes, pagination, and error handling.

Requesting Data

With an active consent and a valid access token, you can call Protección's data endpoints. Protección validates the token binding and consent scope, then brokers the request to the resource server and returns the data.

Make a request

Present the access token as a bearer token, over mTLS with the same certificate the token is bound to, and include a fresh x-fapi-interaction-id.

curl --cert client.crt --key client.key \
  https://api.provider.fiskil.com/cds-au/v1/banking/accounts \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "x-fapi-interaction-id: 4f3d2c1b-0a9e-8d7c-6b5a-4938271605fe"
{
  "data": {
    "accounts": [
      {
        "accountId": "acc_001",
        "displayName": "Everyday account",
        "openStatus": "OPEN",
        "maskedNumber": "xxxx-xxxx-1234"
      }
    ]
  },
  "meta": { "totalRecords": 1, "totalPages": 1 }
}

FAPI headers

HeaderDirectionPurpose
x-fapi-interaction-idrequest & responseA UUID you generate per request; Protección echoes it. Log it — it correlates your call end to end for support.
x-fapi-auth-daterequestTimestamp of the customer's last authentication. Used for step-up decisions.
x-fapi-customer-ip-addressrequestThe customer's IP when the call is made in their presence. Supports fraud checks.

Always send and store x-fapi-interaction-id. When you contact support about a specific call, this ID is how it's traced across Protección and the resource server.

Scopes gate endpoints

Each endpoint requires the scope the customer consented to. A token missing the scope is rejected — request the right scopes at authorisation time.

EndpointRequired scope
GET /cds-au/v1/banking/accountsbank:accounts.basic:read
GET /cds-au/v1/banking/accounts/{id}/transactionsbank:transactions:read
GET /cds-au/v1/common/customercommon:customer.basic:read
GET /cds-au/v1/energy/accountsenergy:accounts.basic:read

Pagination

List endpoints page with page and page-size (max 1000 records per page). Read meta.totalPages to iterate.

curl --cert client.crt --key client.key \
  "https://api.provider.fiskil.com/cds-au/v1/banking/accounts/acc_001/transactions?page=1&page-size=100" \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "x-fapi-interaction-id: $(uuidgen)"

Refreshing tokens

Access tokens are short-lived (typically 15 minutes). Use the refresh_token from the token exchange to obtain a new access token without sending the customer back through consent — as long as the consent is still active.

curl -X POST --cert client.crt --key client.key \
  https://secure.proteccion.prod.provider.fiskil.com/connect/token \
  -d "grant_type=refresh_token" \
  -d "refresh_token=REFRESH_TOKEN" \
  -d "client_assertion_type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer" \
  -d "client_assertion=SIGNED_CLIENT_JWT"

Handling errors

StatusMeaningWhat to do
401Token missing, expired, or the presenting certificate doesn't match the binding.Refresh the token; confirm you're using the bound certificate.
403The consent lacks the scope, or X-Sharing-Refused: true is set.Check the consent's scopes and status; re-authorise if needed.
404The account or resource isn't part of this consent.Re-list consented account_ids.
422The resource server rejected the request shape.Validate query parameters against the reference.
429Rate limited.Back off and retry using the Retry-After header.

A 403 with the X-Sharing-Refused: true response header means the resource server declined to share this specific resource (for example, a joint account requiring all holders' approval). Treat it as a permanent refusal for that resource, not a transient error.

Performance expectations

Protección brokers to the resource server within CDR non-functional requirements — response times measured at the 95th percentile and 99.5% monthly availability.

Traffic tierTarget (95th percentile)
High-priority (customer present)1000 ms
Low-priority1500 ms
Unattended (batch)4000 ms
Large payload6000 ms

Next step