> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developer.americanexpress.ferndocs.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer.americanexpress.ferndocs.com/_mcp/server.

# Get Product Detail

GET https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/{productId}

Returns detailed information on a single product offered to the market.
Endpoint Version: 7

Reference: https://developer.americanexpress.ferndocs.com/open-banking/consumer-data-right/api-reference/get-product-detail

## Authentication

- `Authorization` header (bearer token, required) — OAuth 2.0 client credentials. Exchange your API key and secret for a bearer token, then send it as `Authorization: Bearer <token>`.

## Request

### Path parameters

- `productId` (string, required) — The unique identifier of the product to retrieve details for.

### Headers

- `x-v` (string, required) — The version of the API endpoint requested by the Client. Must be set to a positive integer. The current supported version for this endpoint is 7.
- `x-min-v` (string, optional) — The minimum version of the API endpoint requested by the Client. Must be set to a positive integer if provided.
- `x-fapi-interaction-id` (string, optional) — An RFC4122 UUID used as a correlation ID. If provided, the data holder must play back this value in the x-fapi-interaction-id response header.

## Response

### 200

OK

- `data` (BankingProductDetailV7, required)
- `links` (Links, required)
- `meta` (Meta, optional)

## Errors

### 400 Bad Request Error

Bad Request

- `errors` (list of ErrorV2, required) — A list of errors.

### 404 Not Found Error

Not Found

- `errors` (list of ErrorV2, required) — A list of errors.

### 406 Not Acceptable Error

Not Acceptable

- `errors` (list of ErrorV2, required) — A list of errors.

### 429 Too Many Requests Error

Too Many Requests

- `any`

### 500 Internal Server Error

Internal Server Error

- `errors` (list of ErrorV2, required) — A list of errors.

### 503 Service Unavailable Error

Service Unavailable

- `any`

### 504 Gateway Timeout Error

Gateway Timeout

- `any`

## Types

### BankingProductDetailV7

- `productId` (string, required) — A data holder-specific unique identifier for a banking product. This identifier must be unique to a product but does not otherwise need to adhere to ID permanence guidelines.
- `lastUpdated` (string, required) — The last date and time that the information for this product was changed (or the creation date for the product if it has never been altered).
- `productCategory` (enum, required) — The category to which a product or account belongs.
  - Allowed values: `BUSINESS_LOANS`, `BUY_NOW_PAY_LATER`, `CRED_AND_CHRG_CARDS`, `LEASES`, `MARGIN_LOANS`, `OVERDRAFTS`, `PERS_LOANS`, `REGULATED_TRUST_ACCOUNTS`, `RESIDENTIAL_MORTGAGES`, `TERM_DEPOSITS`, `TRADE_FINANCE`, `TRANS_AND_SAVINGS_ACCOUNTS`, `TRAVEL_CARDS`
- `name` (string, required) — The display name of the product.
- `description` (string, required) — A description of the product.
- `brand` (string, required) — A label of the brand for the product. Able to be used for filtering. For data holders with single brands this value is still required.
- `isTailored` (boolean, required) — Indicates whether the product is specifically tailored to a circumstance. In this case, fees and prices are significantly negotiated, depending on context. While all products are open to a degree of tailoring, this flag indicates that tailoring is expected and thus that the provision of specific fees and rates is not applicable.
- `effectiveFrom` (string, optional) — The date and time from which this product is effective (i.e., is available for origination). Used to enable the articulation of products to the regime before they are available for customers to originate.
- `effectiveTo` (string, optional) — The date and time at which this product will be retired and will no longer be offered. Used to enable the managed deprecation of products.
- `brandName` (string, optional) — An optional display name of the brand.
- `applicationUri` (string, optional) — A link to an application web page where this product can be applied for.
- `additionalInformation` (BankingProductAdditionalInformationV2, optional) — An object that contains links to additional information on specific topics.
- `cardArt` (list of BankingProductCardArt, optional) — Information about any cards available with the account.
- `bundles` (list of BankingProductBundle, optional) — An array of bundles that this product participates in. Each bundle is described by free form information but also by a list of productId values of the other products that are included in the bundle. It is assumed that the current product is included in the bundle also.
- `features` (list of BankingProductFeatureV4, optional) — An array of features and limitations of the product.
- `constraints` (list of BankingProductConstraintV3, optional) — An array of constraints on the application for the product such as minimum balances or limit thresholds.
- `eligibility` (list of BankingProductEligibilityV2, optional) — An array of eligibility criteria for the product.
- `fees` (list of BankingProductFeeV2, optional) — An array of fees applicable to the product.
- `depositRates` (list of BankingProductDepositRateV2, optional) — An array of interest rates available for deposits.
- `lendingRates` (list of BankingProductLendingRateV3, optional) — An array of interest rates charged against lending balances.

### Links

- `self` (string, required) — A fully qualified link that generated the current response document.

### Meta

### ErrorV2

- `code` (string, required) — The code of the error encountered. Where the error is specific to the respondent, an application-specific error code, expressed as a string value. If the error is application-specific, the URN code that the specific error extends must be provided in the meta object. Otherwise, the value is the error code URN.
- `title` (string, required) — A short, human-readable summary of the problem that MUST NOT change from occurrence to occurrence of the problem represented by the error code.
- `detail` (string, required) — A human-readable explanation specific to this occurrence of the problem.
- `meta` (ErrorV2Meta, optional) — Additional data for customised error codes.

### BankingProductAdditionalInformationV2

An object that contains links to additional information on specific topics.

- `overviewUri` (string, optional) — A general overview of the product. Mandatory if additionalOverviewUris includes one or more supporting documents.
- `termsUri` (string, optional) — The terms and conditions for the product. Mandatory if additionalTermsUris includes one or more supporting documents.
- `eligibilityUri` (string, optional) — The eligibility rules and criteria for the product. Mandatory if additionalEligibilityUris includes one or more supporting documents.
- `feesAndPricingUri` (string, optional) — The description of fees, pricing, discounts, exemptions, and bonuses for the product. Mandatory if additionalFeesAndPricingUris includes one or more supporting documents.
- `bundleUri` (string, optional) — The description of a bundle that this product can be part of. Mandatory if additionalBundleUris includes one or more supporting documents.
- `additionalOverviewUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional general overviews for the product or features of the product, if applicable. To be treated as secondary documents to the overviewUri. Only to be used if there is a primary overviewUri.
- `additionalTermsUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional terms and conditions for the product, if applicable. To be treated as secondary documents to the termsUri. Only to be used if there is a primary termsUri.
- `additionalEligibilityUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional eligibility rules and criteria for the product, if applicable. To be treated as secondary documents to the eligibilityUri. Only to be used if there is a primary eligibilityUri.
- `additionalFeesAndPricingUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional fees, pricing, discounts, exemptions, and bonuses for the product, if applicable. To be treated as secondary documents to the feesAndPricingUri. Only to be used if there is a primary feesAndPricingUri.
- `additionalBundleUris` (list of BankingProductAdditionalInformationV2_additionalInformationUris, optional) — An array of additional bundles for the product, if applicable. To be treated as secondary documents to the bundleUri. Only to be used if there is a primary bundleUri.

### BankingProductCardArt

- `cardScheme` (enum, required) — The card scheme available with the account.
  - Allowed values: `AMEX`
- `cardType` (enum, required) — The card type available with the account.
  - Allowed values: `CHARGE`, `CREDIT`, `DEBIT`
- `imageUri` (string, required) — A URI reference to a PNG, JPG, or GIF image with proportions defined by ISO 7810 ID-1 and width no greater than 512 pixels. The URI reference may be a link or URL-encoded data URI according to RFC2397.
- `title` (string, optional) — The display label for the specific image.

### BankingProductBundle

- `name` (string, required) — The name of the bundle.
- `description` (string, required) — The description of the bundle.
- `additionalInfo` (string, optional) — The display text providing more information on the bundle.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on the bundle criteria and benefits.
- `productIds` (list of BankingProductBundleProductIdsItems, optional) — An array of productId values for products included in the bundle that are available via the product endpoints. Note that this array is not intended to represent a comprehensive model of the products included in the bundle and some products available for the bundle may not be available via the product reference endpoints.

### BankingProductFeatureV4

- `featureType` (enum, required) — The type of feature described.
  - Allowed values: `ADDITIONAL_CARDS`, `BALANCE_TRANSFERS`, `BILL_PAYMENT`, `BONUS_REWARDS`, `CARD_ACCESS`, `CASHBACK_OFFER`, `COMPLEMENTARY_PRODUCT_DISCOUNTS`, `EXTRA_DOWN_PAYMENT`, `DIGITAL_BANKING`, `DIGITAL_WALLET`, `DONATE_INTEREST`, `EXTRA_REPAYMENTS`, `FRAUD_PROTECTION`, `FREE_TXNS`, `FREE_TXNS_ALLOWANCE`, `FUNDS_AVAILABLE_AFTER`, `GUARANTOR`, `INSTALMENT_PLAN`, `INSURANCE`, `INTEREST_FREE`, `INTEREST_FREE_TRANSFERS`, `LOYALTY_PROGRAM`, `NOTIFICATIONS`, `NPP_ENABLED`, `NPP_PAYID`, `OFFSET`, `OTHER`, `OVERDRAFT`, `REDRAW`, `RELATIONSHIP_MANAGEMENT`, `UNLIMITED_TXNS`
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the featureType specified. Whether mandatory or not is dependent on the value of the featureType.
- `additionalInfo` (string, optional) — The display text providing more information on the feature. Mandatory if the featureType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this feature.

### BankingProductConstraintV3

- `constraintType` (enum, required) — The type of constraint described.
  - Allowed values: `MAX_BALANCE`, `MAX_LIMIT`, `MAX_LVR`, `MIN_BALANCE`, `MIN_LIMIT`, `MIN_LVR`, `OPENING_BALANCE`, `OTHER`
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the constraintType specified. Whether mandatory or not is dependent on the value of constraintType.
- `additionalInfo` (string, optional) — The display text providing more information on the constraint. Mandatory if the constraintType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on the constraint.

### BankingProductEligibilityV2

- `eligibilityType` (enum, required) — The type of eligibility criteria described.
  - Allowed values: `BUSINESS`, `EMPLOYMENT_STATUS`, `MAX_AGE`, `MIN_AGE`, `MIN_INCOME`, `MIN_TURNOVER`, `NATURAL_PERSON`, `OTHER`, `PENSION_RECIPIENT`, `RESIDENCY_STATUS`, `STAFF`, `STUDENT`
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the eligibilityType specified. Whether mandatory or not is dependent on the value of eligibilityType.
- `additionalInfo` (string, optional) — The display text providing more information on the eligibility criteria. Mandatory if the eligibilityType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this eligibility criteria.

### BankingProductFeeV2

- `name` (string, required) — The name of the fee.
- `feeType` (enum, required) — The type of fee.
  - Allowed values: `CASH_ADVANCE`, `DEPOSIT`, `DISHONOUR`, `ENQUIRY`, `EVENT`, `EXIT`, `LATE_PAYMENT`, `OTHER`, `PAYMENT`, `PERIODIC`, `PURCHASE`, `REPLACEMENT`, `TRANSACTION`, `UPFRONT`, `UPFRONT_PER_PLAN`, `VARIATION`, `WITHDRAWAL`
- `feeMethodUType` (enum, required) — The reference to the applicable fee charging method structure.
  - Allowed values: `fixedAmount`, `rateBased`, `variable`
- `fixedAmount` (BankingFeeAmount, optional)
- `rateBased` (BankingFeeRate, optional)
- `variable` (BankingFeeRange, optional)
- `feeCap` (string, optional) — The cap amount if multiple occurrences of the fee are capped to a limit.
- `feeCapPeriod` (string, optional) — Specifies a duration over which multiple occurrences of the fee will be capped. Formatted according to ISO 8601 Durations (excludes recurrence syntax).
- `currency` (string, optional) — The currency for which the fee will be charged in. Assumes AUD if absent.
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the feeType specified. Whether mandatory or not is dependent on the value of feeType.
- `additionalInfo` (string, optional) — The display text providing more information on the fee. Mandatory if the feeType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this fee.
- `discounts` (list of BankingProductDiscountV2, optional) — An optional list of discounts to this fee that may be available.

### BankingProductDepositRateV2

- `depositRateType` (enum, required) — The type of rate.
  - Allowed values: `BONUS`, `BUNDLE_BONUS`, `FIXED`, `FLOATING`, `INTRODUCTORY`, `MARKET_LINKED`, `VARIABLE`
- `rate` (string, required) — The rate to be applied.
- `applicationType` (enum, required) — The type of approach used to apply the rate to the account.
  - Allowed values: `MATURITY`, `PERIODIC`, `UPFRONT`
- `calculationFrequency` (string, optional) — The period after which the rate is applied to the balance to calculate the amount due for the period. Calculation of the amount is often daily (as balances may change) but accumulated until the total amount is 'applied' to the account (see applicationFrequency). Formatted according to ISO 8601 Durations (excludes recurrence syntax).
- `applicationFrequency` (string, optional) — The period after which the calculated amount(s) (see calculationFrequency) are 'applied' (i.e., debited or credited) to the account. Formatted according to ISO 8601 Durations (excludes recurrence syntax). Mandatory if the applicationType value is PERIODIC.
- `tiers` (list of BankingProductRateTierV4, optional) — The qualifying criteria or conditions relevant to the associated rate.
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the depositRateType specified. Whether mandatory or not is dependent on the value of depositRateType.
- `additionalInfo` (string, optional) — The display text providing more information on the rate.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this rate.

### BankingProductLendingRateV3

- `lendingRateType` (enum, required) — The type of rate.
  - Allowed values: `BALANCE_TRANSFER`, `BUNDLE_DISCOUNT_FIXED`, `BUNDLE_DISCOUNT_VARIABLE`, `CASH_ADVANCE`, `DISCOUNT`, `FIXED`, `FLOATING`, `INTRODUCTORY`, `MARKET_LINKED`, `PENALTY`, `PURCHASE`, `VARIABLE`
- `rate` (string, required) — The rate to be applied.
- `applicationType` (enum, required) — The type of approach used to apply the rate to the account.
  - Allowed values: `MATURITY`, `PERIODIC`, `UPFRONT`
- `repaymentType` (enum, required) — The option in place for repayments.
  - Allowed values: `INTEREST_ONLY`, `OTHER`, `PRINCIPAL_AND_INTEREST`, `UNCONSTRAINED`
- `loanPurpose` (enum, required) — The reason for taking out the loan.
  - Allowed values: `INVESTMENT`, `OTHER`, `OWNER_OCCUPIED`, `UNCONSTRAINED`
- `comparisonRate` (string, optional) — A comparison rate equivalent for this rate.
- `calculationFrequency` (string, optional) — The period after which the rate is applied to the balance to calculate the amount due for the period. Calculation of the amount is often daily (as balances may change) but accumulated until the total amount is 'applied' to the account (see applicationFrequency). Formatted according to ISO 8601 Durations (excludes recurrence syntax).
- `applicationFrequency` (string, optional) — The period after which the calculated amount(s) (see calculationFrequency) are 'applied' (i.e., debited or credited) to the account. Formatted according to ISO 8601 Durations (excludes recurrence syntax). Mandatory if the applicationType value is PERIODIC.
- `interestPaymentDue` (enum, optional) — When loan payments are due to be paid within each period. The investment benefit of earlier payments affects the rate that can be offered.
  - Allowed values: `IN_ADVANCE`, `IN_ARREARS`
- `tiers` (list of BankingProductRateTierV4, optional) — The qualifying criteria or conditions relevant to the associated rate.
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the lendingRateType specified. Whether mandatory or not is dependent on the value of lendingRateType.
- `additionalInfo` (string, optional) — The display text providing more information on the rate.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this rate.

### ErrorV2Meta

Additional data for customised error codes.

- `urn` (string, optional) — The CDR error code URN which the application-specific error code extends. Mandatory if the error code is an application-specific error rather than a standardised error code.

### BankingProductAdditionalInformationV2_additionalInformationUris

- `additionalInfoUri` (string, required) — The URI describing the additional information.
- `description` (string, optional) — The display text providing more information about the document URI.

### BankingProductBundleProductIdsItems

- `details` (string, optional) — The product ID value.

### BankingFeeAmount

- `amount` (string, required) — The specific amount charged for the fee each time it is incurred.

### BankingFeeRate

- `rateType` (enum, required) — The type of fee rate calculation.
  - Allowed values: `BALANCE`, `INTEREST_ACCRUED`, `TRANSACTION`
- `rate` (string, required) — The fee rate calculated according to the rateType.
- `accrualFrequency` (string, optional) — The indicative frequency with which the fee is calculated on the account if applicable. Formatted according to ISO 8601 Durations (excludes recurrence syntax).
- `amountRange` (BankingFeeRange, optional)

### BankingFeeRange

- `feeMinimum` (string, optional) — The minimum fee that will be charged per occurrence.
- `feeMaximum` (string, optional) — The maximum fee that will be charged per occurrence.

### BankingProductDiscountV2

- `description` (string, required) — A description of the discount.
- `discountType` (enum, required) — The type of discount.
  - Allowed values: `BALANCE`, `DEPOSITS`, `ELIGIBILITY_ONLY`, `FEE_CAP`, `PAYMENTS`
- `discountMethodUType` (enum, required) — The reference to the applicable fee discount method structure.
  - Allowed values: `fixedAmount`, `rateBased`
- `fixedAmount` (BankingFeeDiscountAmount, optional)
- `rateBased` (BankingFeeDiscountRate, optional)
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the discountType specified. Whether mandatory or not is dependent on the value of discountType.
- `additionalInfo` (string, optional) — The display text providing more information on the discount.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this discount.
- `eligibility` (list of BankingProductDiscountEligibility, optional) — The eligibility constraints that apply to this discount. Mandatory if the discountType value is ELIGIBILITY_ONLY.

### BankingProductRateTierV4

- `name` (string, required) — A display name for the tier.
- `unitOfMeasure` (enum, required) — The unit of measure that applies to the minimumValue and maximumValue values, e.g., DOLLAR for a dollar amount (with values in AmountString format), PERCENT for Loan-to-Value Ratio or LVR (with values in RateString format), MONTH or DAY for a period representing a discrete number of months or days for a fixed-term deposit or loan (with values as a string containing a positive integer).
  - Allowed values: `DAY`, `DOLLAR`, `MONTH`, `PERCENT`
- `minimumValue` (string, required) — The number of unitOfMeasure units that form the lower bound of the tier. The tier should be inclusive of this value.
- `maximumValue` (string, optional) — The number of unitOfMeasure units that form the upper bound of the tier or band. For a tier with a discrete value (as opposed to a range of values e.g., one month) this must be the same as minimumValue. Where this is the same as the minimumValue value of the next-higher tier, the referenced tier should be exclusive of this value. If absent, the tier's range has no upper bound.
- `rateApplicationMethod` (enum, optional) — The method used to calculate the amount to be applied using one or more tiers. A single rate may be applied to the entire balance or each applicable tier rate is applied to the portion of the balance that falls into that tier.
  - Allowed values: `PER_TIER`, `WHOLE_BALANCE`
- `applicabilityConditions` (list of BankingProductRateConditionV2, optional) — The applicability conditions for the rate tier.
- `additionalInfo` (string, optional) — The display text providing more information on the rate tier.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this rate tier.

### BankingFeeDiscountAmount

- `amount` (string, required) — The specific amount discounted from the fee each time it is incurred.

### BankingFeeDiscountRate

- `rateType` (enum, required) — The type of fee rate discount calculation.
  - Allowed values: `BALANCE`, `FEE`, `INTEREST_ACCRUED`, `TRANSACTION`
- `rate` (string, required) — The fee rate discount calculated according to the rateType.
- `amountRange` (BankingFeeDiscountRange, optional)

### BankingProductDiscountEligibility

- `discountEligibilityType` (enum, required) — The type of the specific eligibility constraint for a discount.
  - Allowed values: `BUSINESS`, `EMPLOYMENT_STATUS`, `INTRODUCTORY`, `MAX_AGE`, `MIN_AGE`, `MIN_INCOME`, `MIN_TURNOVER`, `NATURAL_PERSON`, `OTHER`, `PENSION_RECIPIENT`, `RESIDENCY_STATUS`, `STAFF`, `STUDENT`
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the discountEligibilityType specified. Whether mandatory or not is dependent on the value of discountEligibilityType.
- `additionalInfo` (string, optional) — The display text providing more information on this eligibility constraint. Mandatory if the discountEligibilityType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this eligibility constraint.

### BankingProductRateConditionV2

- `rateApplicabilityType` (enum, required) — The category of applicability condition associated with the rate.
  - Allowed values: `MIN_DEPOSITS`, `MIN_DEPOSIT_AMOUNT`, `DEPOSIT_BALANCE_INCREASED`, `EXISTING_CUST`, `NEW_ACCOUNTS`, `NEW_CUSTOMER`, `NEW_CUSTOMER_TO_GROUP`, `ONLINE_ONLY`, `OTHER`, `MIN_PURCHASES`, `MAX_WITHDRAWALS`, `MAX_WITHDRAWAL_AMOUNT`
- `additionalValue` (string, optional) — A generic field containing additional information relevant to the rateApplicabilityType specified. Whether mandatory or not is dependent on the value of rateApplicabilityType.
- `additionalInfo` (string, optional) — The display text providing more information on the condition. Mandatory if the rateApplicabilityType value is OTHER.
- `additionalInfoUri` (string, optional) — A link to a web page with more information on this condition.

### BankingFeeDiscountRange

- `discountMinimum` (string, optional) — The minimum fee discount that will be applied per occurrence.
- `discountMaximum` (string, optional) — The maximum fee discount that will be applied per occurrence.

## Examples

**Response**

```json
{
  "data": {
    "productId": "1",
    "lastUpdated": "2026-06-18T11:00:00.000Z",
    "productCategory": "CRED_AND_CHRG_CARDS",
    "name": "Test Product",
    "description": "Test product",
    "brand": "American Express",
    "isTailored": false,
    "effectiveFrom": "2026-03-22T08:14:00.000Z",
    "effectiveTo": "2026-06-25T08:15:00.000Z",
    "brandName": "American Express",
    "applicationUri": "/application",
    "additionalInformation": {
      "overviewUri": "/overview",
      "termsUri": "/terms",
      "eligibilityUri": "/eligibility",
      "feesAndPricingUri": "/fees",
      "bundleUri": "/bundle"
    },
    "cardArt": [
      {
        "cardScheme": "AMEX",
        "cardType": "CREDIT",
        "imageUri": "/card"
      }
    ],
    "bundles": [
      {
        "name": "Test Bundle",
        "description": "Test bundle description"
      }
    ],
    "features": [
      {
        "featureType": "CARD_ACCESS",
        "additionalValue": "Test additional value"
      }
    ],
    "constraints": [
      {
        "constraintType": "MIN_LIMIT",
        "additionalValue": "Test constraint additional value"
      }
    ],
    "eligibility": [
      {
        "eligibilityType": "MIN_AGE",
        "additionalValue": "18"
      }
    ],
    "fees": [
      {
        "name": "Test Fee",
        "feeType": "REPLACEMENT",
        "feeMethodUType": "fixedAmount",
        "fixedAmount": {
          "amount": "10.50"
        }
      }
    ]
  },
  "links": {
    "self": "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/1"
  },
  "meta": {}
}
```

**SDK Code**

```python getProductDetail_example
import requests

url = "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId"

headers = {
    "x-v": "7",
    "Authorization": "Bearer <token>"
}

response = requests.get(url, headers=headers)

print(response.json())
```

```javascript getProductDetail_example
const url = 'https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId';
const options = {method: 'GET', headers: {'x-v': '7', Authorization: 'Bearer <token>'}};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go getProductDetail_example
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId"

	req, _ := http.NewRequest("GET", url, nil)

	req.Header.Add("x-v", "7")
	req.Header.Add("Authorization", "Bearer <token>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby getProductDetail_example
require 'uri'
require 'net/http'

url = URI("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Get.new(url)
request["x-v"] = '7'
request["Authorization"] = 'Bearer <token>'

response = http.request(request)
puts response.read_body
```

```java getProductDetail_example
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.get("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId")
  .header("x-v", "7")
  .header("Authorization", "Bearer <token>")
  .asString();
```

```php getProductDetail_example
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId', [
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'x-v' => '7',
  ],
]);

echo $response->getBody();
```

```csharp getProductDetail_example
using RestSharp;

var client = new RestClient("https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId");
var request = new RestRequest(Method.GET);
request.AddHeader("x-v", "7");
request.AddHeader("Authorization", "Bearer <token>");
IRestResponse response = client.Execute(request);
```

```swift getProductDetail_example
import Foundation

let headers = [
  "x-v": "7",
  "Authorization": "Bearer <token>"
]

let request = NSMutableURLRequest(url: NSURL(string: "https://apigw.americanexpress.com/cdr/unauth/cds-au/v1/banking/products/productId")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "GET"
request.allHTTPHeaderFields = headers

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```