@experian-ecs/connected-api-sdk

中文文档
1.7.0发布于 2026/04/23SEE LICENSE IN LICENSE.mdTypeScriptESM + CJS零依赖近 30 天下载 2.5万

连接体验 API SDK

中文使用文档
文档目录20 节
  1. 认证
  2. 节点Js
  3. 浏览器
  4. 使用量
  5. 答复格式
  6. 警报
  7. 信用属性
  8. 信用报告
  9. 信用分数
  10. 计分计划
  11. 信用分数模拟器
  12. 客户 Auth
  13. 客户
  14. 应享权利
  15. 身份属性
  16. 产品配置
  17. 提议
  18. 登记
  19. 公用事业
  20. 类型警卫

连接解决方案体验 API SDK

  1. 认证
    1. 节点JS
    2. 浏览器
  2. 使用量
    1. 答复格式
    2. 警报
    3. 信用报告
    4. 信用属性
    5. 信用分数
    6. 计分计划
    7. 信用分数模拟器
    8. 客户 Auth
    9. 客户
    10. 应享权利
    11. 身份属性
    12. 产品配置
    13. 提议
    14. 登记
  3. 公用事业
    1. 类型警卫

认证

节点Js

  • 证明sdk

    import { createSDK } from '@experian-ecs/connected-api-sdk'
    
    // environment can either be 'PRODUCTION' or 'SANDBOX'
    const sdk = createSDK({ environment: 'PRODUCTION' })
    
  • 获取访问符

    const tokenRequest = await sdk.auth.getAccessToken({
      grantType: 'trusted_partner',
      clientId: process.env.SDK_CLIENT_ID!,
      clientSecret: process.env.SDK_CLIENT_SECRET!,
      customerId: 'cus_01'
    });
    
  • 在 sdk 实例上设置认证符

    sdk.setConfig({
      token: tokenRequest.data?.access_token
    });
    

浏览器

如果在浏览器中使用 sdk auth.getAccessToken 方法会扔出一个错误来防止用户在公共浏览器环境中暴露他们的客户端ID和客户端秘密. 因此,用户需要从 sdk 外取出有效的 oauth 令牌, 并将其提供给传递到的配置对象 createSDK。 。 。 .

  • 以道具证明sdk

    import { createSDK } from '@experian-ecs/connected-api-sdk'
    
    // environment can either be 'PRODUCTION' or 'SANDBOX'
    const sdk = createSDK({ 
      environment: 'PRODUCTION',
      token: 'your-oauth-token'
    })
    

使用量

答复格式

  • 所有调用 sdk 方法返回单个对象 data, (中文(简体) ), error, (中文(简体) ), meta 键.

    const { data, error, meta } = await sdk.creditScores.getCreditScores();
    
  • 成功实例

    { 
      data: [ {...}, {...} ],
      error: undefined,
      meta: {
        status: 200,
        statusText: 'OK'
      }
    }
    
  • 错误示例

    {
      data: undefined,
      error: [ConnectedSolutionsClientAuthError]: User Not Authorized
        at ft.St [as generateError] (file:/stack/trace/path)
        at k.fetchRequest (file:/stack/trace/path)
        at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
        at async k.fetchWithAuth (file:/stack/trace/path)
        at async file:/stack/trace/path {
        data: {
          type: AUTHENTICATION_ERROR,
          dev_url: 'https://experian.com/unity/docs/UNAUTHORIZED',
          code: 'UNAUTHORIZED',
          message: 'User Not Authorized'
        },
        status: 401
      },
      meta: { 
        status: 401, 
        statusText: 'User Not Authorized' 
      }
    }
    

警报

  • 获取所有提醒

    await sdk.alerts.getAlerts();
    
  • 获取单个警告

    await sdk.alerts.getAlertById({ id: 'alr_01' });
    
  • 获取所有提醒的计数

    await sdk.alerts.getAlertCounts();
    
  • 将提醒标记为已读

    await sdk.alerts.markAlertAsRead({ id: 'alr_01' });
    

信用属性

信用属性 API 支持具有不同响应格式的 v1 和 v2 端点. 使用 version 参数指定要使用的API版本。 留空默认值到 v1

  • 获取所有历史报告的属性数据

    // Defaults to V1
    await sdk.creditAttributes.getCreditAttributes();
    
      // V1 API - returns array of CreditAttributes objects
    await sdk.creditAttributes.getCreditAttributes({ version: 'v1' });
    
    // V2 API - returns CreditAttributes3B object with items array
    await sdk.creditAttributes.getCreditAttributes({ version: 'v2' });
    

信用属性版本响应验证

import { isV1GetCreditAttributesResponse, isV2GetCreditAttributesResponse } from '@experian-ecs/connected-api-sdk'

const { data, error } = await sdk.creditAttributes.getCreditAttributes({
  version: 'v2'
});

if (data) {
  if (isV2GetCreditAttributesResponse(data)) {
    // TypeScript now knows data is CreditAttribute3B
    const { items } = data;
    items.forEach(item => {
      console.log(`Attribute ID: ${item.id}`);
      item.bureau_attributes.forEach(attribute => {
        console.log(`Bureau: ${attribute.bureau}, Reported At: ${attribute.reported_at}, Categories: ${attribute.categories}, Attributes: ${attribute.attributes}`);
      });
    });
  } else if (isV1GetCreditAttributesResponse(data)) {
    // TypeScript now knows data is CreditAttribute[]
    data.forEach(attribute => {
      console.log(`Bureau: ${attribute.bureau}, Reported At: ${attribute.reported_at}, Categories: ${attribute.categories}, Attributes: ${attribute.attributes}`);
    });
  }
} else {
  console.error(error);
}

信用报告

Credit Reports API支持有不同响应格式的v1和v2端点. 使用 version 参数指定要使用的API版本。 留空默认值到 v1

  • 检索所有历史报告

    // Defaults to v1
    await sdk.creditReports.getReports({
      product_config_id: 'procfg_01',
      include_fields: 'report_display',
    })
    
    // Version specific v1
    await sdk.creditReports.getReports({
      version: 'v1',
      product_config_id: 'procfg_01',
      include_fields: 'report_display',
    });
    
    // Version specific v2
    await sdk.creditReports.getReports({
      version: 'v2',
      product_config_id: 'procfg_01',
      report_date: '2025-09-01',
    });
    
  • 获取单一报告

    await sdk.creditReports.getReportById({
      id: '',
      include_fields: 'report_display',
    });
    
    // Version specific v2
    await sdk.creditReports.getReportById({
      id: '1234',
      version: 'v2'
    });
    
  • 检索所有历史报告摘要

    await sdk.creditReports.getReportMeta();
    
    // Version specific v2
    await sdk.creditReports.getReportMeta({
      version: 'v2',
      latest_only: true
    });
    
  • 获取单一报告摘要

    await sdk.creditReports.getReportMetaById({ id: '' });
    
    // Version specific v2
    await sdk.creditReports.getReportMetaById({
      id: '123',
      version: 'v2'
    });
    
  • 订购新报告

    await sdk.creditReports.orderReport({
      product_config_id: 'procfg_01',
      include_fields: 'report_display',
    });
    
    // Version specific v2
    await sdk.creditReports.orderReport({
      version: 'v2',
      product_config_id: 'procfg_01',
    });
    
  • 将报告标为已读

    await sdk.creditReports.markReportAsRead({
      id: '',
      include_fields: 'report_display',
    });
    
    // Version specific v2
    await sdk.creditReports.markReportAsRead({
      version: 'v2',
      id: '1234',
      disposition: { read_status: 'READ' }
    });
    

信用分数

Credit Scores API支持有不同响应格式的v1和v2端点. 使用 version 参数指定要使用的API版本。 留空默认值到 v1

  • 获取所有历史分数

    // Defaults to V1
    await sdk.creditScores.getCreditScores();
    
    // V1 API - returns array of CreditScore objects
    await sdk.creditScores.getCreditScores({ version: 'v1' });
    
    // V2 API - returns CreditScore3B object with items array
    await sdk.creditScores.getCreditScores({ version: 'v2' });
    
  • 以因子信息获取所有历史分数

    await sdk.creditScores.getCreditScores({ include_factors: true });
    
  • 获取所有历史分数的成份信息 - 只有 FICO

    await sdk.creditScores.getCreditScores({ include_ingredients: true });
    
  • 订购新分数

    // Defaults to V1
    await sdk.creditScores.orderCreditScore({ 
      product_config_id: 'procfg_01' 
    });
    
    // V2 API
    await sdk.creditScores.orderCreditScore({ 
      product_config_id: 'procfg_01',
      version: 'v2'
    });
    
  • 信用分数版本响应验证

    import { isV1GetCreditScoresResponse, isV2GetCreditScoresResponse } from '@experian-ecs/connected-api-sdk'
    
    const { data, error } = await sdk.creditScores.getCreditScores({
      version: 'v2'
    });
    
    if (data) {
      if (isV2GetCreditScoresResponse(data)) {
        // TypeScript now knows data is CreditScore3B
        const { items } = data;
        items.forEach(item => {
          console.log(`Score ID: ${item.id}`);
          item.bureau_scores.forEach(score => {
            console.log(`Bureau: ${score.bureau}, Score: ${score.score}`);
          });
        });
      } else if (isV1GetCreditScoresResponse(data)) {
        // TypeScript now knows data is CreditScore[]
        data.forEach(score => {
          console.log(`Score ID: ${score.score_id}, Score: ${score.score}`);
        });
      }
    } else {
      console.error(error);
    }
    

计分计划

  • 获取当前计划

    await sdk.creditScorePlanner.getCreditScorePlan({ 
      product_config_id: 'procfg_01' 
    });
    
  • 获取创建计划的时间表选项

    // FICO
    await sdk.creditScorePlanner.getCreditScorePlanRevisions({ 
      product_config_id: 'procfg_01',
      target_score: 800
    });
    
    // VANTAGE
    await sdk.creditScorePlanner.getCreditScorePlanRevisions({ 
      product_config_id: 'procfg_01',
      max_actions_per_plan: 5
    });
    
  • 创建新计划

    const { data, error } = await sdk.creditScorePlanner.getCreditScorePlanRevisions({
      product_config_id: 'procfg_01',
      target_score: 800,
    })
    
    if(data) {
      const [ selectedRevision, ...revisions ] = data;
    
      await sdk.creditScorePlanner.createCreditScorePlan({
        product_config_id: 'procfg_01',
        ...selectedRevision
      });  
    
    } else {
      console.error(error)
    }
    
  • 删除您的当前计划

    await sdk.creditScorePlanner.deleteCreditScorePlan({ 
      product_config_id: 'procfg_01' 
    });
    

信用分数模拟器

  • 获取所有可供模拟的情景

    范特奇将返回模拟及其模拟结果都来自这种方法.

    FICO只返回可能的模拟,并且需要额外呼叫 simulateScenario 以获取选定模拟的结果。 下面的例子.

    await sdk.creditScoreSimulator.getSimulations({ 
      product_config_id: 'procfg_01' 
    });
    
  • 模拟一个情景 - 只有 FICO

    import { isFicoScenario } from '@experian-ecs/connected-api-sdk'
    
    const { data, error } = await sdk.creditScoreSimulator.getSimulations({
      product_config_id: 'procfg_01'
    })
    
    if(data){
      const {
        simulations: [ selectedScenario, ...simulations ]
      } = data;
    
      if(isFicoScenario(selectedScenario)){
        const { scenario, variations } = selectedScenario;
    
        const simulationResult = await sdk.creditScoreSimulator.simulateScenario({
          product_config_id: 'procfg_01',
          scenario,
          variations
        })
      }
    } else {
      console.error(error)
    }
    

客户 Auth

  • 获取基于知识的认证问题

    const questionsRequest = await sdk.customerAuth.getAuthQuestions();
    
  • 提交基于知识的认证问题的答案

    await sdk.customerAuth.submitAuthAnswers({
      answers: [
        {
          answer_order: 1,
          choice_id: '1',
        },
        {
          answer_order: 2,
          choice_id: '2',
    
        },
      ],
      authentication_id: questionsRequest.authentication_id,
      authentication_session_id: questionsRequest.authentication_session_id
    })
    

客户

  • 收买客户

    await sdk.customers.getCustomerById({ customer_id: 'cus_01' });
    
  • 更新客户

    await sdk.customers.updateCustomer({
      customer_id: 'cus_01',
      first_name: '';
      // any other customer fields
    });
    
  • 删除客户

    await sdk.customers.deleteCustomer({ customer_id: 'cus_01' });
    
  • 按字段搜索客户

    await sdk.customers.searchCustomers({
      count: 10,
      name: { first_name: 'John' },
    });
    
  • 创建新客户端

    await sdk.customers.createCustomer({
      people_id: '',
      reference_id: '',
      first_name: '',
      middle_initial: '',
      last_name: '',
      suffix: '',
      addresses: [
        {
          address_type: 'CURRENT_RESIDENTIAL',
          address1: '',
          address2: '',
          city: '',
          state: '',
          zip: '',
          country_code: 'US',
        },
      ],
      phones: [
        {
          phone_type: 'HOME',
          phone_country_code: '001',
          phone_number: '123-494-3566',
        },
      ],
      emails: [
        {
          email_type: 'PERSONAL',
          email_address: '[email protected]',
        },
      ],
      social_security_number: '',
      date_of_birth: 'yyy-mm-dd',
      outside_auth: false,
      disclosure: {
        accepted_at: 'yyy-mm-ddT00:00:00.000+00:00',
      },
    });
    

应享权利

  • 收回客户的所有应享权利

    await sdk.entitlements.getEntitlements({ customer_id: 'cus_01' })
    
  • 由身份证收回应享待遇

    await sdk.entitlements.getEntitlementById({ entitlement_id: 'ent_01' })
    
  • 为拥有一个或多个产品的客户创建新的权益

    await sdk.entitlements.createEntitlement({
      name: '',
      description: '',
      product_config_ids: [
        'procfg_01'
      ];
      customer_id: 'cus_01';
    })
    
  • 更新客户的现有应享权利

    await sdk.entitlements.updateEntitlement({
      entitlement_id: 'ent_01',
      product_config_ids: [
        'procfg_01'
      ];
      customer_id: 'cus_01';
    });
    
  • 删除权利

    await sdk.entitlements.deleteEntitlement({ entitlement_id: '' });
    
  • 启动一项特别权利

    await sdk.entitlements.activateEntitlement({ entitlement_id: '' });
    
  • 取消使用权

    await sdk.entitlements.deactivateEntitlement({ entitlement_id: '' });
    
  • 将客户赋予新产品

    await sdk.entitlements.entitleCustomerToNewProduct({
      entitlement_id: 'ent_01',
      product_config_id: 'procfg_01',
      customer_id: 'cus_01'
    });
    
  • 激活已享有客户资格的产品

    await sdk.entitlements.activateProduct({
      product_config_id: 'procfg_01',
      entitlement_id: 'ent_01'
    });
    
  • 取消已享有客户资格的产品

    await sdk.entitlements.deactivateProduct({
      product_config_id: 'procfg_01',
      entitlement_id: 'ent_01'
    });
    
  • 删除对客户有利的产品

    await sdk.entitlements.removeProductFromEntitlement({
      product_config_id: 'procfg_01',
      entitlement_id: 'ent_01'
    });
    
  • 获得现有产品对客户的资格状况

    await sdk.entitlements.getProductEligibility({
      product_config_id: 'procfg_01',
      customer_id: 'cus_01'
    });
    

身份属性

  • 获取监测简介

    await sdk.identityAttributes.retrieveMonitoringProfile();
    
  • 创建监视配置

    await sdk.identityAttributes.createMonitoringProfile({
      emails: [{ value: '[email protected]' }],
      phones: [{ value: '123-456-7890' }],
      social_security_numbers: [{ value: '123-45-6789' }],
    });
    
  • 在现有监测配置中添加项目

    await sdk.identityAttributes.createNewMonitoringProfileItem({
      emails: [{ value: '[email protected]' }],
    });
    
  • 更新监测项目

    await sdk.identityAttributes.updateMonitoringProfile({
      emails: [{ id: 'cyb_01JFDHF00Y349X79EYXGFB25K7', value: '[email protected]' }],
    });
    
  • 删除被监视的项目

    await sdk.identityAttributes.deleteMonitoringProfile({
      emails: ['cyb_01JFDHF00Y349X79EYXGFB25K7'],
    });
    

产品配置

Product Config API支持有不同响应格式的v1和v2端点. 使用 version 参数指定要使用的API版本。 留空默认值到 v1。 。 。 .

  • 为租户获取产品配置

    // Defaults to V1
    await sdk.productConfigs.getProductConfigs();
    
    // V1 API - returns product configurations
    await sdk.productConfigs.getProductConfigs({version: 'v1'});
    
    // V2 API - Includes Score Ranges and Disclosures array
    await sdk.productConfigs.getProductConfigs({version: 'v2'});
    
  • 为租户获取单一产品配置

    // Defaults to V1
    await sdk.productConfigs.getProductConfigById({ 
      product_config_id: 'procfg_01' 
    });
    
    // V1 API
    await sdk.productConfigs.getProductConfigById({ 
      product_config_id: 'procfg_01',
      version: 'v1'
    });
    
    // V2 API - Includes Score Ranges and Disclosures array
    await sdk.productConfigs.getProductConfigById({ 
      product_config_id: 'procfg_01',
      version: 'v2' 
    });
    

提议

  • 收回现有的信用卡报价

    await sdk.offers.getOffers({
      product_config_id: 'procfg_01'
    });
    
  • 处理成功空出响应

    const { data, error } = await sdk.offers.getOffers({
      product_config_id: 'procfg_01'
    });
    
    if (data && data.offer_summary.total_count === 0) {
      console.log('No offers available');
    } else if (error) {
      console.error(error);
    }
    

登记

  • 在单一请求中创建客户端、创建权限并激活产品

    await sdk.registrations.createRegistration({
      customer: {
        phones: [
          {
            phone_type: 'HOME',
            phone_country_code: '',
            phone_number: '',
          },
        ],
        date_of_birth: '',
        last_name: '',
        suffix: '',
        social_security_number: '',
        disclosure: {
          accepted_at: 'yyyy-mm-ddT00:00:00.000+00:00',
        },
        emails: [
          {
            email_type: '',
            email_address: '',
          },
        ],
        outside_auth: boolean,
        middle_initial: '',
        people_id: '',
        addresses: [
          {
            address_type: '',
            address1: '',
            address2: '',
            city: '',
            state: '',
            zip: '',
            country_code: '',
          },
        ],
        reference_id: '',
        first_name: '',
      },
      entitlement: {
        name: '',
        description: '',
        available_at: 'yyyy-mm-ddT00:00:00.000+00:00',
        product_config_ids: ['procfg_01'],
      },
    });
    

公用事业

类型警卫

对于打字机用户,要导出帮助工具函数,以便帮助类型缩小的响应类型返回可变响应模型. 可以查看示例使用大小写 模拟信用分数 财务报告和审定财务报表 验证信用分数答复。 。 。 .

  • 计分计划

    function isPlanCompleted(plan: CreditScorePlan): plan is FicoCreditScorePlanCompleted | VantageCreditScorePlanCompleted;
    function isPlanSet(plan: CreditScorePlan): plan is FicoCreditScorePlanCompleted | FicoCreditScorePlanSet | VantageCreditScorePlanCompleted | VantageCreditScorePlanSet;
    function isVantagePlan(plan: CreditScorePlan): plan is VantageCreditScorePlan;
    function isFicoPlan(plan: CreditScorePlan): plan is FicoCreditScorePlan;
    function isFicoRevisionsRequest(request: ScorePlanRevisionsRequest): request is FicoScorePlanRevisionsRequest;
    function isVantageRevisionsRequest(request: ScorePlanRevisionsRequest): request is VantageScorePlanRevisionsRequest;
    function isFicoRevision(revision: ScorePlanRevision): revision is FicoScorePlanRevision;
    function isVantageRevision(revision: ScorePlanRevision): revision is VantageScorePlanRevision;
    
  • 信用分数模拟器

    function isFicoSimulator(data?: CreditScoreSimulator): data is FicoScoreSimulator;
    function isVantageScenario(scenario?: Scenario): scenario is VantageScenario;
    function isFicoScenario(scenario: Scenario): scenario is FicoScenario;
    function isFicoScenarioVariation(variation?: ScenarioVariation): variation is FicoScenarioVariation;
    function isVantageScenarioVariation(variation?: ScenarioVariation): variation is VantageScenarioVariation;
    
  • 信用分数

    function isValidApiVersion(version: string): version is ApiVersion;
    function isCreditScore(data: unknown): data is CreditScore;
    function isCreditScoreV2(data: unknown): data is CreditScore_V2;
    function isBureauScore(data: unknown): data is BureauScore;
    function isValidBureau(bureau: unknown): bureau is Bureau;
    function isCreditScore3B(data: unknown): data is CreditScores_V2;
    function isCreditScoreArray(data: unknown): data is CreditScore[];
    function isV1GetCreditScoresResponse(data: unknown): data is GetCreditScoreResponse<'v1'>;
    function isV2GetCreditScoresResponse(data: unknown): data is GetCreditScoreResponse<'v2'>;
    function isV1PostCreditScoresResponse(data: unknown): data is PostCreditScoreResponse<'v1'>;
    function isV2PostCreditScoresResponse(data: unknown): data is PostCreditScoreResponse<'v2'>;
    
  • 信用属性

    function isCreditAttribute(data: unknown): data is CreditAttributes;
    function isCreditAttributeV2(data: unknown): data is CreditAttribute_V2;
    function isBureauAttribute(data: unknown): data is BureauAttribute;
    function isValidBureauAttribute(bureau: unknown): bureau is Bureau;
    function isCreditAttributesV2(data: unknown): data is CreditAttribute_V2;
    function isCreditAttributeArray(data: unknown): data is CreditAttribute[];
    function isV1GetCreditAttributesResponse(data: unknown): data is GetCreditAttributeResponse<'v1'>;
    function isV2GetCreditAttributesResponse(data: unknown): data is GetCreditAttributeResponse<'v2'>;
    

版本与发布记录

@experian-ecs/connected-api-sdk 共发布 10 个版本,首次发布于 2025/03/12;过去 12 个月发布了 4 个版本。

版本发布日期距今
1.7.0latest2026/04/236 个月前
1.6.02026/04/017 个月前
1.5.02026/03/128 个月前
1.4.02026/02/248 个月前
1.3.02025/10/011.1 年前
1.2.02025/08/081.3 年前

关于 @experian-ecs/connected-api-sdk 的常见问题

@experian-ecs/connected-api-sdk 是什么?

连接体验 API SDK

如何安装 @experian-ecs/connected-api-sdk?

在项目目录运行 npm install @experian-ecs/connected-api-sdk,或使用 pnpm add / yarn add / bun add。

@experian-ecs/connected-api-sdk 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@experian-ecs/connected-api-sdk 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@experian-ecs/connected-api-sdk 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=20.x.x。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@experian-ecs/connected-api-sdk 可以商用吗?

@experian-ecs/connected-api-sdk 使用 SEE LICENSE IN LICENSE.md 许可。许可条款写在包内的独立文件中,请阅读该文件确认可否商用。以上为概括,不构成法律意见,请以许可原文为准。

@experian-ecs/connected-api-sdk 的下载量有多少?

根据 npm 官方下载统计,@experian-ecs/connected-api-sdk 在 2026/10/14 – 2026/11/12 这 30 天内被下载 24,684 次,日均约 823 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@experian-ecs/connected-api-sdk 还在维护吗?

最新版本 1.7.0 发布于 2026/04/23(6 个月前);至今共发布 10 个版本,其中过去 12 个月发布了 4 个;首次发布于 2025/03/12。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。