Logo GH

Design SDK e suporte linguístico

1) Metas SDK e critérios de sucesso

Developer Experience (DX): API intuitiva, semântica unificada entre os idiomas.
Confiabilidade: timeouts/retrai/idempotidade «da caixa».
Segurança: segredos, assinaturas, TLS, compatibilidade com ambientes proksi/企业.
Observabilidade: logs, métricas, pistas em ferramentas padrão de linguagem.
Economia: mínimo egress/CPU, paginação eficiente, batch.
Estabilidade: semver rigoroso, compatibilidade inversa, ramos LTS.

2) Princípios arquitetônicos

1. Thin cliente, strong contracts: um embrulho SDK acima do protocolo (REST/gRPC), sem lógica de negócio oculta.
2. Superfície Unificed: Conceitos idênticos (Cliente, Request, Response, Erro, Paginator, WebhookVerifier).
3. Safe by default: timeouts razoável, backoff exponencial + jitter, proteção contra repetições.
4. Config layering: END → arquivo config → o construtor → os parâmetros do método.
5. Transporte Pluggable: HTTP/gRPC trocáveis, compatíveis com o proksi/池 de conexões.
6. Testability: interfaces/feições, dependency inhation, record-replay.
7. I18n erros: o 'erro _ código' da máquina está estável; as mensagens são localizáveis.
8. Acessibility: Opções asincrônicas (normalmente 'AsyncClient') onde for apropriado.
9. Segurança-first: segredos não entram em logs, edição PII, criptobiotecas compatíveis FIPS, se necessário.

3) Tabela de suporte e paridade de recursos

LinguagemVersão miniModelo de execuçãoPlataformas/distribuiçãoStatus
TypeScript/JavaScriptNode 18+async/awaitnpm (ESM+CJS), Deno, BunGA
Python3. 9+sync + aioPyPI (`sync`/`aio`), Wheels manylinuxGA
Java11+syncMaven Central, Android (opcional)GA
Go1. 21+sync (ctx)Go modulesGA
.NETnet6. 0+sync/asyncNuGetGA
PHP8. 1+syncComposerBeta
Ruby3. 0+syncRubyGemsBeta
💡 A paridade da API é medida por uma matriz genérica automática: lista de endpoint/fic, data de lançamento, "ha parity? ».

4) Superfície base API (modelo canônico)

Entidades gerais

Cliente: configuração de transporte, chaves, retrações, telemetry hooks.
Request/Response: modelos de segurança/DTO, paginação/cursores.
Errador: classe única com 'status', 'erro _ código', 'trace _ id', 'retriable'.
Paginator/Iterator: excesso preguiçoso de páginas/cursores.
WebhookVerifier: verificação de HMAC/mTLS, dedução por 'event _ id'.

Mini-exemplo (TypeScript)

ts const client = new GambleHubClient({
apiKey: process. env. GH_API_KEY!,
timeoutMs: 10_000,
retries: { max: 5, strategy: "expo-jitter" }
});

const { items, nextCursor } = await client. reports. list({ from, to, cursor });
for await (const report of client. reports. iter({ from, to })) { /... / }

Mini-exemplo (Python, async)

py from gamblehub import AsyncClient, WebhookVerifier

client = AsyncClient(api_key=API_KEY, timeout=10, retries={"max":5})
async for user in client. users. iter(updated_after=ts):
...

verifier = WebhookVerifier(secret=WEBHOOK_SECRET)
if verifier. verify(headers, body): ack()

5) Configuração e ambiente de execução

ENV: `GH_API_KEY`, `GH_ENDPOINT`, `GH_TIMEOUT_MS`, `HTTP_PROXY/HTTPS_PROXY`, `GH_REGION`.
Construtor: substitui-o por ENV.
Per-call overrides: timeout/retrai ao nível do método.
TLS/mTLS: caminho para o certificado/chave, pinning CA, se necessário.
Poulas de conexões: keep-alive, HTTP/2, limitação de paralelismo.

6) Segurança da caixa

Segredos: Não logar, esconder em stack traces; redaction ``.
Assinaturas: HMAC para webhooks, 'X-Key-Id '/rotação de chaves, suporte a «duas chaves» ativo/next.
Idempotidade: Instalação transparente de 'Idempotency-Key' para operações write (reiniciamento seguro).
RBAC/Scopes: Listrações/constantes fáceis para escopos.
Política PII: interfaces de edição padrão para logar.

7) Confiabilidade: timeouts, retrações, back-off

Tempo padrão: 10-15s; connect 3-5s.
Retrai: para 5xx/408/429 (respeitar 'Retry-After'), backoff exponencial + jitter, limite de tentativas/tempo.
Circuito-breaker: opcional em SDK (ou recomendação para libs de terceiros).
Write Idumpotentes: repetição automática da chave; os conflitos → levantar '409 IDEMP _ REPLAY'.

8) Paginação, cursores e streaming

Cursor/iterador: excesso preguiçoso, repetições automáticas em erros transitivos.
Paginação Keyset: organização estável '(updated _ at, id)'.
Backpressure: limite de consultas simultâneas; в async-SDK — `async for`/`channels`.
Streaming (onde disponível): SSE/WebSocket/gRPC-stream com auto-recordect e dedução por 'sequence'.

9) Erros e contrato

Hierarquia unificada:
  • `ApiError` (базовый) → подтипы: `AuthError(401)`, `PermissionError(403)`, `NotFound(404)`, `Conflict(409)`, `RateLimit(429)`, `ValidationError(422)`, `ServerError(5xx)`.
  • Свойства: `status`, `error_code`, `message`, `trace_id`, `retriable`, `details`.
  • Best pratice: mensagens são humanas, 'erro _ código' é estável.

10) Idiomas da língua

TypeScript/JS

Promise-based + geradores de paginação; Pacotes ESM + CJS.
Tree-shaking, polifilos mínimos, sinais abort ('AbortController').

Python

Sync + Async (aiohttp/httpx), gerentes de contexto, 'pydantic' modelos (ou dataclasses).
Wheels для linux/macos/windows; suporte a proxies/NO _ PROXY.

Java

«CompletableFuture» (por necessidade), «AutoCloseable», «Duration», «Executor».
HTTP client: `java. net. http 'ou OkHttp; SLF4J para logs.

Go

Contextos 'context. Context`, `http. Cliente's tuned Transporte, interfaces para testes.
Error wrapping (`fmt. Errorf («% w», pr) '), semântica de erro sentinel.

.NET

`HttpClientFactory`, `CancellationToken`, `IAsyncEnumerable<T>`.
Políticas Polly (retry/circuito-breaker).

... etc para PHP/Ruby (PSR-18, Faraday/Net:: HTTP).

11) Logação, métricas, traçado

Níveis: (ERRO/WARN/INFO/DEBUG), corelação 'trace _ id', desativação de dados sensíveis.
Метрики: `requests_total`, `errors_total{status}`, `retry_count`, `latency_ms`, `throttled_total`.
Pistas: OpenTelemetry hooks (span para API, atributos de endpoint, status, retry).
Modo debug: variável de ambiente 'GH _ SDK _ DEBUG = 1' - impressão HTTP de títulos (sem segredos) e tempos.

12) Documentação e exemplos

Quickstart 5 minutos: auth, primeira consulta, paginação, processamento 429.
Cookbook: webhooks (verificação de assinatura), idumpotentes write, réplicas.
Guia API: Um gene automático de OpenAPI/Protobuf, mas com exemplos «manuais».
Snippets: pedaços de código prontos para tarefas populares (Python/TS/Java/Go/.NET).

13) Geração vs codificação manual

Abordagem combinada codegen (modelos/clientes) + «canetas» manuais para ergonomics/idempotadores/paginadores.
Modelos: um único nome de métodos ('create/get/list/update/delete'). assinaturas.
Verificação de compatibilidade de desenho após regen (CI-gate).

14) Versionização, compatibilidade e depredação

SemVer: X.Y.Z. O quebrador é apenas o maior.
Política de estabilidade: lançamentos menores - adicionando campos/métodos, não alterando contratos.
Deprecation: Anotações/atributos @ Deprecated/Obsolete, avisos no RAND uma vez por processo, janela ≥ 90 dias.
Ramos LTS: backport de critics (sem novas fichas).

15) Lançamentos e cadeia de entregas

CI/CD: Linters/formatores, unit + integração, teste de contrato, e2e vs. banco de areia.
A assinatura dos artefatos é Sigstore/GPG, checksuns nos lançamentos.
Publicação: npm/PyPI/Maven/NuGet/Go/Composer/RubyGems com changelog e notas release.
gate: verificação automática da compatibilidade da API pública (por exemplo, 'apiregistry diff').

16) Testes (matriz de qualidade)

Unit: modelos, serialização, validação, retais/temporizações.
Contract: contra esquemas OpenAPI/Protobuf (negative/edge cases).
Integration: contra sandbox (Idumpotência, 429/5xx, webhooks).
Load/soak: paginação/estirpe, backpressure.
Fuzz: campos/cabeçalhos/limite de tempo.
Compat: SDK antigo ↔ novas APIs e vice-versa.
Smoke-pack: 5 minutos para capturar regresso em CI.

17) Políticas de telemetria e privacidade

Opcional-opt-in: coleta de métricas SDK agregadas (versão, língua, estatais) sem PII.
Config: 'telemetry: off' anonymized 'full' (padrão off/anonymized).
Transparência: Documente o que vai e porquê; Deixe a caixa desligada.

18) Desempenho e FinOps

Batching: combinar pequenos pedidos; limitar o RPS; gzip/br.
Armazenamento em dinheiro ETag/If-None-Match, GET condicional.
Modelos econômicos: iteradores preguiçosos em vez de carregar tudo na memória.
Paralelismo com o limite «max _ concurrency» para não ser «DDOSIT» API.

19) Componentes típicos SDK (esqueletos)

Error (TypeScript)

ts export class ApiError extends Error {
constructor(
readonly status: number,
readonly errorCode: string,
readonly traceId?: string,
readonly retriable?: boolean,
readonly details?: unknown
) { super(`${status} ${errorCode}`); }
}

Paginador (Python)

py class Paginator(Generic[T]):
def __init__(self, fetch_page):
self._fetch = fetch_page self._cursor = None async def __aiter__(self):
while True:
page = await self._fetch(self._cursor)
for item in page. items:
yield item if not page. has_more: break self._cursor = page. next_cursor

WebhookVerifier (Go)

go func Verify(body []byte, signatureHeader, secret string) bool {
parts:= strings. SplitN(signatureHeader, "=", 2)
mac:= hmac. New(sha256. New, []byte(secret))
mac. Write(body)
expected:= base64. StdEncoding. EncodeToString(mac. Sum(nil))
return hmac. Equal([]byte(parts[1]), []byte(expected))
}

20) Apoio, SLA e comunidade

SLA SDK: bags críticos - fix ETA, canais de comunicação, matriz de compatibilidade (SDK↔API).
Issue templates: bug/função/pergunta, auto-triagem de linguagem/versão.
Roadmap/labels: «good first issue», «help wanted».
Security policy: `SECURITY. md ', canal de relatórios de vulnerabilidade, CVE, se necessário.

21) Folha de cheque de qualidade SDK

  • Um único erro-modelo ('status', 'erro _ código', 'trace _ id', 'retriable').
  • Timeouts/retrai/jitter, respeito 'Retry-After'.
  • Idempotidade write, automático 'Idempotency-Key'.
  • Paginação com cursor, iteradores/striptease preguiçosos.
  • WebhookVerifier com HMAC/mTLS e dedução.
  • Configuração por ENV/projeto/configuração.
  • Logar/métricas/OTel-ganchos, modo debug sem segredos.
  • SemVer, depressões de ≥90 dias, ramos LTS.
  • Exemplos completos e cookbook para tarefas populares.
  • Matriz de paridade de fic entre línguas CI.

22) Plano de implementação (3 iterações)

1. MVP (2-3 semanas): Cliente básico, auth, 3-5 endpoint chave, paginação, um único erro-modelo, retrações/temporizações; TS+Python.
2. Scale (3-5 semanas): Java/Go/.NET, WebhookVerifier, idempotidade write, telemetria hooks, geração de modelos a partir de OpenAPI.
3. Pro (contínuo): streaming/SSE/gRPC, otimização perf, ramos LTS, Cookbook avançado, ferramentas de migração/depredação.

23) Mini-FAQ

Gerar tudo ou escrever com as mãos?
Gere modelos/clientes e ergonomics (paginadores, retais, idempotação, assinaturas confortáveis) manualmente.

Será necessário um async-SDK separado?
В Python — да (`AsyncClient`); JS - padrão; NET/Java - chamadas asincrônicas sempre que possível.

Como manter a paridade de línguas?
Matriz de Fic em CI, lançamentos «por raio» (TS→Py→Java→Go→.NET) com «o que está atrasado».

Resultado

O SDK forte é uma superfície única, default confiável e contratos previsíveis iguais em todas as línguas. Dê aos desenvolvedores configurações seguras de caixa, um modelo de erro compreensível, paginação fácil e verificação de webhooks, conclua com documentação de qualidade e semver rigoroso. A integração será rápida, o apoio será barato e o ecossistema sustentável e escalável.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.