使用 Oauth2 从 Xero API 获取基于联系人姓名的联系人详细信息

Get Contact Details based on Contact Name from Xero API using Oauth2

我正在通过 Xero API(使用 OAuth2)根据姓名从 Xero 获取联系人的详细信息。现在的问题是,我可以获得联系人的详细信息,但某些详细信息始终为空,例如跟踪类别。

我为此联系了 Xero 支持。他们建议通过 GUID 获取联系人。但问题是我需要按姓名获取,因为我正在搜索在 Xero 中共享相同姓名的联系人。所以可能有多个联系人,如果我按名称获取它不会给我跟踪类别详细信息。

这是我获取联系人的方式。

List<Contact> contactList = new List<Contact>();
                
var AccountingApi = new AccountingApi();
var response = await AccountingApi.GetContactsAsync(accessToken, xeroTenantId, null,
                                string.Format("FirstName != Null && FirstName.ToLower().Contains(\"{0}\")", "aaron"));

contactList = response._Contacts.ToList();

注意: 联系人指Xero.NetStandard.OAuth2.Model.Accounting
AccountingApi 指的是Xero.NetStandard.OAuth2.Api

通过此代码我可以获得联系人,但跟踪类别始终为空。如何在不通过GUID搜索的情况下获取所有联系人的详细信息。

有人可以帮我吗?

Xero 联系人:https://developer.xero.com/documentation/api/contacts
跟踪类别:https://developer.xero.com/documentation/api/tracking-categories

我在文档和 API 规范中看到联系人具有 SalesTrackingCategoriesPurchasesTrackingCategories 但我遇到了问题实际上通过 UI 或 API.

设置

你能否在你的 Xero UI 上截屏,其中设置了该用户的跟踪类别,以及关于从 UI 返回的内容的一些其他数据?

嘿 - 在 UI 中设置了它们。我只有发票的跟踪设置,没有联系人。谢谢

那么您是否通过该键单击了嵌套数组?

SalesTrackingCategories 可能有一个包含值的嵌套 SalesTrackingCategory 数组?

我仔细检查了另一个 SDK,它序列化了正确的数据,所以我的直觉是这可能是 SDK 在将其解析为数组时存在逻辑问题的问题..

最好直接在回购协议中创建一个问题 link 这个问题 - https://github.com/XeroAPI/Xero-NetStandard/issues 我会标记我管理那个的同事。

供参考 - 端点调用 JSON 需要像这样构造才能成功更新它们。

// POST https://api.xero.com/api.xro/2.0/Contacts/<contact-uuid>
{
  "SalesTrackingCategories": [{
    "TrackingCategoryName": "Contact Tracking",
    "TrackingOptionName": "Cool customer"
  }]
}

在与 Xero 支持团队讨论后,我发现当您像这样搜索时,他们会故意包装数据,因此如果我想根据通用名称或类似名称获取联系人的所有详细信息,我将不得不通过页面数字。在我的例子中,页面=1。 (假设在检查符合 where 条件的前 100 条记录时,一页中共享相同名称的记录不会超过 100 条)。如果您有超过 100 个联系人的名字与您传递的名称相同,那么 page=2 将 return 第二组 100 个联系人。

参考:https://central.xero.com/s/case?caseId=5003m0000174dtJAAQ