a method to retrieve details about a particular account product 
        
        { 
            "error": "",
            "code": 200,
            "method": "GET",
            "url": "https://...",
            "headers": { },
            "json": {
              "productId": "3300",
              "productName": "Capital One 360 Money Market Account",
              "cdTerms": [
                "12M"
              ],
              "annualPercentageYieldDetails": {
                "annualPercentageYieldType": "simple",
                "annualPercentageYield": 1.4,
                "tieredAnnualPercentageYield": [
                  {
                    "tierDescription": "$0 - $9,999.99",
                    "annualPercentageYield": 1.4
                  }
                ],
                "termBasedAnnualPercentageYield": [
                  {
                    "term": "6M",
                    "annualPercentageYield": 1.2
                  }
                ]
              },
              "disclosures": {
                "productDisclosureUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#360savingsdisclosure",
                "termsAndConditionsUrl": "https://www.capitalone.com/online-money-market-account/disclosures/#360moneymarketagreement",
                "electronicFundTransferDisclosureUrl": "https://www.capitalone.com/cds/online-cds/disclosures/#electronicfundtransferdisclosurestatement",
                "privacyPolicyUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#privacypolicy",
                "wireTransferAgreementUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#wirefundstransferdisclosurestatement",
                "paperlessAgreementUrl": "https://www.capitalone.com/terms_eddn",
                "fraudProtectionAgreementUrl": "https://www.capitalone.com/terms-personal-data",
                "tcpaDisclosureContent": "If number(s) provided above is(are) mobile phone number(s), it is (they are) my mobile phone number(s), by clicking on the button below, I consent to receive autodialed and prerecorded/artificial calls , including texts, relating to my relationship with Capital One (which may include handling, servicing, and billing for any of my accounts). Message and Data rates may apply. You can stop these types of messages by replying STOP in response to a text message, or by following any other instructions contained in the time-sensitive call.\n[Radio button] You can call or text me through automated means\n[Radio button] You can only contact me through non-automated mean"
              }
            }
        }

def account_product(self, product_id):
        
        ''' a method to retrieve details about a particular account product 
        
        { 
            "error": "",
            "code": 200,
            "method": "GET",
            "url": "https://...",
            "headers": { },
            "json": {
              "productId": "3300",
              "productName": "Capital One 360 Money Market Account",
              "cdTerms": [
                "12M"
              ],
              "annualPercentageYieldDetails": {
                "annualPercentageYieldType": "simple",
                "annualPercentageYield": 1.4,
                "tieredAnnualPercentageYield": [
                  {
                    "tierDescription": "$0 - $9,999.99",
                    "annualPercentageYield": 1.4
                  }
                ],
                "termBasedAnnualPercentageYield": [
                  {
                    "term": "6M",
                    "annualPercentageYield": 1.2
                  }
                ]
              },
              "disclosures": {
                "productDisclosureUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#360savingsdisclosure",
                "termsAndConditionsUrl": "https://www.capitalone.com/online-money-market-account/disclosures/#360moneymarketagreement",
                "electronicFundTransferDisclosureUrl": "https://www.capitalone.com/cds/online-cds/disclosures/#electronicfundtransferdisclosurestatement",
                "privacyPolicyUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#privacypolicy",
                "wireTransferAgreementUrl": "https://www.capitalone.com/savings-accounts/online-savings-account/disclosures/#wirefundstransferdisclosurestatement",
                "paperlessAgreementUrl": "https://www.capitalone.com/terms_eddn",
                "fraudProtectionAgreementUrl": "https://www.capitalone.com/terms-personal-data",
                "tcpaDisclosureContent": "If number(s) provided above is(are) mobile phone number(s), it is (they are) my mobile phone number(s), by clicking on the button below, I consent to receive autodialed and prerecorded/artificial calls , including texts, relating to my relationship with Capital One (which may include handling, servicing, and billing for any of my accounts). Message and Data rates may apply. You can stop these types of messages by replying STOP in response to a text message, or by following any other instructions contained in the time-sensitive call.\n[Radio button] You can call or text me through automated means\n[Radio button] You can only contact me through non-automated mean"
              }
            }
        }
        '''
    
        title = '%s.account_product' % self.__class__.__name__
    
    # validate inputs
        input_fields = {
            'product_id': product_id
        }
        for key, value in input_fields.items():
            object_title = '%s(%s=%s)' % (title, key, str(value))
            self.fields.validate(value, '.%s' % key, object_title)

    # construct url
        url = self.deposits_endpoint + 'account-products/%s' % product_id
    
    # construct method specific errors
        error_map = { 
            404: 'Not Found. No products found for the provided productId.'
        }

    # send request
        details = self._requests(url, errors=error_map)

        return details