> For the complete documentation index, see [llms.txt](https://docs.payments.thalescloud.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.payments.thalescloud.io/transit-digitization/integrate-d1-transit-api/api-reference/outbound-api-from-d1-transit/provisioning-and-management-api.md).

# Provisioning and Management API

### Download OpenAPI specification

[D1-Transit-API-OUT-Provisioning-Management-oas3.yaml](https://openapi.gitbook.com/o/fwy1mtbRONGA2YDKDBr0/spec/D1-Transit-API-OUT-Provisioning-Management-oas3.yaml)

## Get Digital Card Bundle Data

> API used for fetching the data required to build the digital card bundle that will be provisioned into a device.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getDigitalCardBundleData":{"post":{"summary":"Get Digital Card Bundle Data","description":"API used for fetching the data required to build the digital card bundle that will be provisioned into a device.","operationId":"getDigitalCardBundleData","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDigitalCardBundleDataReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDigitalCardBundleDataRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetDigitalCardBundleDataReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"userId":{"$ref":"#/components/schemas/userId","description":"User unique identifier.<br/>Always provided for Apple."},"walletId":{"$ref":"#/components/schemas/walletId"},"deviceType":{"$ref":"#/components/schemas/deviceType"}},"required":["requestContext","digitalCardId","cardAccountId","walletId"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"userId":{"type":"string","description":"User unique identifier","maxLength":64},"walletId":{"type":"string","description":"Wallet unique identifier.<br/>Corresponds to unique device identifier for Apple and Samsung.<br/>Corresponds to unique identifier assigned for a given user and device for Google.","maxLength":64},"deviceType":{"type":"number","description":"Device type.\n|value|description|\n|-------|-------|\n|1|Phone|\n|2|Tablet|\n|3|Watch|\n|4-99|RFU|\n"},"GetDigitalCardBundleDataRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"persoData":{"type":"array","description":"Array of name/value pairs used to personalize the digital card bundle.<br/>Some values may require to be encrypted, please refer to https://docs.payments.thalescloud.io/transit-digitization/integrate-d1-transit-api/prepare-personalization-data","minItems":1,"items":{"type":"object","properties":{"name":{"type":"string","description":"Unique name of the data"},"value":{"type":"string","description":"Value of the data"}},"required":["name","value"]}},"metaData":{"type":"object","properties":{"displayCardValue":{"$ref":"#/components/schemas/displayCardValue"},"cardArtsId":{"$ref":"#/components/schemas/cardArtsId"},"productsList":{"type":"array","minItems":1,"items":{"type":"object","properties":{"productId":{"$ref":"#/components/schemas/productId"},"productType":{"$ref":"#/components/schemas/productType"},"displayName":{"$ref":"#/components/schemas/localizedString","description":"Localized product display name.\n"},"displayDetails":{"$ref":"#/components/schemas/localizedString","description":"Localized product display details.\n"},"fare":{"$ref":"#/components/schemas/fare","description":"Product fare.\n"},"validityParameters":{"$ref":"#/components/schemas/productValidityParameters","description":"Product validity parameters.\n"},"eligibleForTopup":{"$ref":"#/components/schemas/eligibleForTopup"},"renewalPeriod":{"$ref":"#/components/schemas/renewalPeriod"}},"required":["productId","productType","displayName"]}}},"required":["displayCardValue","productsList"]}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"displayCardValue":{"type":"string","description":"Value of the card to be displayed to the user.","minLength":1,"maxLength":20},"cardArtsId":{"type":"string","description":"Identifier referencing card arts configuration used for this card.<br/>Default value configured during onboarding is used if this parameter is not provided.","maxLength":64},"productId":{"type":"string","description":"Product unique identifier","maxLength":64},"productType":{"type":"string","enum":["stored-value","count-based","time-based"],"description":"Product type.<br/>It can be either:<ul><li><b>stored-value</b>, for example: e-purse, balance<li><b>count-based</b>, for example: carnet of tickets<li><b>time-based</b>, for example: weekly pass</ul>\n"},"localizedString":{"type":"object","properties":{"defaultValue":{"type":"string","description":"Default value to be used if no appropriate  translation is available"},"translatedValues":{"type":"array","description":"Array of localized values","items":{"type":"object","properties":{"value":{"type":"string","description":"Localized value"},"language":{"type":"string","description":"Language tag as per <a href=\"https://datatracker.ietf.org/doc/html/rfc5646\">RFC 5646</a>"}},"required":["value","language"]}}},"required":["defaultValue"]},"fare":{"type":"object","properties":{"fareId":{"type":"string","description":"Identifier to match to GTFS feed exposed by transit issuer.\n"},"fareClass":{"type":"string","description":"Fare class."},"concession":{"type":"string","description":"Concession classification."},"concessionExpiry":{"type":"string","description":"Concession expiry date and time.<br/>\nShould be provided when it's meaningful (e.g. student, under 25...)\n","format":"date-time"}}},"productValidityParameters":{"type":"object","properties":{"numberOfTrips":{"$ref":"#/components/schemas/numberOfTrips"},"timeLimits":{"$ref":"#/components/schemas/timeLimits"},"validityAfterTapIn":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product is valid from when you first tap-in."},"validityAfterTapOut":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product can be used for after tap-out."},"zoneLimits":{"type":"object","properties":{"fromZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the start of the trip."},"toZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the end of the trip."}}},"stationLimits":{"type":"object","properties":{"fromStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."},"toStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."}}},"topupLimits":{"type":"object","properties":{"minAmount":{"type":"number","description":"The minimum amount a user can topup at a time.","format":"float"},"maxAmount":{"type":"number","description":"The maximum amount a user can topup at a time.","format":"float"}}}}},"numberOfTrips":{"type":"number","description":"Number of trips a product can be used for."},"timeLimits":{"type":"object","description":"Specific time window within which the product is valid.","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},"timePeriod":{"type":"object","properties":{"timeUnit":{"type":"string","enum":["second","minute","hour","day","week","month","year"]},"value":{"type":"number","description":"Number of time units this period covers."}}},"zone":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up zone/region details on a separately shared zone/region list.\n"},"displayName":{"type":"string","description":"Default zone/region name that can be displayed to the user.\n"}}},"station":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up station details on a separately shared station list.\n"},"displayName":{"type":"string","description":"Default station name that can be displayed to the user.\n"}}},"eligibleForTopup":{"type":"boolean","description":"Indicates that a top-up can be done for this product.<br/>Applies to **stored-value** products.\n","default":true},"renewalPeriod":{"type":"object","description":"Period of time when a product can be renewed.<br/>Applies to **time-based** products.\n","properties":{"startTime":{"type":"string","description":"Indicates that a product can be renewed after that date.\n","format":"date-time"},"relativeStartTime":{"type":"integer","minimum":1,"description":"Offset expressed in seconds.<br/>The product can be renewed \"relativeStartTime\" seconds before its expiration date.<br/>If a value is provided for **startTime**, this parameter will be ignored."},"unavailableBeforeReason":{"type":"string","description":"Indicates why a product cannot be renewed before the renewal starting time."},"endTime":{"type":"string","description":"Indicates that a product can be renewed before that date.\n","format":"date-time"},"relativeEndTime":{"type":"integer","minimum":1,"description":"Offset expressed in seconds.<br/>The product can be renewed \"relativeEndTime\" seconds after its expiration date.<br/>If a value is provided for **endTime**, this parameter will be ignored."},"unavailableAfterReason":{"type":"string","description":"Indicates why a product cannot be renewed after the renewal ending time."}}}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Notify Digital Card Event

> API used for notifying events:\<ul>\<li>provisioning\<li>lifecycle\<li>digital card bundle update (CBT only)

````json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/notifyDigitalCardEvent":{"post":{"summary":"Notify Digital Card Event","description":"API used for notifying events:<ul><li>provisioning<li>lifecycle<li>digital card bundle update (CBT only)","operationId":"notifyDigitalCardEvent","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyDigitalCardEventReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotifyDigitalCardEventRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"NotifyDigitalCardEventReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"walletId":{"$ref":"#/components/schemas/walletId"},"userId":{"$ref":"#/components/schemas/userId","description":"User unique identifier.<br/>Always provided for Apple."},"deviceType":{"$ref":"#/components/schemas/deviceType"},"event":{"type":"string","enum":["provisioning_success","provisioning_failure","lifecycle_success","lifecycle_failure","update_bundle_success","update_bundle_failure","update_bundle_data_success","update_bundle_data_failure","retrieve_bundle_data_success","retrieve_bundle_data_failure"]},"eventData":{"type":"object","description":"Object containing contextual information based on ```event``` value.<br/>For **Calypso** card technology, in case of ```provisioning_success```, it will contain the CSN: ```{\"csn\":\"000000006818F4EB\"}```<br/><br/>In case of failure, it may contain ```statusCode``` and ```statusMessage``` to provide more details:<br/>```{\"statusCode\":431,\"statusMessage\":\"Error XYZ\"}```\n"},"digitalCardBundle":{"$ref":"#/components/schemas/digitalCardBundle"}},"required":["requestContext","digitalCardId","cardAccountId","event"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"walletId":{"type":"string","description":"Wallet unique identifier.<br/>Corresponds to unique device identifier for Apple and Samsung.<br/>Corresponds to unique identifier assigned for a given user and device for Google.","maxLength":64},"userId":{"type":"string","description":"User unique identifier","maxLength":64},"deviceType":{"type":"number","description":"Device type.\n|value|description|\n|-------|-------|\n|1|Phone|\n|2|Tablet|\n|3|Watch|\n|4-99|RFU|\n"},"digitalCardBundle":{"type":"string","description":"Last known state of the digital card bundle.<br/>Applicable to CBT only."},"NotifyDigitalCardEventRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
````

## Manage Digital Card

> API used for managing digital cards state change trigger by Digital Wallets.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/manageDigitalCard":{"post":{"summary":"Manage Digital Card","description":"API used for managing digital cards state change trigger by Digital Wallets.","operationId":"manageDigitalCard","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManageDigitalCardReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ManageDigitalCardRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"ManageDigitalCardReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"action":{"type":"string","enum":["unlink","suspend","resume","delete"]},"initiator":{"type":"string","description":"Indicates whether the action is initiated from the device or via cloud interface.<br/>Applicable to 'unlink' action and CBT only.","enum":["device","cloud"]}},"required":["requestContext","digitalCardId","cardAccountId","action"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"ManageDigitalCardRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Get Card Account Metadata

> API used for getting the metadata of an account.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getCardAccountMetadata":{"post":{"summary":"Get Card Account Metadata","description":"API used for getting the metadata of an account.","operationId":"getCardAccountMetadata","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCardAccountMetadataReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCardAccountMetadataRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetCardAccountMetadataReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"}},"required":["requestContext","cardAccountId"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"GetCardAccountMetadataRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"displayCardValue":{"$ref":"#/components/schemas/displayCardValue"},"cardArtsId":{"$ref":"#/components/schemas/cardArtsId"},"productsList":{"type":"array","description":"List of products attached to the card account.<br/>It should be ordered as in some cases, the first item of the list may be used for display purpose.<br/>For example, user will only see the first item of the list for identifying which card account will be restored in Apple case. \n","minItems":1,"items":{"type":"object","properties":{"productId":{"$ref":"#/components/schemas/productId"},"productType":{"$ref":"#/components/schemas/productType"},"displayName":{"$ref":"#/components/schemas/localizedString","description":"Localized product display name.\n"},"displayDetails":{"$ref":"#/components/schemas/localizedString","description":"Localized product display details.\n"},"fare":{"$ref":"#/components/schemas/fare","description":"Product fare.\n"},"lastUpdatedTime":{"type":"string","description":"Last known date and time of the product value update.\n","format":"date-time"},"purchaseDetails":{"$ref":"#/components/schemas/purchaseDetails","description":"Product purchase details.\n"},"validityParameters":{"$ref":"#/components/schemas/productValidityParameters","description":"Product validity parameters.\n"},"renewalPeriod":{"$ref":"#/components/schemas/renewalPeriod"},"balanceDetails":{"$ref":"#/components/schemas/balanceDetails"},"eligibleForTopup":{"$ref":"#/components/schemas/eligibleForTopup"}},"required":["productId","productType","displayName","lastUpdatedTime"]}}},"required":["responseContext","displayCardValue"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"displayCardValue":{"type":"string","description":"Value of the card to be displayed to the user.","minLength":1,"maxLength":20},"cardArtsId":{"type":"string","description":"Identifier referencing card arts configuration used for this card.<br/>Default value configured during onboarding is used if this parameter is not provided.","maxLength":64},"productId":{"type":"string","description":"Product unique identifier","maxLength":64},"productType":{"type":"string","enum":["stored-value","count-based","time-based"],"description":"Product type.<br/>It can be either:<ul><li><b>stored-value</b>, for example: e-purse, balance<li><b>count-based</b>, for example: carnet of tickets<li><b>time-based</b>, for example: weekly pass</ul>\n"},"localizedString":{"type":"object","properties":{"defaultValue":{"type":"string","description":"Default value to be used if no appropriate  translation is available"},"translatedValues":{"type":"array","description":"Array of localized values","items":{"type":"object","properties":{"value":{"type":"string","description":"Localized value"},"language":{"type":"string","description":"Language tag as per <a href=\"https://datatracker.ietf.org/doc/html/rfc5646\">RFC 5646</a>"}},"required":["value","language"]}}},"required":["defaultValue"]},"fare":{"type":"object","properties":{"fareId":{"type":"string","description":"Identifier to match to GTFS feed exposed by transit issuer.\n"},"fareClass":{"type":"string","description":"Fare class."},"concession":{"type":"string","description":"Concession classification."},"concessionExpiry":{"type":"string","description":"Concession expiry date and time.<br/>\nShould be provided when it's meaningful (e.g. student, under 25...)\n","format":"date-time"}}},"purchaseDetails":{"type":"object","properties":{"purchaseId":{"$ref":"#/components/schemas/purchaseId"},"purchaseTime":{"type":"string","description":"Purchase date and time of the product.","format":"date-time"},"price":{"$ref":"#/components/schemas/amount","description":"Price of the product"},"currencyCode":{"$ref":"#/components/schemas/currencyCode"},"repurchaseUrl":{"type":"string","description":"URL to allow the repurchase of the product"},"refundUrl":{"type":"string","description":"URL to allow the refund of the product"}}},"purchaseId":{"type":"string","description":"Purchase unique identifier","maxLength":64},"amount":{"type":"number","description":"Amount","format":"float"},"currencyCode":{"type":"string","description":"The 3-letter currency code defined in ISO 4217","pattern":"^[A-Za-z]{3}$"},"productValidityParameters":{"type":"object","properties":{"numberOfTrips":{"$ref":"#/components/schemas/numberOfTrips"},"timeLimits":{"$ref":"#/components/schemas/timeLimits"},"validityAfterTapIn":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product is valid from when you first tap-in."},"validityAfterTapOut":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product can be used for after tap-out."},"zoneLimits":{"type":"object","properties":{"fromZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the start of the trip."},"toZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the end of the trip."}}},"stationLimits":{"type":"object","properties":{"fromStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."},"toStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."}}},"topupLimits":{"type":"object","properties":{"minAmount":{"type":"number","description":"The minimum amount a user can topup at a time.","format":"float"},"maxAmount":{"type":"number","description":"The maximum amount a user can topup at a time.","format":"float"}}}}},"numberOfTrips":{"type":"number","description":"Number of trips a product can be used for."},"timeLimits":{"type":"object","description":"Specific time window within which the product is valid.","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},"timePeriod":{"type":"object","properties":{"timeUnit":{"type":"string","enum":["second","minute","hour","day","week","month","year"]},"value":{"type":"number","description":"Number of time units this period covers."}}},"zone":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up zone/region details on a separately shared zone/region list.\n"},"displayName":{"type":"string","description":"Default zone/region name that can be displayed to the user.\n"}}},"station":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up station details on a separately shared station list.\n"},"displayName":{"type":"string","description":"Default station name that can be displayed to the user.\n"}}},"renewalPeriod":{"type":"object","description":"Period of time when a product can be renewed.<br/>Applies to **time-based** products.\n","properties":{"startTime":{"type":"string","description":"Indicates that a product can be renewed after that date.\n","format":"date-time"},"relativeStartTime":{"type":"integer","minimum":1,"description":"Offset expressed in seconds.<br/>The product can be renewed \"relativeStartTime\" seconds before its expiration date.<br/>If a value is provided for **startTime**, this parameter will be ignored."},"unavailableBeforeReason":{"type":"string","description":"Indicates why a product cannot be renewed before the renewal starting time."},"endTime":{"type":"string","description":"Indicates that a product can be renewed before that date.\n","format":"date-time"},"relativeEndTime":{"type":"integer","minimum":1,"description":"Offset expressed in seconds.<br/>The product can be renewed \"relativeEndTime\" seconds after its expiration date.<br/>If a value is provided for **endTime**, this parameter will be ignored."},"unavailableAfterReason":{"type":"string","description":"Indicates why a product cannot be renewed after the renewal ending time."}}},"balanceDetails":{"type":"object","description":"Product balance details.\n","properties":{"amount":{"$ref":"#/components/schemas/amount"},"currencyCode":{"$ref":"#/components/schemas/currencyCode"}}},"eligibleForTopup":{"type":"boolean","description":"Indicates that a top-up can be done for this product.<br/>Applies to **stored-value** products.\n","default":true}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Purchase Products

> API used to request the purchase of products initiated from Digital Wallets.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/purchaseProducts":{"post":{"summary":"Purchase Products","description":"API used to request the purchase of products initiated from Digital Wallets.","operationId":"purchaseProducts","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseProductsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PurchaseProductsRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"PurchaseProductsReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"userId":{"$ref":"#/components/schemas/userId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"orderId":{"type":"string","description":"Order unique identifier","maxLength":64},"purchaseItems":{"type":"array","minItems":1,"items":{"oneOf":[{"$ref":"#/components/schemas/PurchasableProduct"},{"$ref":"#/components/schemas/ExistingProduct"}]}},"paymentCredentials":{"type":"object","description":"Payment credentials encrypted with PSP key.         \nClear format is defined as per wallet specification [here](https://docs.payments.thalescloud.io/transit-digitization/get-started/concepts/payments).            \n"},"totalAmount":{"$ref":"#/components/schemas/amount"},"currencyCode":{"$ref":"#/components/schemas/currencyCode"}},"required":["requestContext","cardAccountId","digitalCardId","orderId","purchaseItems","paymentCredentials","totalAmount","currencyCode"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"userId":{"type":"string","description":"User unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"PurchasableProduct":{"type":"object","title":"PurchasableProduct","properties":{"purchasableProductId":{"$ref":"#/components/schemas/productId"},"amount":{"$ref":"#/components/schemas/amount"}},"required":["purchasableProductId","amount"]},"productId":{"type":"string","description":"Product unique identifier","maxLength":64},"amount":{"type":"number","description":"Amount","format":"float"},"ExistingProduct":{"type":"object","title":"ExistingProduct","properties":{"existingProductId":{"$ref":"#/components/schemas/productId"},"amount":{"$ref":"#/components/schemas/amount"}},"required":["existingProductId","amount"]},"currencyCode":{"type":"string","description":"The 3-letter currency code defined in ISO 4217","pattern":"^[A-Za-z]{3}$"},"PurchaseProductsRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"purchaseId":{"$ref":"#/components/schemas/purchaseId"}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"purchaseId":{"type":"string","description":"Purchase unique identifier","maxLength":64}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Get Purchasable Products

> API used for fetching the list of purchasable products.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getPurchasableProducts":{"post":{"summary":"Get Purchasable Products","description":"API used for fetching the list of purchasable products.","operationId":"getPurchasableProducts","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPurchasableProductsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetPurchasableProductsRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetPurchasableProductsReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId","description":"Card account unique identifier.<br/>\nNot provided when Google is fetching the list of purchasable products for initial provisionings (done on daily basis).\n<br/>Always provided otherwise.\n"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"productId":{"$ref":"#/components/schemas/productId","description":"Unique identifier of a time based product.<br/>Provided when checking renewal options of this product.\n"},"digitalCardBundle":{"$ref":"#/components/schemas/digitalCardBundle"}},"required":["requestContext"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"productId":{"type":"string","description":"Product unique identifier","maxLength":64},"digitalCardBundle":{"type":"string","description":"Last known state of the digital card bundle.<br/>Applicable to CBT only."},"GetPurchasableProductsRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"purchasableProducts":{"type":"array","description":"List of purchasable products.<br/>It shall not contain more than 1 item if **productId** is provided in the request.\n","items":{"type":"object","properties":{"productId":{"$ref":"#/components/schemas/productId","description":"Product unique identifier.<br/>It shall be the **productId** value from the request if it's provided. \n"},"productType":{"$ref":"#/components/schemas/productType"},"displayName":{"$ref":"#/components/schemas/localizedString"},"displayDetails":{"$ref":"#/components/schemas/localizedString"},"salePeriod":{"type":"object","properties":{"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"}}},"prices":{"$ref":"#/components/schemas/productPrices"},"fare":{"$ref":"#/components/schemas/fare"},"validityParameters":{"$ref":"#/components/schemas/productValidityParameters"},"eligibleForTopup":{"$ref":"#/components/schemas/eligibleForTopup"}},"required":["productId","productType","displayName","prices"]}}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"productType":{"type":"string","enum":["stored-value","count-based","time-based"],"description":"Product type.<br/>It can be either:<ul><li><b>stored-value</b>, for example: e-purse, balance<li><b>count-based</b>, for example: carnet of tickets<li><b>time-based</b>, for example: weekly pass</ul>\n"},"localizedString":{"type":"object","properties":{"defaultValue":{"type":"string","description":"Default value to be used if no appropriate  translation is available"},"translatedValues":{"type":"array","description":"Array of localized values","items":{"type":"object","properties":{"value":{"type":"string","description":"Localized value"},"language":{"type":"string","description":"Language tag as per <a href=\"https://datatracker.ietf.org/doc/html/rfc5646\">RFC 5646</a>"}},"required":["value","language"]}}},"required":["defaultValue"]},"productPrices":{"type":"object","properties":{"totalCost":{"type":"number","description":"Total cost of the product.","format":"float"},"currencyCode":{"$ref":"#/components/schemas/currencyCode"},"receiptItems":{"type":"array","description":"List of individual receipt item for that product.\n","items":{"type":"object","properties":{"costType":{"type":"string","enum":["tax","card_price","product_price","discount"]},"amount":{"$ref":"#/components/schemas/amount"}}}}},"required":["totalCost","currencyCode"]},"currencyCode":{"type":"string","description":"The 3-letter currency code defined in ISO 4217","pattern":"^[A-Za-z]{3}$"},"amount":{"type":"number","description":"Amount","format":"float"},"fare":{"type":"object","properties":{"fareId":{"type":"string","description":"Identifier to match to GTFS feed exposed by transit issuer.\n"},"fareClass":{"type":"string","description":"Fare class."},"concession":{"type":"string","description":"Concession classification."},"concessionExpiry":{"type":"string","description":"Concession expiry date and time.<br/>\nShould be provided when it's meaningful (e.g. student, under 25...)\n","format":"date-time"}}},"productValidityParameters":{"type":"object","properties":{"numberOfTrips":{"$ref":"#/components/schemas/numberOfTrips"},"timeLimits":{"$ref":"#/components/schemas/timeLimits"},"validityAfterTapIn":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product is valid from when you first tap-in."},"validityAfterTapOut":{"$ref":"#/components/schemas/timePeriod","description":"Time period for which a product can be used for after tap-out."},"zoneLimits":{"type":"object","properties":{"fromZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the start of the trip."},"toZone":{"$ref":"#/components/schemas/zone","description":"Zone for which a product is valid for the end of the trip."}}},"stationLimits":{"type":"object","properties":{"fromStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."},"toStation":{"$ref":"#/components/schemas/station","description":"Station for which a product is valid for the start of the trip."}}},"topupLimits":{"type":"object","properties":{"minAmount":{"type":"number","description":"The minimum amount a user can topup at a time.","format":"float"},"maxAmount":{"type":"number","description":"The maximum amount a user can topup at a time.","format":"float"}}}}},"numberOfTrips":{"type":"number","description":"Number of trips a product can be used for."},"timeLimits":{"type":"object","description":"Specific time window within which the product is valid.","properties":{"startTime":{"type":"string","format":"date-time"},"endTime":{"type":"string","format":"date-time"}}},"timePeriod":{"type":"object","properties":{"timeUnit":{"type":"string","enum":["second","minute","hour","day","week","month","year"]},"value":{"type":"number","description":"Number of time units this period covers."}}},"zone":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up zone/region details on a separately shared zone/region list.\n"},"displayName":{"type":"string","description":"Default zone/region name that can be displayed to the user.\n"}}},"station":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up station details on a separately shared station list.\n"},"displayName":{"type":"string","description":"Default station name that can be displayed to the user.\n"}}},"eligibleForTopup":{"type":"boolean","description":"Indicates that a top-up can be done for this product.<br/>Applies to **stored-value** products.\n","default":true}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Register Card Account

> API used for registering a card account and binding it with an existing EMV tokenId.\<br/>\*\*This API is only applicable to Google Transit Insights (GTI).\*\*

````json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/registerCardAccount":{"post":{"summary":"Register Card Account","description":"API used for registering a card account and binding it with an existing EMV tokenId.<br/>**This API is only applicable to Google Transit Insights (GTI).**","operationId":"registerCardAccount","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterCardAccountReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterCardAccountRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"RegisterCardAccountReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"tokenData":{"type":"string","description":"Encrypted Token Data about the token the user wants to register.<br/> It is encrypted using the JWE encryption (please refer to [Encrypt Sensitive Data](https://docs.payments.thalescloud.io/transit-digitization/integrate-d1-transit-api/encrypt-sensitive-data) section for more details).<br/>\nThe JSON object that is encrypted is defined as follows:\n|JSON field parameter name|description|\n|-------|-------|\n|pan|The token PAN value (up to 19 numeric digits)|\n|expiryMonth|The expiry month of the token in MM format|\n|expiryYear|The expiry year of the token in YYYY format|\n"},"tokenId":{"$ref":"#/components/schemas/tokenId","description":"Token unique identifier.<br/>Provided only in case of re-registration."}},"required":["requestContext","cardAccountId","digitalCardId","tokenData"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"tokenId":{"type":"string","description":"Token unique identifier","maxLength":64},"RegisterCardAccountRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"tokenId":{"$ref":"#/components/schemas/tokenId","description":"Token unique identifier.<br/>It's the value identified by payment gateway thanks to ```tokenData``` provided as input."}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
````

## Get Digital Card Bundle Commands

> API used for fetching the commands required to update/read a digital card bundle provisioned within a device.\<br/>Transit Issuer has to return the list of commands that needs to be executed on the device after checking the previous commands responses.\<br/>\<br/>\*\*This API is only applicable to CBT.\*\*

````json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getDigitalCardBundleCommands":{"post":{"summary":"Get Digital Card Bundle Commands","description":"API used for fetching the commands required to update/read a digital card bundle provisioned within a device.<br/>Transit Issuer has to return the list of commands that needs to be executed on the device after checking the previous commands responses.<br/><br/>**This API is only applicable to CBT.**","operationId":"getDigitalCardBundleCommands","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDigitalCardBundleCommandsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetDigitalCardBundleCommandsRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetDigitalCardBundleCommandsReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"responses":{"type":"array","description":"Responses of the commands executed on the device.\n","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the command that has been executed.\n"},"value":{"type":"string","description":"Command response."}}}},"incompletedExecution":{"type":"boolean","description":"Flag indicating that the commands from previous ```responses``` array were not all executed successfully.\n"}},"required":["requestContext","digitalCardId","cardAccountId"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"GetDigitalCardBundleCommandsRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"commands":{"type":"array","description":"List of commands to be executed on the device.","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","description":"ID of the command to be executed."},"value":{"type":"string","description":"Value of the command."}}}}},"required":["responseContext"]},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
````

## Get Transactions

> API used to fetch transaction and balance details from the Transit Issuer.\<br/>\<br/>\*\*This API is only applicable to ABT.\*\*

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getTransactions":{"post":{"summary":"Get Transactions","description":"API used to fetch transaction and balance details from the Transit Issuer.<br/><br/>**This API is only applicable to ABT.**","operationId":"getTransactions","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTransactionsReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetTransactionsRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetTransactionsReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"lastUpdatedTime":{"type":"string","description":"Value that should be used to provide updates that occurred since that time.\n","format":"date-time"}},"required":["requestContext","cardAccountId"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"GetTransactionsRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"transactions":{"type":"array","items":{"$ref":"#/components/schemas/Transaction"}}}},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"Transaction":{"type":"object","title":"Transaction","properties":{"transactionId":{"type":"string","description":"Transaction unique identifier","maxLength":64},"transactionDateTime":{"type":"string","description":"Date and time when the transaction occurred.","format":"date-time"},"transactionStatus":{"type":"string","enum":["pending","approved","declined","refunded"],"description":"|<b>Status</b>|<b>Description</b>|\n|-------|-------|\n|pending|transaction is pre-authorized, <br/>for example, trip has started but amount is not known yet.|\n|approved|transaction has been authorized.|\n|declined|transaction has been declined.|\n|refunded|transaction has been refunded.|\n"},"transactionType":{"type":"string","enum":["purchase","topup","renewal","refund","ride","withdrawal","surcharge"],"description":"|<b>Type</b>|<b>Description</b>|\n|-------|-------|\n|purchase|purchase of a new product|\n|topup|value added to existing product|\n|renewal|extend date of a time-based product|\n|refund|value refunded to card account|\n|ride|transit ride|\n|withdrawal|value removed from card account and returned to user|\n|surcharge|value debited from card account|\n"},"merchantName":{"type":"string","description":"Card issuer merchant name"},"rawMerchantName":{"type":"string","description":"Raw card issuer merchant name as seen on a customer's bank statement."},"zipCode":{"type":"string","description":"Zip code where the transaction occurred."},"countryCode":{"type":"string","description":"Two letters ISO 3166 country code where the transaction occurred","pattern":"^[A-Za-z]{2}$"},"city":{"type":"string","description":"City where the transaction occurred."},"address":{"type":"string","description":"Street number and name where the transaction occurred."},"totalAmount":{"$ref":"#/components/schemas/amount","description":"Total amount"},"currencyCode":{"$ref":"#/components/schemas/currencyCode"},"productId":{"$ref":"#/components/schemas/productId","description":"Unique identifier of the product involved in the transaction\n"},"localizedTitle":{"$ref":"#/components/schemas/localizedString"},"localizedDescription":{"$ref":"#/components/schemas/localizedString"},"rideDetails":{"type":"array","description":"Array of chronologically ordered events involved in the transaction.<br/>For example, for tap-in/tap-out transaction, two events shall be present.<br/>Shall be provided when transactionType is \"<b>ride</b>\"","minItems":1,"items":{"type":"object","title":"RideDetails","properties":{"eventDateTime":{"type":"string","description":"Date and time of the transit event.","format":"date-time"},"transitType":{"type":"string","enum":["bus","subway","train","ferry","tram","taxi","bike","funicular","cable-tram","aerial-lift","trolleybus","monorail"],"description":"Type of transportation mean."},"eventType":{"type":"string","enum":["tap","tap-in","tap-out","transfer"],"description":"Type of transit event."},"station":{"$ref":"#/components/schemas/station"},"discounts":{"type":"array","description":"Discounts applied to the transaction.","minItems":1,"items":{"type":"string","enum":["route","transfer","fare_capping"]}},"amount":{"$ref":"#/components/schemas/amount","description":"Transit event amount."},"originalAmount":{"$ref":"#/components/schemas/amount","description":"Original amount before applying adjustements."},"incompleteJourneyStatus":{"type":"string","enum":["resolved","unresolved"],"description":"Flag indicating that a trip is incomplete.<br/>Set when tap_in event is missing a tap_out event."}}}}},"required":["transactionId","transactionDateTime","transactionStatus","transactionType"]},"amount":{"type":"number","description":"Amount","format":"float"},"currencyCode":{"type":"string","description":"The 3-letter currency code defined in ISO 4217","pattern":"^[A-Za-z]{3}$"},"productId":{"type":"string","description":"Product unique identifier","maxLength":64},"localizedString":{"type":"object","properties":{"defaultValue":{"type":"string","description":"Default value to be used if no appropriate  translation is available"},"translatedValues":{"type":"array","description":"Array of localized values","items":{"type":"object","properties":{"value":{"type":"string","description":"Localized value"},"language":{"type":"string","description":"Language tag as per <a href=\"https://datatracker.ietf.org/doc/html/rfc5646\">RFC 5646</a>"}},"required":["value","language"]}}},"required":["defaultValue"]},"station":{"type":"object","properties":{"id":{"type":"string","description":"Identifier that can be used to look up station details on a separately shared station list.\n"},"displayName":{"type":"string","description":"Default station name that can be displayed to the user.\n"}}}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```

## Get Messages

> API used to fetch messages from the Transit Issuer.

```json
{"openapi":"3.1.0","info":{"title":"D1 Transit Outbound API","version":"1.0"},"servers":[{"url":"https://CUSTOMER-PROD/d1/transit/api/v1","description":"Prod URL"},{"url":"https://CUSTOMER-STG/d1/transit/api/v1","description":"Staging URL"}],"paths":{"/issuers/{issuerId}/wallets/{walletIndicator}/getMessages":{"post":{"summary":"Get Messages","description":"API used to fetch messages from the Transit Issuer.","operationId":"getMessages","parameters":[{"$ref":"#/components/parameters/issuerId"},{"$ref":"#/components/parameters/walletIndicator"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessagesReq"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetMessagesRes"}}}},"500":{"$ref":"#/components/responses/error500"},"503":{"$ref":"#/components/responses/error503"}}}}},"components":{"parameters":{"issuerId":{"name":"issuerId","in":"path","description":"Issuer unique identifier. Assigned by Thales during onboarding.","required":true,"schema":{"type":"string","maxLength":10}},"walletIndicator":{"name":"walletIndicator","in":"path","description":"Indicates which digital wallet is involved in the use case.\n|Value|Description|\n|---|---|\n|1|Apple|\n|2|Google|\n|3|Samsung|        ","required":true,"schema":{"type":"number"}}},"schemas":{"GetMessagesReq":{"type":"object","properties":{"requestContext":{"$ref":"#/components/schemas/requestContext"},"digitalCardId":{"$ref":"#/components/schemas/digitalCardId"},"cardAccountId":{"$ref":"#/components/schemas/cardAccountId"},"lastUpdatedTime":{"type":"string","description":"Value that should be used to provide updates that occurred since that time.\n","format":"date-time"}},"required":["requestContext","cardAccountId"]},"requestContext":{"type":"object","properties":{"requestId":{"type":"string","description":"Request unique identifier. Should be different for every retry.","maxLength":64},"correlationId":{"type":"string","description":"Random identifier which can be used to correlate the different API calls done as part of a usecase.\nThere is no strong guarantee of the uniqueness of this identifier, so it should not be used for purposes other than logging and troubleshooting.","maxLength":64}},"required":["requestId","correlationId"]},"digitalCardId":{"type":"string","description":"Digital card unique identifier","maxLength":64},"cardAccountId":{"type":"string","description":"Card account unique identifier","maxLength":64},"GetMessagesRes":{"type":"object","properties":{"responseContext":{"$ref":"#/components/schemas/responseContext"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/Message"}}}},"responseContext":{"type":"object","description":"Should be used for most of responses, even if the request processing was not successful.\nIf there was an issue encountered during request processing, the statusCode and statusMessage are used to give more details about what has gone wrong.\n","properties":{"requestId":{"type":"string","description":"requestId value from the corresponding request.","maxLength":64},"statusCode":{"type":"number"},"statusMessage":{"type":"string"}},"required":["requestId","statusCode"]},"Message":{"type":"object","title":"Message","properties":{"messageId":{"type":"string","description":"Unique identifier of the message","maxLength":64},"startDateTime":{"type":"string","description":"Date and time when the message starts being displayed to user.","format":"date-time"},"endDateTime":{"type":"string","description":"Date and time when the message stops being displayed to user.","format":"date-time"},"messageType":{"type":"string","enum":["alert","info","promotion"],"description":"Message type indicator."},"localizedHeader":{"$ref":"#/components/schemas/localizedString","description":"Localized header to be displayed to the user."},"localizedMessage":{"$ref":"#/components/schemas/localizedString","description":"Localized message to be displayed to the user."},"navigationTarget":{"type":"string","description":"A target to navigate the user to when tapping a message."}},"required":["messageId","startDateTime","endDateTime","messageType","localizedMessage"]},"localizedString":{"type":"object","properties":{"defaultValue":{"type":"string","description":"Default value to be used if no appropriate  translation is available"},"translatedValues":{"type":"array","description":"Array of localized values","items":{"type":"object","properties":{"value":{"type":"string","description":"Localized value"},"language":{"type":"string","description":"Language tag as per <a href=\"https://datatracker.ietf.org/doc/html/rfc5646\">RFC 5646</a>"}},"required":["value","language"]}}},"required":["defaultValue"]}},"responses":{"error500":{"description":"An unexpected error occurred while processing the request.<br/>\nThe request cannot be retried.<br/>\nOnly 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>').\n"},"error503":{"description":"Indicates that the system is unavailable.<br/>\nThe request can be retried.\n"}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.payments.thalescloud.io/transit-digitization/integrate-d1-transit-api/api-reference/outbound-api-from-d1-transit/provisioning-and-management-api.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
