lumnik. / scénarios Tous les scénarios · English

Stripe: tous les clients lus sans écrire la pagination

Objectif Lire tous les clients d'un compte Stripe, page après page, sans écrire la pagination.

Stripe pagine par curseur: chaque page dit has_more, la suivante se demande avec starting_after, l'id du dernier client lu. lumnik a un preset du même nom:

manifests/lab-docker-compose.yml
# Stripe's API, served by localstripe — an open-source, stateful stand-in used in test suites.name: lumnik-stripeservices:  localstripe:    image: python:3.12-slim    command: ["sh", "-c", "pip install --quiet localstripe==1.15.10 && exec localstripe --port 8420"]    ports: ["127.0.0.1:${STRIPE_PORT:-8420}:8420"]   # this machine only
manifests/10-customers.yaml
apiVersion: connectors.lumnik.io/v1kind: Connectormetadata:  name: scenario-stripe-a  connector_type: rest-generic  scopes: [billing]spec:  base_url: http://host.docker.internal:8420  auth: { kind: bearer, token_env: SCENARIO_STRIPE_KEY }   # a Stripe secret key, test mode  endpoints:    - id: customers      path: /v1/customers?limit=10      method: GET      pagination: { kind: stripe }       # starting_after the last id, until has_more is false      target:        kind: hybrid        table: ext.scenario_stripe_a        unique_key: $.id        promote:          - { name: name, path: $.name, type: text }          - { name: email, path: $.email, type: text }          - { name: created, path: $.created, type: timestamptz, transform: from_epoch }
$ lm connector run scenario-stripe-a
run scheduled: 21a0f34b-1641-4247-8e32-d56d6ad8d798

$ lm run get 21a0f34b-1641-4247-8e32-d56d6ad8d798
ID        CONNECTOR          ENDPOINT   STATUS     IN  OUT  SKIPPED  DEAD-LETTERS  STARTED           ENDED             EVALUATED
21a0f34b  scenario-stripe-a  customers  Completed  30  30   0        0             2026-10-30 22:58  2026-10-30 22:58  yes

Limites

  • Rejoué sur localstripe, pas sur Stripe: le vrai Stripe se lit avec le même manifeste et la clé du compte.
  • Chaque nuit relit tout le compte.
  • Clients synthétiques.

Facturation · clients

Les clients sont dans Stripe.

Il faut les lire tous, chaque nuit.

API Stripe servie par localstripe, en test

Le problème

Stripe rend ses clients par pages de 10.

  • Chaque page dit s'il en reste.
  • La suivante se demande à partir du dernier client lu.

Ce qui n'est pas modifié

Le compte reste tel quel.

  • Une clé de test, rangée par lm secret.
  • L'API standard de Stripe.

Ce qu'il a fallu écrire

pagination: { kind: stripe }

On nomme l'API.

Un connecteur de 24 lignes.

Le résultat

25 clients, 3 pages.

  • Chaque client sous son id Stripe.
  • La date de création convertie depuis l'epoch.

Le lendemain

5 nouveaux clients: 30 lignes.

  • Une ligne par client, sans doublon.
  • La nuit relit tout le compte.

La limite

Rejoué sur localstripe, pas sur Stripe.

  • Un faux Stripe libre, utilisé en tests, avec état.
  • Le vrai Stripe se lit pareil, avec la clé du compte.

Essayer

Le scénario se rejoue en local.

Chaque étape est publiée avec sa sortie.

Ce scénario tourne sur lumnik Open, gratuit et open source.

Essayer lumnik Open →