Guias rápidos

Python

Integre o LiveTP a scripts e serviços Python com httpx ou requests.

Pré-requisitos

  • Python 3.9 ou superior.
  • Uma chave de API disponível em LIVETP_API_KEY.
pip install httpx

1. Crie um cliente

livetp.py
import os
import httpx

client = httpx.Client(
    base_url="https://livetp.app/api/v1",
    headers={"Authorization": f"Bearer {os.environ['LIVETP_API_KEY']}"},
    timeout=15,
)


class LiveTPError(Exception):
    def __init__(self, status: int, error: dict):
        super().__init__(error["message"])
        self.status = status
        self.code = error["code"]
        self.details = error.get("details")


def request(method: str, path: str, **kwargs) -> dict:
    response = client.request(method, path, **kwargs)
    data = response.json()
    if response.is_error:
        raise LiveTPError(response.status_code, data["error"])
    return data

2. Crie um roteiro

import uuid
from livetp import request

script = request(
    "POST",
    "/scripts",
    json={
        "id": str(uuid.uuid4()),  # repetir com o mesmo id não duplica
        "title": "Aula 3: funções",
        "content": "Nesta aula vamos entender o que é uma função...",
        "status": "draft",
    },
)["script"]

3. Busque roteiros

page = request("GET", "/scripts/library", params={"query": "aula", "limit": 50})
for item in page["scripts"]:
    print(item["title"], item["status"])

Enquanto hasMore for true, repita a chamada com offset=nextOffset. Veja Paginação.

4. Atualize o status

from livetp import LiveTPError, request

current = request("GET", f"/scripts/{script_id}")["script"]
try:
    request(
        "PUT",
        f"/scripts/{script_id}",
        json={
            "title": current["title"],
            "content": current["content"],
            "status": "review",
            "expectedRevision": current["revision"],
        },
    )
except LiveTPError as error:
    if error.code == "conflict":
        latest = error.details["current"]  # versão salva no servidor

Tratando limites

Em 429, aguarde o valor de Retry-After (60 segundos) antes de tentar de novo:

import time

try:
    request("GET", "/scripts/library")
except LiveTPError as error:
    if error.status == 429:
        time.sleep(60)