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-sdkPython 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:
| Argumento | Variável | Padrão |
|---|---|---|
api_key | YET_API_KEY | — |
base_domain | YET_BASE_DOMAIN | yet.com.br |
cloud_url | YET_CLOUD_URL | https://cloud.<base> |
workspace_url | YET_WORKSPACE_URL | https://<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.