GH GambleHub

Documentazione API: OpenAPI, Swagger, Postman

TL; DR

Il è la fonte della verità, il contratto SDK-Moki ha il portale.
Swagger UI/Redoc è una vetrina leggibile; Postman - script eseguibili.
Usiamo linter, breaking-checks, esempi e schemi di errore, generiamo server SDK e Mok, pubblichiamo il nostro portale di versioning e Sunset.

1) Obiettivi e principi

Contratto uno (1). Tutto il resto viene generato.
La documentazione è eseguibile: esempi di richieste di test in Postman/CLI.
Protezione predefinita: schemi di errore, limiti, autenticazione.
Versioning e ciclo di vita: «v1 »/« v2», Deprecation/Sunset, changelog.

2) Struttura OpenAPI (scheletro minimo)

yaml openapi: 3. 0. 3 info:
title: Payments API version: 1. 2. 0 description: >
Payment transactions: auth/capture/refund/payout. All responses contain trace_id.
servers:
- url: https://api. example. com/v1 tags:
- name: Payments
- name: Payouts components:
securitySchemes:
oauth2:
type: oauth2 flows:
clientCredentials:
tokenUrl: https://idp. example. com/oauth/token scopes:
payments: read: read payments: write: write payments schemas:
Error:
type: object required: [error, error_description, trace_id]
properties:
error: { type: string }
error_description: { type: string }
trace_id: { type: string, format: uuid }
security:
- oauth2: [payments:read]
paths:
/payments/{id}:
get:
summary: Receive payment tags: [Payments]
parameters:
- in: path name: id required: true schema: { type: string, format: uuid }
responses:
'200':
description: Content succeeded:
application/json:
schema: { $ref: '#/components/schemas/Payment' }
'404': { $ref: '#/components/responses/NotFound' }
components:
responses:
NotFound:
description: Content not found:
application/json:
schema: { $ref: '#/components/schemas/Error' }
Suggerimenti:
  • Mettete il schemas/responses/parameters/requestBodies in'components '.
  • Descrivi il securitySchemes (OAuth2/JWT/HMAC) e applicalo a livello paths/global.

3) Standard di errore e metadati

Unico oggetto di errore (sia per RESTE che per webhoop):
yaml components:
schemas:
ApiError:
type: object required: [error, error_description, trace_id]
properties:
error: { enum: [invalid_request, not_found, rate_limited, internal] }
error_description: { type: string }
trace_id: { type: string, format: uuid }

Documentare sempre 429 (rate limit), 401/403, e i titoli «X-RateLimit -», «Retry-After».

4) Esempi: richiest/response, curl e SDK

Per ogni endpoint, un esempio minimo ed esteso.
Generare curl e codice snippet (JS/Python/Go) dal OpenAPI; Non scrivete con le mani.
Applicare valori reali: UUID, data ISO, importi in «minori» (cents).

Esempio di risposta avanzata:
yaml examples:
ok:
value:
id: "pay_123"
amount_minor: 1099 currency: "EUR"
status: "captured"
created_at: "2025-11-03T12:34:56Z"

5) Swagger UI/Redoc - come pubblicare

L'ostello ha due vetrine:

1. Swagger UI ( , try-it-out),

2. Redoc (pagine lunghe leggibili).

Includi tema scuro, ricerca, selettore versionale ('v1', 'v2'), banner Deprecation.

Nascondete «Try it out» per il dominio prod, consentite sulla sandbox.

6) Raccolte Postman: script live

Generare automaticamente una raccolta di e supportare gli ambienti variabili ('{{{n'}}', '{{{ }').
Aggiungere pretesti (recupero del token) e test post-test (assert stato/schemi).
Dividere le cartelle: Auth, Payments, Payouts, Webhooks.
Esportare i monitor (pianificati) per percorsi critici.

Modello di test:
js pm. test("status is 200", () => pm. response. code === 200);
pm. test("schema valid", () => tv4. validate(pm. response. json(), pm. collectionVariables. get("schema_payment")));

7) Moki e sandbox

Genera un server mock da un OpenAPI (per esempi/' echample '/' examples ').
Indicare i vincoli Mok: Idempotenza, ritardi, errori casuali (UAT).
Documentare le differenze sandbox vs prod (limiti, dati, ritardi).

8) Generazione automatica SDK

Dal OpenAPI generare SDK ufficiali (TypeScript, Python, Go).
Criteri di rilascio SDK = SemVer, mapping per la versione API.
In README SDK: autenticazione, retrai, idempotenza, trattamento 429/Retry-After.

9) Linting, controllo rotture e CI

Lintern: spectral (stili/anti-pattern), openapi-differf (breaking-checks).

CI:
  • convalidatore dello schema,
  • linter,
  • contract test contro MCU,
  • assemblaggio Swagger/Redoc/raccolte,
  • pubblicazione sul portale (staging→prod),
  • Avviso di Deprecation/Sunset.

10) Versioning, Deprecation, Sunset

Versione in URI ('/v1 ') e in info. version`.
Le bandiere di obsolescenza sono le intestazioni «Deprecation: true», «Sunset: <RFC1123 date>», «Link: <changelog>».
Il portale contiene uno striscione e un timer fino a spegnersi; Le raccolte Postman per v1 sono congelate (solo bagfix).

11) Sicurezza e privacy al molo

Non pubblicare segreti, URL interni, PAN/PII reali.
Per i campi sensibili, maschera e esempi stub.
Swagger «Try it out» si rivolge solo alla sandbox, con rate-limits.
Descrivere chiaramente OAuth2/OIDC, HMAC (per webhoop) e mTLS (se necessario).

12) Contratti Sile Hyde

Risorse multiple: '/payments ', '/payouts'.
Identificatori: «pay _», «po _», UUIDv4 o ksuid.
Le date sono UTC ISO-8601; il denaro è «amount _ minor + currency».
Paginazione - cursor-based ('? cursor = & limit ='), ordinamento stabile.
Idampotenza - «Idempotency-Key» per le mutazioni.
Oggetto «meta» e «links» stabile per gli elenchi.

13) Sezione Webhooks del molo

Sezione separata con busta evento, firme HMAC, finestra di tempo, retrai, codici di risposta.
Esempi di corpi di eventi e la raccolta Postman per la convalida locale della firma.
Endpoint replay/DLQ e foglio di assegno UAT.

14) Portale d'ingresso: ruoli e pubblicazioni

Sezione: Panoramica, Avvio, Autenticazione, Endpoint, Esempi, Webhook, SDK, Vincoli, Changelog.
Ruoli: API Steward (standard), Domain Owner (contenuti), Tech Writer (modifica), DevRel (portale/comunità).
La ricerca nei campi dei circuiti, la copia dei sample, la raccolta della richiesta di → Postman.

15) Assegno fogli

Prima del lancio:
  • è valida; linter senza errori.
  • Gli esempi coprono 200/4xx/429/5xx.
  • Sicurezza: schemi auth descritti, nessun segreto.
  • Formati da Swagger/Redoc e Postman (prod/sandbox).
  • SDK generati e pubblicati.
  • Sono stati aggiornati changelog e selettore versioni.
Per Deprecation:
  • I titoli Deprecation/Sunset sono inclusi.
  • Striscione nel portale, e-mail ai partner.
  • Le metriche di chiamata della versione obsoleta cadono al livello di destinazione.

16) Anti-pattern

Sorgenti duplicate della verità (wiki ).
Esempi di «faccia a faccia» senza essere avviati in Postman.
Nessun formato unico di errore.
Versione del parametro query invece di URI/dominio.
Swagger con accesso alla prua e senza limiti.
Paginazione e schemi di autenticazione non coerenti.

17) Mini snippet automazione

Generazione della collezione Postman da OpenAPI (pseudo):
bash openapi2postmanv2 -s openapi. yaml -o postman. json -p
Pubblicazione del portale (passi CI, pseudo-YAML):
yaml steps:
- run: spectral lint openapi. yaml
- run: openapi-diff --fail-on-breaking main. yaml openapi. yaml
- run: redoc-cli bundle openapi. yaml -o site/redoc. html
- run: swagger-cli bundle openapi. yaml -o site/swagger. json
- run: openapi2postmanv2 -s openapi. yaml -o site/postman. json -p
- run: npm run deploy:portal

18) Localizzazione e disponibilità

Singoli "info. descrizione _ <lang> 'o due assiemi portali (EN/RU).
Termini nel glossario (KYC/AML, payout, idempotency).
Contrasto, navigazione a tastiera, tema oscuro.

Riepilogo

Raccogli la linea di montaggio della documentazione: un unico contratto OpenAPI di linter e breaking-checks di Swagger/Redoc vetrine della collezione di Postman e il server di SDK di un portale con versioning e Sunset. Esempi regolari, un unico formato di errore e un'autenticazione rigorosa trasformeranno la documentazione da PDF allo scaffale in uno strumento operativo di integrazione, accelerando i partner e riducendo i costi di supporto.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.