SDKs

SDK Python

yet-sdk: um client para todos os produtos da sua empresa, sem nada a instalar além do próprio Python.

Instalação

bash
pip install yet-sdk

Python 3.10 ou mais novo.

Um client

Um client guarda uma API key e encontra os endereços da sua empresa a partir dela:

main.py
import yet

client = yet.Client()  # the key from YET_API_KEY

for env in client.cloud.environments.list():
    print(env["name"], env["domain"])

Todo argumento cai no ambiente quando não é dado:

ArgumentoVariávelPadrão
api_keyYET_API_KEY—
base_domainYET_BASE_DOMAINyet.com.br
cloud_urlYET_CLOUD_URLhttps://cloud.<base>
workspace_urlYET_WORKSPACE_URLhttps://<company>.<base>

Produto por produto

client.settings: workspace, people, apps. client.iam: access, keys, activity. client.cloud: racks, servers, runtimes, pools, environments, namespaces, applications, databases, dns.

Argumentos e respostas em snake_case, como a API: o que o Yet responde vem como ele diz — dicts, como a referência da API mostra. Uma mudança manda só o que recebe: o resto fica.

Settings

python
everyone = client.settings.people.list()  # {"people": [...], "members": [...]}

email = client.settings.people.add(
    via="password",
    full_name="Ana Costa",
    password=password,
    mailbox="ana",
    domains=["acme.dev"],
)

client.settings.apps.set_off(["sketch"])

Cloud

python
server = client.cloud.servers.create("box")
print(client.cloud.servers.join(server["id"])["command"])  # run it on the machine

env = client.cloud.environments.create("staging", runtime_id=runtime["id"], color="amber")
db = client.cloud.databases.create("postgres", "orders", environment_id=env["id"])

client.cloud.applications.update(app["id"], replicas=3)
client.cloud.applications.release(app["id"], "ghcr.io/acme/api:1.4.0")

Erros

Uma recusa levanta yet.YetError, com as palavras do próprio Yet em message e o status em status. yet.NotFoundError e yet.ConflictError são os tipos mais comuns:

python
try:
    client.cloud.namespaces.create("shop")
except yet.ConflictError as err:
    print(err.message)  # There is a namespace with that name already.
O SDK tem versão própria, em SemVer. Enquanto abaixo de 1.0, uma versão minor pode mudar o que ele expõe; o CHANGELOG dele diz como.