用于向 Pax8 合作伙伴 API 发出 API 请求的 Python 包
项目描述
Pax8 合作伙伴 API 库
这是 Pax8 合作伙伴 API 的 python 实现。它仍在进行中,但可以使用。请报告您在问题下遇到的任何错误,或提交拉取请求,我会修复它。
功能性
以下部分概述了到目前为止已实现的功能,以及仍有待实现的路线图。API 实现和官方文档之间存在一些差异,请参阅 Pax8 API 错误部分了解更多信息。
一般的
- 获取访问令牌
- 访问令牌缓存(到磁盘)
- <strike>Access Token Caching (To Redis/Memcache)</strike> (To Do)
- <strike>加密访问令牌缓存</strike>(待办事项)
- <strike>自动限速</strike>(待办事项)
API 令牌缓存
从 Pax8 收到的用于交换 client_id 和 secret 的 API 令牌是一个相对长寿命的令牌,因此存在将其缓存到磁盘的选项(将来还会缓存到 redis 和 memcache)。出于安全原因,默认情况下不会这样做,但可以通过将 cache_token 参数设置为 true 并将 cache_location 参数设置为您希望保存文件的位置来启用。令牌当前未加密,因此建议仅在您是机器的唯一用户时使用此选项。默认保存位置在用户主文件夹中。
API 资源
被击中的资源尚未实施。标记为 Experimental 的资源是未记录的 Pax8 API 的一部分,请参阅下面的更多信息。
-
client.Company.list(filter=filters.CompanyFilter).get(id: uuid)- <罢工>
.create(company: types.Company)</罢工> .get_ms_tenant_id(id: uuid)实验性.list_contacts(id: uuid).get_contact(id: uuid, contact_id: uuid)- <罢工>
.create_contact(contact: types.Contact)</罢工> - <罢工>
.update_contact(contact: types.Contact)</罢工> - <罢工>
.delete_contact(id: uuid, contact_id: uuid)</罢工>
-
client.Product.list(filter: filters.ProductFilter).get(id: uuid).list_provisioning_details(id: uuid).list_dependencies(id: uuid).list_pricing(id: uuid)
-
client.Order.list(filter: filters.OrderFilter).get(id: uuid)- <罢工>
.create(order: types.Order)</罢工>
-
client.Subscription.list(filter: filters.SubscriptionFilter).get(id: uuid).get_history(id: uuid)- <罢工>
.update(subscription: types.Subscription)</罢工> - <罢工>
.delete(id: uuid)</罢工> .list_usage_summaries(id: uuid, filter: filters.UsageSummaryFilter)
-
client.Invoice.list(filter: filters.InvoiceFilter).get(id: uuid).list_items(id: uuid, filter: filters.InvoiceItemFilter)
-
client.UsageSummary.list_for_subscription(id: uuid, filter: filters.UsageSummaryFilter).get(id: uuid).list_usage_lines(id: uuid, filter: filters.UsageSummaryLineFilter)
V3 API 资源(未记录的 API)
有几个未记录的 API 用于实现 Pax8 合作伙伴门户 ( https://app.pax8.com ) 的功能,这些 API 已在此库中实现,由于其未记录的性质,在上面标记为实验性的。这些 API 不保证是稳定的,并且可能随时更改。使用风险自负。
如果您希望实现任何未记录的 API,请打开一个问题,我会尽快处理。您可以在此处找到可用端点的完整列表:https ://app.pax8.com/p8p/api/v3/
安装
来自 PyPi
pip3 install pax8
从源头
git clone https://github.com/scheibling/py-pax8.git
cd py-pax8
python3 setup.py install
用法
创建 API 令牌
为了能够使用 API,您必须首先在 Pax8 合作伙伴应用程序 ( https://app.pax8.com ) 中创建一个令牌。为了能够看到执行此操作的选项,您必须首先在工具 -> 合作伙伴外壳 -> Pax8 合作伙伴 API 合作伙伴外壳下注册一个合作伙伴外壳。完成此操作后,您可以在个人资料图片 -> 编辑个人资料 -> 开发人员应用程序 -> 创建下创建一个新的客户端 ID 和密码。
使用示例
导入库和检索资源
from pax8 import Pax8Client
from pax8 import filters
from pax8 import enums
client = Pax8Client(
client_id='your_client_id',
client_secret='your_client_secret',
cache_token=True,
cache_location='~/pax8_token.json'
)
# List all customers (companies)
client.Company.list()
# List all customers (companies) with pagination and the following options
# First Page
# Page Size 10
# Sort by Name (Ascending)
# Filter by city = 'New York'
companies = client.Company.list(
filters.CompanyFilter(
page=0,
size=10,
sort=enums.CompanySortBy.NAME,
sort_direction=enums.SortDirection.ASCENDING,
city='New York'
)
)
# Recursively get all contacts and the MS Partner ID for the companies retrieved above
for company in companies:
print(f'Company: {company.name}')
print(f'MS Partner ID: {client.Company.get_ms_tenant_id(company.id)}')
print('Contacts:')
for contact in client.Company.list_contacts(company.id):
print(f'\t{contact.first_name} {contact.last_name} ({contact.phoneNumber})')
Pax8 API 错误
订阅
- 订阅不包含文档中所述的“commitmentTerm”字段,而是包含“commitment”字段
订单
- 当从 API 检索到订单并且合作伙伴下订单时,API 返回“Pax8Partner”而不是“Pax8 Partner”。创建新订单时,必填值为“Pax8 Partner”。
联系人
- 除了名为“电话”的字段外,联系人还包含一个未记录的字段“电话号码”。
- 联系人包含一个未记录的字段“phoneCountryCode”
- 联系人包含一个未记录的字段“phoneCountryCallingcode”
发票
- InvoiceItem.rateType 值记录为小写,但在 API 中是首字母大写(至少对于 Flat,无法验证其他值)
使用总结
- List Usage Summary Lines 没有为 API 调用指定任何分页选项,但 API 确实支持分页。
致谢
- dkschruteBeets用于API 的 Powershell 实现,这是一个很好的参考(特别是对于未记录的 API)
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
pax8-0.5.tar.gz的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | df555375ae4ab16d14a1aca68248c40d1ef73f9a2170f2b4d21cca24c22a6043 |
|
| MD5 | 7f4328516210e5c68fe253d0262249d1 |
|
| 布莱克2-256 | dd741b5f707a745c25abdec3c204994e07c166b8bc5f677d30c0303a4d3b7eba |