跳转到主要内容

TransIP API包装器

项目描述

Python TransIP

PyPI - Python Version PyPI - Downloads PyPI - Format License GitHub Workflow Status GitHub contributors

python-transip 是一个用于 TransIP REST API V6 的 Python 包装器。

简介

欢迎使用Python TransIP文档。

REST API V6

python-transip实现了新的TransIP REST API,以RESTful方式管理所有产品,这意味着对于大多数产品,您可以轻松地进行创建、更新和删除调用。

该包装器尽量接近官方API文档的命名约定。

SOAP V5 API(已弃用)

强烈建议用户使用新的REST API,因为SOAP API已被弃用。如果您仍然依赖于尚未在python-transip中实现的功能,请考虑提出一个功能请求,并在同时使用transip-api (已弃用)

安装

python-transip可在PyPI上获得

$ python -m pip install python-transip

python-transip官方支持Python 3.6及以上版本。

文档

完整的API参考和用户指南可在Read the Docs上找到。

身份验证

为了通过python-transip管理TransIP产品,您需要经过身份验证。REST API V6需要使用符合JSON Web Token标准的访问令牌。

要获取访问令牌,您应首先使用控制面板生成密钥对。然后,您可以将私钥传递给python-transip客户端,允许客户端生成新的访问令牌,例如:

import transip

# You can initialize a TransIP client using a private key directly.
PRIVATE_KEY = '''-----BEGIN PRIVATE KEY-----
...
'''
client = transip.TransIP(login='demouser', private_key=PRIVATE_KEY)

# You can also initialize a TransIP client by telling it where to find the
# private key file on the system.
client = transip.TransIP(login='demouser', private_key_file='/path/to/private.key')

或者,您也可以通过提供访问令牌进行身份验证。这在使用演示令牌测试API时特别有用,例如:

import transip
from transip.v6 import DEMO_TOKEN

# You can initialize a TransIP client using an access token directly.
client = transip.TransIP(access_token=DEMO_TOKEN)

通用

通用TransIP API资源允许您管理产品、可用区域并调用API测试资源。

产品

管理可用的TransIP产品和产品规范。

Product

当列出TransIP上可用的所有产品时,将返回一个包含transip.v6.objects.Product对象的列表。

Product

Product类提供了以下属性

  • name:产品的名称。
  • description:产品描述。
  • price:以分计算的金额。
  • recurringPrice:产品的周期性价格,以分计算。
  • elements:列出产品元素的详细信息的服务。

ProductElement

当列出transip.v6.objects.Product对象的所有产品元素时,将返回一个包含transip.v6.objects.ProductElement对象的列表。

ProductElement

ProductElement类提供了以下属性

  • name:产品元素的名称。
  • description:产品元素描述。
  • amount:数量。

列出所有产品

检索具有其名称、描述和价格的产品的列表。

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# List all available TransIP products.
products = client.products.list()
# Show product information on the screen.
for product in products:
    print((
        f"Product {product.name} ({product.description}) costs "
        f"{product.price} (cents), after which it costs "
        f"{product.recurringPrice} (cents)"
    ))

列出产品的规格

获取产品的规范。这将列出产品的所有不同元素及其包含的数量,例如,vps-bladevps-x4有2个CPU核心元素。

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Show product specification information on the screen for all available
# TransIP products.
for product in client.products.list():
    print(f"Product {product.name} ({product.description}):")
    elements = product.elements.list()
    for element in elements:
        print(f"- Has {element.amount} {element.name}: {element.description}")

可用区

管理TransIP可用区域。

AvailabilityZone

当列出TransIP上可用的所有可用区域时,将返回一个包含transip.v6.objects.AvailabilityZone对象的列表。

AvailabilityZone

AvailabilityZone类提供了以下属性

  • name:可用区域的名称。
  • country:可用区域所在国家的两位字母代码。
  • isDefault:如果为true,则此为默认区域,新VPS和克隆将创建在此区域。

列出可用区

检索可用的可用区域。

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# List all available availability zones.
zones = client.availability_zones.list()
# Show availability zone information on the screen.
for zone in zones:
    print((
        f"Availability zone {zone.name} in {zone.country} "
        f"(default: {zone.isDefault})"
    ))

API测试

一个简单的测试资源,以确保一切正常。

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Check if everything is working by calling the API test resource.
if client.api_test.test():
    print("Everthing is working!")

账户

TransIP账户API资源允许您管理发票和SSH密钥。

发票

管理绑定到您的TransIP账户的发票。

Invoice

当列出绑定到您的TransIP账户的所有发票时,将返回一个包含transip.v6.objects.Invoice对象的列表。

Invoice

Invoice类提供了以下属性:

  • invoiceNumber:发票号码。
  • creationDate:发票创建日期。
  • payDate:发票支付日期。
  • dueDate:发票截止日期。
  • invoiceStatus:发票状态。
  • currency:此发票使用的货币。
  • totalAmount:发票总额(以分显示)。
  • totalAmountInclVat:包含增值税的发票总额(以分显示)。
  • items:列出单个发票项目的详细信息的服务。

InvoiceItem

当列出绑定到transip.v6.objects.Invoice对象的所有发票项目时,将返回一个包含transip.v6.objects.InvoiceItem对象的列表。

InvoiceItem

InvoiceItem类提供了以下属性:

  • product:产品名称。
  • description:产品描述。
  • isRecurring:支付是否为周期性。
  • date:订单行项目应开具发票的日期。
  • quantity:发票项目的数量。
  • price:不含增值税的价格(以分显示)。
  • priceInclVat:含增值税的价格(以分显示)。
  • vat:收取的增值税金额。
  • vatPercentage:计算增值税的百分比。
  • discounts:包含应用的折扣的字典。
    • description:应用的折扣描述。
    • amount:折扣金额(以分计)。

该类有以下方法

  • pdf(file_path)将发票存储为PDF文件,位置由file_path关键字参数提供。当file_path是目录时,PDF文件将使用发票号码作为其基本名称保存。

列出所有发票

通过调用transip.TransIP.invoices.list()检索绑定到您的TransIP账户的所有发票。这将返回一个包含transip.v6.objects.Invoice对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# List all invoices attached to your TransIP account.
invoices = client.invoices.list()
# Show invoice information on the screen.
for invoice in invoices:
    print(f"Invoice {invoice.invoiceNumber} was paid on {invoice.payDate}")

注意:当使用演示访问令牌时,API当前不列出任何发票。

列出单个发票

通过调用transip.TransIP.invoices.get(id)根据其发票号码检索绑定到您的TransIP账户的单个发票。这将返回一个transip.v6.objects.Invoice对象。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Show invoice information on the screen.
print(f"Invoice {invoice.invoiceNumber} was paid on {invoice.payDate}")

注意:当使用演示访问令牌时,API当前不列出任何发票。

按发票编号列出发票项目

通过在transip.v6.objects.Invoice对象上调用items.list()来检索绑定到您的TransIP账户的单个发票的发票项目。这将返回一个包含transip.v6.objects.InvoiceItem对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Retrieve all items of a single invoice.
items = invoice.items.list()
# Show invoice information on the screen.
for item in items:
    print(f"Product {item.product} ({item.description})")

注意:当使用演示访问令牌时,API当前不列出任何发票。

检索发票作为PDF文件

任何发票都可以通过在transip.v6.objects.Invoice对象上调用pdf(file_path)来保存为PDF文件。

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a single invoice by its invoice number.
invoice = client.invoices.get('F0000.1911.0000.0004')
# Save the invoice as a PDF file.
invoice.pdf('/path/to/invoices/')

注意:当使用演示访问令牌时,API当前不列出任何发票。

SSH密钥

SshKey

当列出绑定到您的TransIP账户的所有SSH密钥时,将返回一个包含transip.v6.objects.SshKey对象的列表。

SshKey

SshKey类提供了以下属性:

  • id:SSH密钥标识符。
  • key:SSH密钥。
  • description:SSH密钥描述(最大255个字符)。
  • creationDate:此SSH密钥被添加的日期(时区:欧洲/阿姆斯特丹)。
  • fingerprint:SSH密钥的MD5指纹。

该类有以下方法

  • delete()将删除您的TransIP账户中的SSH密钥。
  • update()将发送更新的属性到TransIP API。

列出所有SSH密钥

通过调用 transip.TransIP.ssh_keys.list() 获取您TransIP账户所有附加的SSH密钥。这将返回一个包含 transip.v6.objects.SshKey 对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# List all SSH keys attached to your TransIP account.
ssh_keys = client.ssh_keys.list()
# Show SSH key information on the screen.
for ssh_key in ssh_keys:
    print(f"SSH key {ssh_key.id} has fingerprint {ssh_key.fingerprint}")

注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。

通过ID获取SSH密钥

通过调用 transip.TransIP.ssh_key.get(id) 通过其ID检索您TransIP账户中附加的单个SSH密钥。这将返回一个 transip.v6.objects.SshKey 对象。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a SSH key by its ID (provided by TransIP).
invoice = client.ssh_keys.get(123)
# Show SSH key information on the screen.
print(f"SSH key {ssh_key.id} has fingerprint {ssh_key.fingerprint}")

注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。

添加新的SSH密钥

通过调用 transip.TransIP.ssh_key.create(data) 将新的SSH密钥添加到您的TransIP账户。关键字参数 data 需要一个包含 sshKeydescription 属性的字典。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Data used to create a new SSH key.
key_data = {
    "sshKey": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDf2pxWX/yhUBDyk2LPhvRtI0LnVO8PyR5Zt6AHrnhtLGqK+8YG9EMlWbCCWrASR+Q1hFQG example",
    "description": "Jim key"
}
# Add the new SSH key to your TransIP account.
client.ssh_keys.create(key_data)

注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。

更新SSH密钥

通过调用 transip.TransIP.ssh_key.update(id, data) 更新您TransIP账户中的现有SSH密钥。关键字参数 id 是由TransIP提供的SSH密钥ID,而关键字参数 data 需要一个包含 sshKeydescription 属性的字典。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Dictionary containing the new description of the SSH key
key_data = {
    "description": "Jim key"
}
# Update SSH key (ID: 123) with the new description.
client.ssh_keys.update(123, key_data)

transip.v6.objects.SshKey 类还提供了一个 update() 方法,用于在更改任何可更新属性后从实例更新 SshKey 对象。

注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。

删除SSH密钥

通过调用 transip.TransIP.ssh_key.delete(id) 从您的TransIP账户中删除现有的SSH密钥。关键字参数 id 是由TransIP提供的SSH密钥ID。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Delete SSH key with ID 123.
client.ssh_keys.delete(123)

transip.v6.objects.SshKey 类还提供了一个 delete() 方法,用于从实例中删除 SshKey 对象。

注意:在使用演示访问令牌时,当前API不会列出任何SSH密钥。

域名

TransIP API 资源允许您管理域名、品牌、联系人、DNS、DNSSEC、名称服务器、操作、SSL、WHOIS、可用性和调用tlds资源。

管理 domains 和相关资源的文档尚未全部完成。请随时提交 问题 以添加文档中缺少的部分。

域名

管理域名。

Domain

当列出您的TransIP账户中的所有域名时,将返回一个包含 transip.v6.objects.Domain 对象的列表。

Domain

Domain 类提供了以下属性

  • name:包括顶级域的域名。
  • authCode:由注册机构生成的此域的authcode。
  • isTransferLocked:如果此域支持转移锁定,当域在注册机构中锁定转移能力时,此标志为True。
  • registrationDate:域的注册日期,格式为YYYY-mm-dd。
  • renewalDate:域的下一次续订日期,格式为YYYY-mm-dd。
  • isWhitelabel:如果此域已添加到您的白标中。
  • cancellationDate:取消日期,格式为YYYY-mm-dd h:i:s,如果域处于活动状态,则为None。
  • cancellationStatus:取消状态,如果域处于活动状态,则为None,如果域已取消,则为‘cancelled’。
  • isDnsOnly:此域是否为DNS仅。
  • tags:添加到此域的自定义标签。
  • contacts:管理域联系人的服务。
  • dns:管理域DNS记录的服务。
  • nameservers:管理域名称服务器的服务。

列出所有域名

通过调用 transip.TransIP.domains.list() 获取您TransIP账户中注册的所有域名。这将返回一个包含 transip.v6.objects.Domain 对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# List all domains.
domains = client.domains.list()
# Show domain information on the screen.
for domain in domains:
    print(f"Domain {domain.name} was registered at {domain.registrationDate}")

检索现有域名

通过调用 transip.TransIP.domains.get(name) 通过其名称获取您TransIP账户中注册的单个域名。这将返回一个 transip.v6.objects.Domain 对象。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name
domain = client.domains.get('transipdemonstratie.nl')
# Show domain information on the screen.
print(f"Domain {domain.name} was registered at {domain.registrationDate}")

DNS

管理域的DNS记录。此处所做的任何更改都将推送到TransIP名称服务器。

DnsEntry

当列出 transip.v6.objects.Domain 对象的所有DNS记录时,将返回一个包含 transip.v6.objects.DnsEntry 对象的列表。

DnsEntry

DnsEntry 类提供了以下属性

  • name:dns条目的名称,例如‘@’或‘www’
  • 过期时间:DNS条目的过期期限,单位为秒。例如,86400表示一天的过期时间。
  • 类型:DNS条目的类型。可能的类型有‘A’,‘AAAA’,‘CNAME’,‘MX’,‘NS’,‘TXT’,‘SRV’,‘SSHFP’和‘TLSA’。
  • 内容:DNS条目的内容,例如‘10 mail’,‘127.0.0.1’或‘www’。

该类有以下方法

  • delete()将从域中删除DNS记录。
  • update()将发送更新后的属性到TransIP API。这只能在更新DnsEntry的内容属性且没有其他具有相同名称过期时间类型属性的DNS记录时使用。

列出域名的所有DNS条目

通过在transip.v6.objects.Domain对象上调用dns.list()来检索您在TransIP账户中注册的单个域的DNS记录。这将返回一个transip.v6.objects.DnsEntry对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the DNS records of a single domain.
records = domain.dns.list()
# Show the DNS record information on the screen.
for record in records:
    print(f"DNS: {record.name} {record.expire} {record.type} {record.content}")

向域名添加新的单个DNS条目

通过在transip.v6.objects.Domain对象上调用dns.create(data)来向域添加新的DNS记录。关键字参数data是一个包含名称过期时间类型内容属性的字典。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single DNS record.
dns_entry_data = {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.1"
}
# Add the DNS record to the domain.
domain.dns.create(dns_entry_data)

更新单个DNS条目

通过在transip.v6.objects.Domain对象上调用dns.update(data)来更新域的单个DNS记录。关键字参数data是一个包含名称过期时间类型内容属性的字典。

这只能在更新DNS条目的内容属性且没有其他具有相同名称过期时间类型属性的DNS记录时使用。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single updated DNS record.
dns_entry_data = {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.2"  # The update content.
}
# Update the content of a single DNS record.
domain.dns.update(dns_entry_data)

更新域名的所有DNS条目

通过在transip.v6.objects.Domain对象上调用dns.replace()来一次性更新您在TransIP账户中注册的单个域的所有DNS记录。

注意:这将删除所有现有的DNS记录。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the DNS records of a single domain.
records = domain.dns.list()

for record in records:
    # Update the A-record for localhost
    if record.name == 'localhost' and record.type == 'A':
        record.content = '127.0.0.1'

# Replace all the records with the updated ones
domain.dns.replace(records)

从域名中删除DNS条目

通过在transip.v6.objects.Domain对象上调用dns.delete(data)来从域中删除现有的DNS记录。关键字参数data是一个包含名称过期时间类型内容属性的字典。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Dictionary containing the information for a single DNS record.
dns_entry_data = {
    "name": "www",
    "expire": 86400,
    "type": "A",
    "content": "127.0.0.1"
}
# Delete the DNS record from the domain.
domain.dns.delete(dns_entry_data)

transip.v6.objects.DnsEntry类还提供了一个delete()方法,用于从实例中删除DnsEntry对象。

域名服务器

管理域的名称服务器。

Nameserver

当列出transip.v6.objects.Domain对象的所有名称服务器时,将返回一个transip.v6.objects.Nameserver对象的列表。

class Nameserver

Nameserver类提供了以下属性:

  • hostname:此名称服务器的域名。
  • ipv4:此名称服务器的可选IPv4粘合记录。
  • ipv6:此名称服务器的可选IPv6粘合记录。

列出域名的域名服务器

通过在transip.v6.objects.Domain对象上调用nameserver.list()来检索您在TransIP账户中注册的单个域的名称服务器。这将返回一个transip.v6.objects.Nameserver对象的列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the nameservers of a single domain.
nameservers = domain.nameservers.list()
# Show the nameserver information on the screen.
for nameserver in nameservers:
    print(f"Nameserver: {nameserver.hostname}")

更新域名的域名服务器

通过在transip.v6.objects.Domain对象上调用nameservers.replace()来一次性更新您在TransIP账户中注册的单个域的所有名称服务器。

注意:这将删除域上之前配置的所有名称服务器。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a domain by its name.
domain = client.domains.get('transipdemonstratie.nl')
# Retrieve the nameservers of the domain.
nameservers = domain.nameservers.list()

# Update the ipv4 glue record of the first nameserver.
nameserver[0].ipv4 = '195.135.195.195'

# Replace all the records with the updated ones
domain.nameservers.replace(nameservers)

VPS

管理VPS和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。

HA-IP

管理HA-IP和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。

托管

管理托管和相关资源的文档尚未编写。请随时提交一个问题,以添加文档中缺失的部分。

托管

管理托管位置。

共址服务

在列出您的TransIP账户中的所有托管位置时,会返回一个transip.v6.objects.Colocation对象列表。

Colocation

Colocation类提供了以下属性:

  • name:托管位置名称。
  • ipRanges:IP地址范围列表。

列出所有共址服务

通过调用transip.TransIP.colocations.list()检索您TransIP账户中注册的托管位置。这将返回一个transip.v6.objects.Colocation对象列表。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve the colocations registered in your TransIP account.
colocations = client.colocations.list()
# Show the colocations information on the screen.
for colocation in colocations:
    ip_ranges = ' '.join(colocation.ipRanges)
    print(f"Colocation: {colocation.name} has IP ranges: {ip_ranges}")

获取共址服务

通过调用transip.TransIP.colocations.get(name)根据其ID检索您TransIP账户中注册的单个托管位置。这将返回一个transip.v6.objects.Colocation对象。

例如

import transip
# Initialize a client using the TransIP demo token.
client = transip.TransIP(access_token=transip.v6.DEMO_TOKEN)

# Retrieve a colocation by its name.
colocation = client.colocations.get('example2')
# Show colocation information on the screen.
ip_ranges = ' '.join(colocation.ipRanges)
print(f"Colocation: {colocation.name} has IP ranges: {ip_ranges}")

变更日志

以下记录了python-transip的所有重要更改。

未发布

0.6.0 (2021-11-01)

添加

  • Python 3.10支持 (#49)。

0.5.0 (2021-02-10)

添加

  • transip.v6.objects.Domain.nameservers服务中一次性替换单个域所有现有名称服务器的选项。
  • transip.TransIP.colocations服务中列出所有托管位置的选项 (#24)。
  • transip.TransIP.colocations服务中通过名称检索单个托管位置的选项 (#24)。
  • 允许访问令牌从所有IP地址而不是仅从白名单中的IP地址使用的选项 (#46)。

0.4.0 (2021-01-24)

添加

  • CHANGELOG.md文件以列出每个版本的python-transip的所有重要更改。
  • transip.TransIP.api_test服务,允许调用测试资源以确保一切正常。
  • transip.TransIP.invoices服务中列出附加到您的TransIP账户的所有发票的选项。
  • transip.v6.objects.Invoice对象将发票保存为PDF文件的选项。
  • transip.TransIP.products服务中列出TransIP中所有可用的产品的选项。
  • transip.v6.objects.SshKey对象更新单个SSH密钥的选项。
  • transip.v6.objects.Domain.dns服务以及从transip.v6.objects.DnsEntry对象更新单个DNS记录内容的选项。
  • transip.v6.objects.Domain.dns服务一次性替换单个域所有现有DNS记录的选项。

项目详情


下载文件

下载适合您平台的自定义文件。如果您不确定选择哪一个,请了解有关安装软件包的更多信息。

源分发

python-transip-0.6.0.tar.gz (56.3 kB 查看哈希)

上传时间

构建分发

python_transip-0.6.0-py3-none-any.whl (56.8 kB 查看哈希)

上传时间 Python 3

由以下支持