Create sandbox card accounts
POST/v1/sandbox/card-accounts
Create a card account for use with testing in the sandbox api. customerNumber connects a customer as a owner to this account. However creating an account has different implications for private and corporate users.
Private customers will have this account automatically added to their agreement so it will show up in the account list for the user.
Corporate customers needs to add accounts to agreements explicitly through POST /v1/sandbox/agreements to see the account in the account list.
Request
Header Parameters
- keyId must be formatted as
keyId="SN=XXX,CA=YYY"
whereXXX
is the serial number of the signing certificate in hexadecimal encoding andYYY
is the full Distinguished Name of the Certificate Authority having certificate - algorithm must identify the same algorithm for the signature as presented in the signing certificate and should be
rsa-sha256
- headers must contain
date
,digest
,x-request-id
,psu-id
,psu-corporate-id
, andtpp-redirect-uri
when available - signature must be computed as
Base64(RSA-SHA256(signingString))
Advertises what type of data is actually sent.
Advertises which content types, expressed as MIME types, the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Type response header.
Advertises which character set the client is able to understand. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice within the Content-Type response header.
Advertises which content encoding, usually a compression algorithm, the client is able to understand. Using content negotiation, the server selects one of the proposals, uses it and informs the client of its choice with the Content-Encoding response header.
Advertises which natural languages the client is able to understand, and which locale variant is preferred. Using content negotiation, the server then selects one of the proposals, uses it and informs the client of its choice with the Content-Language response header.
The domain name of the server (for virtual hosting), and (optionally) the TCP port number on which the server is listening.
Request identifier, unique to the call, as determined by the TPP.
Base64 encoded sha256 or sha512 hash of the message body, used with the signature.
The Digest header is defined by RFC3230 and sha256/sha512 si defined by RFC5843.
The certificate used for signing the request in base64 encoding.
HTTP Message Signature as specified by https://tools.ietf.org/html/draft-cavage-http-signatures-10 with requirements imposed by Berlin Group's NextGenPSD2 Framework.
If any values in the Signature header is ISO-8859-1 or UTF-8 encoded you need to URL encode the Signature header according to RFC 2047 which means MIME encoding the signature.
Also the signature must be wrapped using this format: =?charset?encoding?encoded signature?=
Example of this encoding: =?utf-8?B?a2V5QTQsQ0E9Mi41LjQuOTc9IzB........jMTM1MDUzNDQ0ZTRmMmQ0NjUz?=
Java example of how to implement encoding:
if (charset.equals(StandardCharsets.UTF_8)) {
Signature = String.format("=?utf-8?B?%s?=", Base64.getEncoder().encodeToString(signature.getBytes(StandardCharsets.UTF_8)));
}
- application/json
Body
required
Array [
]
creditLimit
object
required
balances
object[]
required
balanceAmount
object
required
Possible values: [closingBooked
, expected
]
Possible values: [enabled
, deleted
, blocked
]
Responses
- 201
- application/json
- Schema
- Example (from schema)
- application/json;charset=utf-8
Schema
Array [
]
creditLimit
object
required
balances
object[]
required
balanceAmount
object
required
Possible values: [closingBooked
, expected
]
_links
object
required
self
object
required
transactions
object
required
{
"resourceId": "enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=",
"customerNumber": "01085800481",
"maskedPan": "1234xxxxxxxx4321",
"currency": "NOK",
"creditLimit": {
"amount": 1000,
"currency": "NOK"
},
"balances": [
{
"balanceAmount": {
"amount": 0,
"currency": "NOK"
},
"balanceType": "expected",
"referenceDate": "2020-01-01",
"lastChangeDateTime": "2019-05-16T14:41:09.824Z",
"lastCommittedTransaction": "test"
},
{
"balanceAmount": {
"amount": 0,
"currency": "NOK"
},
"balanceType": "closingBooked",
"referenceDate": "2020-01-01",
"lastChangeDateTime": "2019-05-16T14:41:09.824Z",
"lastCommittedTransaction": "test"
}
],
"cardId": "1",
"cardIdVNo": "2",
"accountNumber": "123412341234",
"expiry": "2020-01-01",
"name": "Test",
"product": "TEST-kort",
"status": "enabled",
"_links": {
"self": {
"href": "/v1/sandbox/card-accounts/enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=",
"verbs": [
"GET",
"DELETE"
]
},
"transactions": {
"href": "/v1/sandbox/card-accounts/enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=/transactions",
"verbs": [
"GET",
"POST",
"DELETE"
]
}
}
}
{
"resourceId": "enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=",
"customerNumber": "01085800481",
"maskedPan": "1234xxxxxxxx4321",
"currency": "NOK",
"creditLimit": {
"amount": 1000,
"currency": "NOK"
},
"balances": [
{
"balanceAmount": {
"amount": 0,
"currency": "NOK"
},
"balanceType": "expected",
"referenceDate": "2020-01-01",
"lastChangeDateTime": "2019-05-16T14:41:09.824Z",
"lastCommittedTransaction": "test"
},
{
"balanceAmount": {
"amount": 0,
"currency": "NOK"
},
"balanceType": "closingBooked",
"referenceDate": "2020-01-01",
"lastChangeDateTime": "2019-05-16T14:41:09.824Z",
"lastCommittedTransaction": "test"
}
],
"cardId": "1",
"cardIdVNo": "2",
"accountNumber": "123412341234",
"expiry": "2020-01-01",
"name": "Test",
"product": "TEST-kort",
"status": "enabled",
"_links": {
"self": {
"href": "/v1/sandbox/card-accounts/enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=",
"verbs": [
"GET",
"DELETE"
]
},
"transactions": {
"href": "/v1/sandbox/card-accounts/enc!!M5MQTDLY3RnbIjLCnqo8HFapV73e7PSqio3iv7FrR0Y-J_hxh33lth6UEU4yq3a5rwENWfNrZWQ-BesB8lBwEcKP9Sd4-1MotV9QAz_MSv0=/transactions",
"verbs": [
"GET",
"POST",
"DELETE"
]
},
"balances": {
"title": "BalancesLink",
"type": "object",
"description": "Update balances link",
"properties": {
"href": {
"type": "string"
},
"verbs": {
"type": "array",
"items": {
"type": "string",
"enum": [
"PUT"
]
}
}
},
"required": [
"href",
"verbs"
],
"example": {
"href": "/v1/sandbox/accounts/enc!!90hSjpSdpeftHiDSYiPaHVGoKHriD-6ARR4JlXcEebYbYa_WNwJvqevSrba4WtnD/balances",
"verbs": [
"PUT"
]
}
}
}
}