# Visa Card Program Management
Visa Card Program Management

## Version: 1

### Servers

| URL | Description |
| --- | ----------- |
| https://sandbox.api.visa.com | Sandbox server |

---
## Visa Credential Data Inquiry
Visa Credential Data Inquiry

### [POST] /vcpe/v1/cardAttributes
**Get Card Attributes**

This API allows Issuer/Consumer to get PAN level Attributes.

#### Parameters

| Name | Located in | Description | Required | Schema | Style | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ----- | ------- |
| x-api-key | header | Client-specific API key issued during onboarding. | Yes | string | simple | No |
| x-correlation-id | header | Unique ID for every API request - a mandatory header. Generated by the API client. Used for end-to-end tracing/debugging. | Yes | string | simple | No |
| Content-Type | header | The type of the request body. Not required if the message body is empty in the request, for example, “application/json” | Yes | string, <br>**Default:** application/json | simple | No |
| Accept | header | Types of content that are acceptable for the request. | Yes | string, <br>**Default:** application/json | simple | No |

#### Request Body

Card attributes

| Required | Schema |
| -------- | ------ |
|  Yes | **application/json**: { **"primaryAccountNumber"**: integer }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | Response Body | **application/json**: { **"status"**: string, **"message"**: string, **"CardInfo"**: { **"sourceChannel"**: string, **"accountOpenDate"**: date, **"lastAttrUpdateDate"**: date }, **"LinkInfo"**: [ { **"groupId"**: string, **"groupType"**: string, **"primaryPan"**: string, **"isPrimaryFlag"**: boolean } ], **"RPINInfo"**: { **"rpin"**: string, **"rpinName"**: string, **"rpinProductId"**: string, **"rpinProductName"**: string, **"rpinReferenceNumber"**: string }, **"panlast4"**: string, **"CobrandInfo"**: { **"coBrandFlag"**: string, **"coBrandName"**: string }, **"CardHolderInfo"**: { **"email"**: string, **"address"**: { **"zip"**: string, **"city"**: string, **"line1"**: string, **"line2"**: string, **"state"**: string }, **"lastName"**: string, **"firstName"**: string, **"namePrefix"**: string, **"nameSuffix"**: string, **"companyName"**: string, **"mobileNumber"**: string, **"middleInitial"**: string } }<br> |
| 400 | Bad Request | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 401 | Unauthorized | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 404 | Not Found | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 406 | Not Acceptable | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 429 | Rate Limit Exceeded | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 500 | Internal Server Error | **application/json**: { **"status"**: string, **"message"**: string }<br> |
| 503 | Service Unavailable | **application/json**: { **"status"**: string, **"message"**: string }<br> |

---
## Visa Card Program Enrollment 
VCPE supports issuers that want to offer instant/digital issuance or re-issuance; as well as allow their cardholders to upgrade and downgrade cards in their banking app and enjoy new rewards programs in near real-time without needing a physical card and without changing their 16-digit card number.

### [POST] /vcpe/v2/pan/enrollment
**Enrollment**

Process enrollment and handover message to ALM.

#### Parameters

| Name | Located in | Description | Required | Schema | Explode |
| ---- | ---------- | ----------- | -------- | ------ | ------- |
| Accept | header | Accept | Yes | string | No |
| Accept-Language | header | Accept-Language | No | string | No |
| Content-Type | header | Content-Type | Yes | string | No |
| X-CHANNEL_ID | header | Default to VTIS | Yes | string | No |
| X-CORRELATION-ID | header | X-CORRELATION-ID | Yes | string | No |
| X-API-KEY | header | X-API-KEY | Yes | string | No |
| X-CLIENT-ID | header | X-CLIENT-ID | No | string | No |
| Content-Language | header | Content-Language | No | string | No |

#### Request Body

| Required | Schema |
| -------- | ------ |
|  No | **application/json**: { **"operationType"**: string, **"enrollmentInfo"**: { **"cardholderInfo"**: { **"primaryAccountNumber"**: string }, **"accountLevelInfo"**: { **"productID"**: string, **"linkEnrollment"**: { **"group"**: [ { **"action"**: string, **"groupID"**: string, **"groupType"**: string, **"isPrimaryAccount"**: string } ] }, **"rpinEnrollment"**: { **"rpin"**: string, **"action"**: string, **"accountOpenDate"**: string, **"rpinEffectiveDate"**: string, **"rpinIssuerRefNumber"**: string }, **"replaceEnrollment"**: { **"linkReasonCode"**: string, **"unlinkIndicator"**: string, **"oldAccountNumber"**: string }, **"benefitsEnrollment"**: { **"addOnBenefits"**: [ { **"action"**: string, **"featureId"**: { **"vfsFeatureId"**: [ string ], **"supplierFeatureId"**: [ string ], **"issuerFeatureReferenceId"**: [ string ] }, **"enrollmentDate"**: string, **"enrollmentStatus"**: string, **"activationEndDate"**: string, **"activationStartDate"**: string } ], **"portfolioBenefits"**: { **"action"**: string, **"portfolioId"**: string, **"effectiveEndDate"**: string, **"effectiveStartDate"**: string } }, **"customerContactInfo"**: { **"email"**: string, **"action"**: string, **"address"**: { **"zip"**: string, **"city"**: string, **"line1"**: string, **"line2"**: string, **"state"**: string, **"companyName"**: string }, **"lastName"**: string, **"firstName"**: string, **"namePrefix"**: string, **"nameSuffix"**: string, **"mobileNumber"**: string, **"middleInitial"**: string, **"prefMethodOfContact"**: string } } }, **"updateReferenceID"**: string }<br> |

#### Responses

| Code | Description | Schema |
| ---- | ----------- | ------ |
| 200 | OK | **application/json**: object<br> |
| 202 | Accepted. Request successfully persisted to queue. |  |
| 400 | Bad request. Incorrect parameters supplied. |  |
| 500 | Internal Server Error. |  |

---
### Schemas

#### date Schema

Date in GMT

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| date | date | Date in GMT |  |

#### Locale Schema

Locale in in [IETF BCP 47 format](https://tools.ietf.org/html/bcp47)
The BCP 47 locale format is <Language Subtag>-<Extended Language Subtag (Optional)>-<Script Subtag (Optional)>-<Region Subtag (Optional)>-<Variant1 Subtag (Optional)>-<Variant2 Subtag (Optional)>
However, only following locale formats are supported by VCPE API:
<Language Subtag>-<Region Subtag>
Language Subtag: [a-zA-Z]{2,8}
Region Subtag: [a-zA-Z]{2} | [0-9]{3}

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| Locale | string | Locale in in [IETF BCP 47 format](https://tools.ietf.org/html/bcp47) The BCP 47 locale format is <Language Subtag>-<Extended Language Subtag (Optional)>-<Script Subtag (Optional)>-<Region Subtag (Optional)>-<Variant1 Subtag (Optional)>-<Variant2 Subtag (Optional)> However, only following locale formats are supported by VCPE API: <Language Subtag>-<Region Subtag> Language Subtag: [a-zA-Z]{2,8} Region Subtag: [a-zA-Z]{2} | [0-9]{3}  |  |

**Example**
<pre>en-US</pre>

#### dateTime Schema

date Time in GMT

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| dateTime | dateTime | date Time in GMT |  |

**Example**
<pre>2017-07-21T17:32:28Z</pre>

#### spendQualifiedIndicator Schema

Spend Qualified Indicator

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| spendQualifiedIndicator | string (enum), <br>**Available values:** "N", "B", "Q" | Spend Qualified Indicator |  |

**Example**
<pre>N</pre>

#### StandardError Schema

API errors are reported using a Standard Error Response structure. All errors are categorized into Standard errors and Business errors. Standard errors can be returned by any API and should be handled in a common way. Business errors are returned only by some APIs and are documented for each API.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| errorResponse | { **"reason"**: string, **"status"**: integer, **"details"**: [ { **"reason"**: string, **"message"**: string, **"location"**: string } ], **"message"**: string } | Standard Error Response Body | Yes |

#### InvalidRpin Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "INVALID_RPIN" | *Enum:* `"INVALID_RPIN"` | No |
| errorCode | string, <br>**Available values:** "2" | *Enum:* `"2"` | No |
| invalidRpin | string | Registered Program Identification Number. 6 in length. RPIN has metadata associated with it that can be retrieved by the get GetAttributes API call.<br>*Example:* `"009065"` | No |

#### CobrandInfov1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| coBrandFlag | string | CoBrand Information associated with the RPIN.<br>*Example:* `"Y/N"` | No |
| coBrandName | string | Name of the coBrand.<br>*Example:* `"ABC Cobrand"` | No |

#### RpinAttributes Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rpin | string | Registered Program Identification Number. 6 in length. RPIN has metadata associated with it that can be retrieved by the get GetAttributes API call.<br>*Example:* `"009065"` | No |
| country | string | The country to which the RPIN belongs<br>*Example:* `"036"` | No |
| endDate | date | Date in GMT | No |
| rpinBid | string | The User Business Identification number that is associated to the PAN's account range. Length 8.<br>*Example:* `"10000001"` | No |
| rpinName | string | The RPIN Name.<br>*Example:* `"VTR"` | No |
| vertical | string (enum), <br>**Available values:** "CASHBACK", "COHOTEL", "COAIRLINE", "COGAS", "CORETAIL", "COAUTO", "COENTERTAIN", "COAFFINITY", "COFINSERV", "COOTHER", "COTRAVELSVC", "GENOTHER", "GENTRAVEL", "GENWEALTH" | The Vertical type<br>*Enum:* `"CASHBACK"`, `"COHOTEL"`, `"COAIRLINE"`, `"COGAS"`, `"CORETAIL"`, `"COAUTO"`, `"COENTERTAIN"`, `"COAFFINITY"`, `"COFINSERV"`, `"COOTHER"`, `"COTRAVELSVC"`, `"GENOTHER"`, `"GENTRAVEL"`, `"GENWEALTH"`<br>*Example:* `"CASHBACK"` | No |
| startDate | date | Date in GMT | No |
| cardCounts | number (integer) | Cards enrolled in the RPIN.<br>*Example:* `1000000` | No |
| programBid | string | The User Business Identification number that is associated to the PAN's account range. Length 8.<br>*Example:* `"10000001"` | No |
| rpinStatus | string (enum), <br>**Available values:** "ACTIVE", "PENDING", "CHANGEPENDING", "DEACTIVATED", "DEACTIVATION_PENDING", "REJECTED", "APPROVED" | Status of teh RPIN.<br>*Enum:* `"ACTIVE"`, `"PENDING"`, `"CHANGEPENDING"`, `"DEACTIVATED"`, `"DEACTIVATION_PENDING"`, `"REJECTED"`, `"APPROVED"`<br>*Example:* `"CMF"` | No |
| spendRules | [ { **"spendRuleName"**: string } ] |  | No |
| programName | string | The Program to which RPIN is associated<br>*Example:* `"VTR"` | No |
| programType | string (enum), <br>**Available values:** "COBRAND", "GEN_REWARDS", "NON_REWARDS", "CASH" | The Program type<br>*Enum:* `"COBRAND"`, `"GEN_REWARDS"`, `"NON_REWARDS"`, `"CASH"`<br>*Example:* `"VTR"` | No |
| rpinBidName | string | The Issuer Name associated to the PAN's account range.<br>*Example:* `"Test Bank"` | No |
| rpinCobrand | string | The Cobrand or Affinity for the RPIN.<br>*Example:* `"Grocery"` | No |
| rpinMetadata | [ { **"attributeTagName"**: string (enum), <br>**Available values:** "PORTFOLIO", "PROGRAM_SUB_CAT", "VERTICAL_SUB_CAT", "LOC", "CCP_ENABLED", "VIRTUAL", "REPORTING", "SECURED_CRD", "AUTOREG", **"attributeTagValue"**: string (string) } ] |  | No |
| rpinProductId | string | Product ID<br>*Example:* `"A"` | No |
| rpinRefNumber | string | The RPIN Reference Number.<br>*Example:* `"0047890ABN"` | No |
| programBidName | string | The Issuer Name associated to the PAN's account range.<br>*Example:* `"Test Bank"` | No |
| accountRangeAssoc | [ { **"arMax"**: string (string), **"arMin"**: string (string), **"autoRegAR"**: string (boolean), **"endDateOfAssoc"**: date, **"starteDateOfAssoc"**: date } ] |  | No |
| lastCardEnrollDate | date | Date in GMT | No |

#### accountOpenDate Schema

Date when the card was Opened

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| accountOpenDate | string | Date when the card was Opened |  |

**Example**
<pre>2022-07-01</pre>

#### productName Schema

Name of the Product

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| productName | string | Name of the Product |  |

**Example**
<pre>Visa Signature Preferred</pre>

#### rpinName Schema

Name of the RPIN.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rpinName | string | Name of the RPIN. |  |

**Example**
<pre>Airline Portfolio</pre>

#### CardInfov2 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceChannel | string (enum), <br>**Available values:** "API", "CMF", "AUTOREG" | Channel from which update was done.<br>*Enum:* `"API"`, `"CMF"`, `"AUTOREG"`<br>*Example:* `"API"` | No |
| accountOpenDate | string | Date when the card was Opened<br>*Example:* `"2022-07-01"` | No |
| lastAttrUpdateDate | string | Date when last time the card attribute was updated.<br>*Example:* `"2022-07-14"` | No |

#### InvalidPage Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "INVALID_PAGE" | *Enum:* `"INVALID_PAGE"` | No |
| errorCode | string, <br>**Available values:** "00011" | *Enum:* `"00011"` | No |
| invalidPage | integer (integer) | Results page to retrieve<br>*Example:* `10` | No |

#### CardInfov1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| sourceChannel | string (enum), <br>**Available values:** "API", "CMF", "AUTOREG" | Channel from which update was done.<br>*Enum:* `"API"`, `"CMF"`, `"AUTOREG"`<br>*Example:* `"API"` | No |
| lastAttrUpdateDate | string | Date when last time the card attribute was updated.<br>*Example:* `"2022-07-14"` | No |

#### infoType Schema

Specify if caller is interested only in specific datasets. If not specified, system will return all the data without filtering. Enum value will display attributes as follows:
<li>RPINInfo - Will return RPIN enrollment details - RPIN, RPIN Name, RPIN Product etc</li>
<li>CardInfo - Will return Card related other details - enrollment source channel, last attribute update date</li>
<li>CustomerInfo - Will return the customer details</li>
<li>LinkInfo - Will return all link relationships this card is part of. Details of relationship will include teh link group ID, link group name, and flag to indicate card's primary status in the relationship</li>

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| infoType | [ string, <br>**Available values:** "RPINInfo", "CardInfo", "LinkInfo", "CustomerInfo" ] | Specify if caller is interested only in specific datasets. If not specified, system will return all the data without filtering. Enum value will display attributes as follows: <li>RPINInfo - Will return RPIN enrollment details - RPIN, RPIN Name, RPIN Product etc</li> <li>CardInfo - Will return Card related other details - enrollment source channel, last attribute update date</li> <li>CustomerInfo - Will return the customer details</li> <li>LinkInfo - Will return all link relationships this card is part of. Details of relationship will include teh link group ID, link group name, and flag to indicate card's primary status in the relationship</li>  |  |

**Example**
<pre>[
  "RPINInfo",
  "CustomerInfo"
]</pre>

#### LinkDetails Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| LinkDetails | [ { **"groupId"**: string, **"groupType"**: string (enum), <br>**Available values:** "LOC", "USHNW", "USCROSSPROD", "CUSTOMER", "VIRTUAL", **"primaryPan"**: integer, **"isPrimaryFlag"**: string (boolean) } ] |  |  |

#### rpin Schema

Registered Program Identification Number. 6 in length. RPIN has metadata associated with it that can be retrieved by the get GetAttributes API call.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rpin | string | Registered Program Identification Number. 6 in length. RPIN has metadata associated with it that can be retrieved by the get GetAttributes API call. |  |

**Example**
<pre>009065</pre>

#### CardAccountRangeDetails Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| bin | string | The BIN associated to the PAN's account range. Can be 6 or 8 in length.<br>*Example:* `"400003"` | No |
| lbid | string | The User Business Identification number that is associated to the PAN's account range. Length 8.<br>*Example:* `"10000001"` | No |
| ubid | string | The User Business Identification number that is associated to the PAN's account range. Length 8.<br>*Example:* `"10000001"` | No |
| fundingSource | string (enum), <br>**Available values:** "C", "D", "P" | UBID for the PAN's range. 8 in length.<br>*Enum:* `"C"`, `"D"`, `"P"`<br>*Example:* `"C"` | No |
| issuerInitiatedALP | string (boolean) | Issuer has initiated Account level processing for the account range.<br>*Example:* `"true"` | No |
| accountRangeProductId | string | Product ID<br>*Example:* `"A"` | No |

#### lastAttrUpdateDate Schema

Date when last time the card attribute was updated.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| lastAttrUpdateDate | string | Date when last time the card attribute was updated. |  |

**Example**
<pre>2022-07-14</pre>

#### vdpExternalAppId Schema

internal_unique_id_per_enviroment GUID.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| vdpExternalAppId | string | internal_unique_id_per_enviroment GUID. |  |

**Example**
<pre>0047890ABN</pre>

#### updateChannel Schema

Channel from which update was done.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| updateChannel | string (enum), <br>**Available values:** "API", "CMF", "AUTOREG" | Channel from which update was done. |  |

**Example**
<pre>API</pre>

#### customerContactInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| email | string | (Conditional) Account holder’s email address. Required when prefMethodOfContact is E. | No |
| address | { **"zip"**: string, **"city"**: string, **"line1"**: string, **"line2"**: string, **"state"**: string } | (Optional) Address details for the account holder. | No |
| lastName | string | (REQUIRED if customerContactInfo segment is present)     Account holder’s last name. | No |
| firstName | string | (REQUIRED if customerContactInfo segment is present)     Account holder’s first name. | No |
| namePrefix | string | (Optional) Account holder’s name prefix. | No |
| nameSuffix | string | (Optional) Account holder’s name suffix. | No |
| companyName | string | (Optional) Account holder’s company name. Format: String; alphanumeric; UTF-8, white space, comma (,), underscore (_), hashtag (#), colon (:), forward slash (/), period (.), single quote (‘), and hyphens (-) are allowed.<br>*Example:* `"ABC Company"` | No |
| mobileNumber | string | (Conditional) Account holder’s telephone number. Required when prefMethodOfContact is C. | No |
| middleInitial | string | (Optional) Account holder’s middle initial. | No |

#### pan Schema

PAN / Account Number / Card Number of the card to be enrolled

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| pan | integer | PAN / Account Number / Card Number of the card to be enrolled |  |

**Example**
<pre>4000010000</pre>

#### BasePage Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| last | boolean |  | No |
| empty | boolean |  | No |
| first | boolean |  | No |
| number | integer |  | No |
| totalCount | integer |  | No |
| totalPages | integer |  | No |
| resultsCount | integer |  | No |

#### bidName Schema

The Issuer Name associated to the PAN's account range.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| bidName | string | The Issuer Name associated to the PAN's account range. |  |

**Example**
<pre>Test Bank</pre>

#### CardAttributesPortProcDoc Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| CardInfo | { **"sourceChannel"**: string (enum), <br>**Available values:** "API", "CMF", "AUTOREG", **"accountOpenDate"**: string, **"lastAttrUpdateDate"**: string } |  | No |
| LinkInfo | [ { **"groupId"**: string, **"groupType"**: string (enum), <br>**Available values:** "LOC", "USHNW", "USCROSSPROD", "CUSTOMER", "VIRTUAL", **"primaryPan"**: integer, **"isPrimaryFlag"**: string (boolean) } ] |  | No |
| RPINInfo | { **"rpin"**: string, **"rpinName"**: string, **"rpinProductId"**: string, **"rpinProductName"**: string, **"rpinReferenceNumber"**: string } |  | No |
| panlast4 | string (string) | Last 4 digits of PAN number.<br>*Example:* `"0"` | No |
| CobrandInfo | { **"coBrandFlag"**: string, **"coBrandName"**: string } |  | No |
| CardHolderInfo | { **"email"**: string, **"address"**: { **"zip"**: string, **"city"**: string, **"line1"**: string, **"line2"**: string, **"state"**: string }, **"lastName"**: string, **"firstName"**: string, **"namePrefix"**: string, **"nameSuffix"**: string, **"companyName"**: string, **"mobileNumber"**: string, **"middleInitial"**: string } |  | No |
| InterchangeAttrInfo | { **"spendQualifierInd"**: string (enum), <br>**Available values:** "N", "B", "Q", **"interChangeProductID"**: string } |  | No |

#### InvalidSize Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "INVALID_SIZE" | *Enum:* `"INVALID_SIZE"` | No |
| errorCode | string, <br>**Available values:** "00012" | *Enum:* `"00012"` | No |
| invalidSize | integer (integer) | Number of results per page<br>*Example:* `10` | No |

#### InvalidInfoType Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "INVALID_INFO_TYPE" | *Enum:* `"INVALID_INFO_TYPE"` | No |
| errorCode | string, <br>**Available values:** "00009" | *Enum:* `"00009"` | No |
| invalidInfoType | [ string, <br>**Available values:** "RPINInfo", "CardInfo", "LinkInfo", "CustomerInfo" ] | Specify if caller is interested only in specific datasets. If not specified, system will return all the data without filtering. Enum value will display attributes as follows: <li>RPINInfo - Will return RPIN enrollment details - RPIN, RPIN Name, RPIN Product etc</li> <li>CardInfo - Will return Card related other details - enrollment source channel, last attribute update date</li> <li>CustomerInfo - Will return the customer details</li> <li>LinkInfo - Will return all link relationships this card is part of. Details of relationship will include teh link group ID, link group name, and flag to indicate card's primary status in the relationship</li> <br>*Example:* `["RPINInfo","CustomerInfo"]` | No |

#### CardIntchgInfo Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| spendQualifierInd | string (enum), <br>**Available values:** "N", "B", "Q" | Spend Qualified Indicator<br>*Enum:* `"N"`, `"B"`, `"Q"`<br>*Example:* `"N"` | No |
| interChangeProductID | string | Product ID<br>*Example:* `"A"` | No |

#### productId Schema

Product ID

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| productId | string | Product ID |  |

**Example**
<pre>A</pre>

#### ServerError Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "SERVER_ERROR" | *Enum:* `"SERVER_ERROR"` | No |
| errorCode | string, <br>**Available values:** "00013" | *Enum:* `"00013"` | No |
| serverError | string, <br>**Default:** Server Error |  | No |

#### PaymentAccountReference Schema

A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card.
PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification.
PAR has a well-defined format (as per the Jan 2016 EMVCo documentation):
- Fixed length of 29 characters
- All Uppercase, Roman, & Alphanumeric values
- 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| PaymentAccountReference | string | A Payment Account Reference (PAR) is a unique reference value associated with a specific card holder PAN. It identifies the card account, not just a card. PAR is a non-payment identifier that can be associated to PANs and tokens, as defined by EMVCo.  PAR allows all participants in the payments chain to have a single, non-sensitive value assigned to a consumer. This value can be used in place of sensitive card holder identification fields, and transmitted across the payments ecosystem to facilitate card holder identification. PAR has a well-defined format (as per the Jan 2016 EMVCo documentation): - Fixed length of 29 characters - All Uppercase, Roman, & Alphanumeric values - 4-character BIN Controller ID assigned by EMVCo followed by a 25-character value  |  |

#### InvalidPan Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| result | boolean, <br>**Available values:** false | *Enum:* `false` | No |
| errorMsg | string, <br>**Available values:** "INVALID_PAN" | *Enum:* `"INVALID_PAN"` | No |
| errorCode | string, <br>**Available values:** "00008" | *Enum:* `"00008"` | No |
| invalidPan | integer | PAN / Account Number / Card Number of the card to be enrolled<br>*Example:* `4000010000` | No |

#### coBrandName Schema

Name of the coBrand.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| coBrandName | string | Name of the coBrand. |  |

**Example**
<pre>ABC Cobrand</pre>

#### ErrorResponse Schema

Standard Error Response Body

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| reason | string | API developers must use this field to drive their error handling logic<br>*Example:* `"invalidRequest"` | Yes |
| status | integer | 3-digit HTTP Status Code<br>*Example:* `400` | No |
| details | [ { **"reason"**: string, **"message"**: string, **"location"**: string } ] | Array of fields - Data validation errors should use this array to specify  fields that failed validation using the location field | No |
| message | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Input parameters validation failed"` | No |

#### coBrand Schema

CoBrand Information associated with the RPIN.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| coBrand | string | CoBrand Information associated with the RPIN. |  |

**Example**
<pre>Y/N</pre>

#### rpinRefNumber Schema

The RPIN Reference Number.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rpinRefNumber | string | The RPIN Reference Number. |  |

**Example**
<pre>0047890ABN</pre>

#### size Schema

Number of results per page

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| size | integer (integer) | Number of results per page |  |

**Example**
<pre>10</pre>

#### panlast4 Schema

Last 4 digits of PAN number.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| panlast4 | string (string) | Last 4 digits of PAN number. |  |

**Example**
<pre>0</pre>

#### ErrorResponseReg Schema

Standard Error Response Body of registration

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| responseCode | integer | 3-digit HTTP Status Code<br>*Example:* `400` | Yes |
| responseMessage | string | Every error should have a human readable message describing the error. The message can very even for the same reason, thus providing additional details. API providers are free to change the message at any point of time. API clients should not use the message field to drive their business logic or to expose it directly to the consumers via UI or other means.<br>*Example:* `"Input parameters validation failed"` | Yes |

#### EncryptedAccountNumber Schema

JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber.
The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding. 
It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.

Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| EncryptedAccountNumber | byte | JWE<AccountNumber> - This is a URL-safe base64-encoded string that represents the encrypted payload for AccountNumber. The format is the JSON Web Encryption using asymmetric/symmetric key material made available at time of onboarding.  It is a standard JWT with a single custom AccountNumber claim, “accountNumber” that contains the card number/PAN.  Visa uses JSON Web Encryption (JWE) to encrypt sensitive information in APIs. For more info, see "Encryption (JWE) Details".  |  |

#### registrationAttributes Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| registrationAttributes | [ { **"key"**: string, **"value"**: string } ] |  |  |

**Example**
<pre>[
  {
    "key": "X-CLIENT-ID",
    "value": "<App id provided by VDP, ex: 0047890ABN>"
  },
  {
    "key": "X-CHANNEL-ID",
    "value": "VDP"
  }
]</pre>

#### ReplacementDetails Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| ReplacementDetails | [ { **"pan"**: integer, **"seqNo"**: number (integer) } ] |  |  |

#### RPINInfov1 Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| rpin | string | Registered Program Identification Number. 6 in length. RPIN has metadata associated with it that can be retrieved by the get GetAttributes API call.<br>*Example:* `"009065"` | No |
| rpinName | string | Name of the RPIN.<br>*Example:* `"Airline Portfolio"` | No |
| rpinProductId | string | Product ID<br>*Example:* `"A"` | No |
| rpinProductName | string | Name of the Product<br>*Example:* `"Visa Signature Preferred"` | No |
| rpinReferenceNumber | string | The RPIN Reference Number.<br>*Example:* `"0047890ABN"` | No |

#### page Schema

Results page to retrieve

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| page | integer (integer) | Results page to retrieve |  |

**Example**
<pre>10</pre>

#### bid Schema

The User Business Identification number that is associated to the PAN's account range. Length 8.

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| bid | string | The User Business Identification number that is associated to the PAN's account range. Length 8. |  |

**Example**
<pre>10000001</pre>

#### additionalAttributes Schema

| Name | Type | Description | Required |
| ---- | ---- | ----------- | -------- |
| additionalAttributes | [ { **"key"**: string, **"value"**: string } ] |  |  |
