CO2T-TSIRailway

Test lab

TSI dev checks against . Sign in with Dynamic (ZeroDev wallet) and the legacy Supabase user model; the BFF stores the main-api bearer JWT in an httpOnly cookie.

Login

Same flow as legacy co2trust storefront: Dynamic widget → validate JWT (server) → upsert users / users_to_dynamic in Supabase → POST /co2trust-services/v1/users/auth with backend secret → httpOnly co2t_console_jwt.

Loading Dynamic login…

Dynamic: not connectedBFF session: not signed in

Direct messages (chat lab)

sign in required — mirrors co2trust-site /api/chat/direct-messages/* flow.

Supabase & messaging tests

Server-side BFF routes use SUPABASE_SERVICE_ROLE_API_KEY only on the server. Requires Dynamic login (BFF JWT cookie). Test messages are tagged tsi-console-test-* for wipe cleanup.

sign in required — Supabase pings and messaging writes need an active session.

Connectivity

Messaging smoke

Sends a tagged DM to Supabase user tsi-console-test@co2t.earth (must exist in legacy users table). Sign in as a different account than the test receiver.

Test data

Uses deploy-console BACKEND_SECRET_KEY server-side (admin JWT optional). Seeds tagged rows: user tsi-console-test-user, supplier tsi-console-test-supplier, product SKU prefix. Wipe only deletes tsi-console-test-* ids.

Platform data explorer

Fetch real DB entities via the BFF proxy. Sign in on Test lab first for JWT-backed routes. Look for pokepocket supplier, products with source=pricecharting or storefront=pokepocket metadata, and the seeded Mankey smoke card (PC-grghtowpqs7m4dzqwrwh57hdhu). Raw JSON is shown below each run.

Platform ops ↗

Pick a quick link to load live API JSON.

Parity checks

Mirrors test:admin-smoke GETs; uses JWT cookie when set.

Backend capability explorer

Every main-api capability, grouped by router. Each request goes through the BFF proxy (/api/tools/proxy) using the signed-in JWT cookie. Edit the path (ids, query) or JSON body before running. Items marked needs backend depend on the RabbitMQ/sync/payments services being healthy.

System & docs

Public health and OpenAPI surface (no auth required).

  • GETHealth probe
  • GETOpenAPI schema
  • GETSwagger /docs (HTML)

Pokepocket (reference storefront)

Supplier-scoped entities for the pokepocket proof point on TSI Postgres.

  • GETPokepocket supplier
  • GETPokepocket products
  • GETPokepocket supplier orders
  • GETMankey product by id

    Smoke card id — compare with Platform ops Mankey row.

  • GETCatalog page (find Mankey SKU)

    Filter client-side for sku PC-grghtowpqs7m4dzqwrwh57hdhu (same as pokepocket BFF).

  • GETMy orders (signed-in)

    Requires JWT — mirrors pokepocket /account/orders BFF.

  • GETMy purchased orders

    Requires JWT — purchase history for account pages.

  • GETProduct orders (checkout)

    Stripe checkout path — requires signed-in user.

Products

  • GETList products
  • GETGet product by id
  • GETDropdown products (DELIVERY|CREDIT)

Suppliers & traders

  • GETList suppliers
  • GETSupplier ids
  • GETGet seeded supplier
  • GETDropdown suppliers
  • GETList traders
  • GETGet trader by id

Orders

  • GETList orders (active)
  • GETBundleable orders
  • GETMy orders
  • GETMy purchased orders
  • GETGet order by id
  • GETOrders by supplier
  • GETOrder by nft id
  • POSTCreate order

    Body schema in /openapi.json (OrderCreate).

Product orders & bundles

  • GETList product orders
  • GETMy product orders
  • GETGet product order by id
  • POSTCreate product order
  • GETList bundle orders
  • GETGet bundle order by id
  • POSTCreate bundle order

NFTs

  • GETList nfts
  • GETMintable nfts
  • GETMy nfts
  • GETGet nft by id
  • GETGet nft by token id

Mailing list

  • GETList subscribers
  • GETGet subscriber by email
  • POSTSubscribe
  • DELETEUnsubscribe

Config upsert

Generic create/update for config models (see /openapi.json for model names).

  • POSTCreate model row
  • PUTUpdate model row

Payments & bank

  • GETPayment stats (all)
  • GETPayment stats (global)
  • GETPayment stats (quarterly)
  • GETPayment transactions
  • GETMy payment transactions
  • GETBank accounts
  • GETMy transfers
  • GETGet transfer by id
  • POSTCreate transferneeds backend

    Bank/payment writes depend on the healthy backend + payment services.

Puro / subgraph

Credit types, methodologies, retirements and inventory (subgraph-synced).

  • GETCredit types
  • GETMethodologies
  • GETRetirementsneeds backend

    Populated by subgraph sync.

  • GETRetirement transactionsneeds backend

    Populated by subgraph sync.

  • GETInventoryneeds backend

    Populated by subgraph sync.

Sync triggers (RabbitMQ)

Enqueue subgraph/orders sync jobs. Require RabbitMQ healthy on main-api.

  • POSTSync order by hashneeds backend
  • POSTSync counter by user addressneeds backend
  • POSTSync balances by addressneeds backend
  • POSTSync nft by token idneeds backend

Console URL: · env: dev