---
title: "Prepare Push Provisioning Bundle"
method: POST
path: "/issuers/{issuerId}/wallets/{walletIndicator}/preparePushProvisioningBundle"
---

# Prepare Push Provisioning Bundle

`POST /issuers/{issuerId}/wallets/{walletIndicator}/preparePushProvisioningBundle`

API used for requesting D1 Transit to prepare a push provisioning bundle that is going to be provided by Transit Issuer mobile app to Digital Wallet SDK eventually.<br/><br/> This request can be used in 3 different cases:<br/>
    1) initial provisioning: in such case, Transit Issuer shall neither provide cardAccountId nor digitalCardId. D1 Transit will create and return these identifiers in the response.<br/>
    2) retry failed provisioning: in case of provisioning failure, Transit Issuer may retry the provisioning, assuming there was no refund/cancellation of customer card account.<br/>
    In such case, both cardAccountId and digitalCardId shall be provided.<br/>
    3) restoring an existing cardAccount: in such case, Transit Issuer shall provide cardAccountId only. D1 Transit will assign new digitalCardId and return it along with cardAccountId in the response.<br/>

## Path parameters

- `issuerId` string, required
- `walletIndicator` number, required

## Request body

- PreparePushProvisioningBundleReq
  - `requestContext` RequestContext, required
    - `requestId` string, required — Request unique identifier. Should be different for every retry.
    - `correlationId` string, required — Random identifier which can be used to correlate the different API calls done as part of a usecase. There is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.
  - `cardAccountId` string — The Card Account Identifier. Unique for each card account.
  - `digitalCardId` string — Unique identifier of the digital card.
  - `pushDetails` union, required — pushDetails shall be consistent with the 'wallet indicator' parameter.<br/> I.e. ApplePushDetails shall be provided when 'wallet indicator' = 1, GooglePushDetails shall be provided when 'wallet indicator' = 2
    - ApplePushDetails
      - `certificates` string[], required — Leaf and intermediate certificates provided by Apple's servers.<br/>They're retrieved by the transit issuer app using <a href="https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller">PKAddPaymentPassViewController</a>
      - `nonce` string, required — A one-time nonce value generated by Apple's servers.<br/>It's retrieved by the transit issuer app using <a href="https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller">PKAddPaymentPassViewController</a>
      - `nonceSignature` string, required — A device-specific signature for the nonce.<br/>It's retrieved by the transit issuer app using <a href="https://developer.apple.com/documentation/passkit/pkaddpaymentpassviewcontroller">PKAddPaymentPassViewController</a>
    - GooglePushDetails
      - `walletId` string, required — Identifier of the active Google Wallet.<br/>It's retrieved by the transit issuer app using <a href="https://developers.google.com/pay/issuers/apis/push-provisioning/android/reading-wallet#getactivewalletid">getActiveWalletId</a> TapAndPay function.

## Response `200`

- PreparePushProvisioningBundleRes
  - `responseContext` ResponseContext, required — Should be used for most of responses, even if the request processing was not successful. If there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.
    - `requestId` string, required — requestId value from the corresponding request.
    - `statusCode` number, required
    - `statusMessage` string
  - `cardAccountId` string — The Card Account Identifier. Unique for each card account.
  - `digitalCardId` string — Unique identifier of the digital card.
  - `pushProvisioningBundle` string — Bundle generated as per Digital Wallet format specified in the request.<br/>It shall be used by the transit issuer app to trigger the provisioning. **Apple format**<br/> This is the string representation of JSON object defined as below: |Parameter name|Type|Description| |-------|-------|-------| |activationData|string|See https://developer.apple.com/documentation/passkit/pkaddpaymentpassrequest/activationdata| |encryptedPassData|string|See https://developer.apple.com/documentation/passkit/pkaddpaymentpassrequest/encryptedpassdata| |ephemeralPublicKey|string|See https://developer.apple.com/documentation/passkit/pkaddpaymentpassrequest/ephemeralpublickey| **Google format**<br/> This is the OpaquePaymentCard (OPC) as described in https://developers.google.com/pay/issuers/apis/push-provisioning/android/wallet-operations Not provided in case of error.

## Other responses

- `500` — An unexpected error occurred while processing the request.<br/> The request cannot be retried.<br/> Only used in cases where it's not be possible to provide more information about what went wrong with the request (i.e. return <b>HTTP 200</b> with '<b>responseContext</b>').
- `503` — Indicates that the system is unavailable.<br/> The request can be retried.

---

[API](https://skmtc.net/thalescloud/apis/d1-oauth-api.md) · [All operations](https://skmtc.net/thalescloud/apis/d1-oauth-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/thalescloud/d1-oauth-api/versions/96089514858c/schema)
