-
Notifications
You must be signed in to change notification settings - Fork 0
docs: ledger de contrato al día con B2B 1.5.0 / admin 1.1.0 #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -30,6 +30,12 @@ Estados: `identified` (detectado, sin issue) · `requested` (issue abierto) · | |
| | Post-venta comprador B2C (reenvío de ticket sin credenciales) | `POST /public/tickets/{code}/resend` (reenvía QR/email al mail del comprador, rate-limited, email enmascarado en la respuesta) | B2C (`/api/public`) | mcp ✓ | [#191](https://github.com/AppFreeticket/free-admin/issues/191) | shipped | | ||
|
|
||
| | Authorization server OAuth 2.1 para el MCP remoto — claude.ai exige OAuth para connectors con credenciales. Resuelto **embebiendo el AS en el propio mcp** (v0.10.0): tokens stateless que sellan API key + workspace + sesión admin; no requirió endpoint nuevo en free-admin. `FT_OAUTH_ISSUER` permite delegar a un AS de free-admin si algún día existe | `/.well-known/oauth-authorization-server` (RFC 8414), dynamic client registration (RFC 7591), `/authorize` + `/token` con PKCE y página de consentimiento — todo servido por el mcp | B2B | mcp ✓ | — | shipped | | ||
| | Update endpoints sin `requestBody` en el spec — el mcp no puede tipar el cuerpo, así que `event_dates_create/update`, `ticket_types_update`, `plans_update` y `venues_update` quedan fuera de la Ola B | `POST /events/{id}/dates`, `PATCH /events/{id}/dates/{dateId}`, `PATCH /ticket-types/{id}`, `PATCH /membership-plans/{id}`, `PATCH /venues/{id}` — declarar `requestBody` (schemas `EventDateCreate/Update`, `TicketTypeUpdate`, `MembershipPlanUpdate`, `VenueUpdate`) | B2B | mcp | — | identified | | ||
| | Update endpoints sin `requestBody` en el spec — el mcp no podía tipar el cuerpo, así que `event_dates_create/update`, `ticket_types_update`, `plans_update` y `venues_update` quedaban fuera de la Ola B. **Resuelto en el contrato 1.5.0**: los cinco schemas existen y el mcp los expone (v0.12.0) | `POST /events/{id}/dates`, `PATCH /events/{id}/dates/{dateId}`, `PATCH /ticket-types/{id}`, `PATCH /membership-plans/{id}`, `PATCH /venues/{id}` — schemas `EventDateCreate/Update`, `TicketTypeUpdate`, `MembershipPlanUpdate`, `VenueUpdate` | B2B | mcp ✓ | — | shipped | | ||
| | API key de servicio self-service — un cron server-side (Vercel) no puede usar el device flow interactivo, y no había forma de acuñar una `ft_live_…` sin entrar al backend | `GET/POST/DELETE /api-keys` (scope `read`/`write`, `expiresAt`, el plano solo en la respuesta de creación) | B2B | cli ✓ (`ft api-keys`), mcp ✓ (solo list) | [freeticket-cli#29](https://github.com/AppFreeticket/freeticket-cli/issues/29) | shipped | | ||
|
Comment on lines
+33
to
+34
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 1. contract-gaps.md not in english The PR adds/updates technical documentation content in Spanish, but repository documentation must be written in English. This breaks the repo’s documentation language/locale convention and reduces consistency for the intended audience. Agent Prompt
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 4. Columna de issues ambigua La tabla define la 5ª columna como “Issue free-admin”, pero se agregaron filas que enlazan issues de freeticket-cli en esa columna. Esto rompe la semántica declarada del ledger y el workflow descrito por endpoint-requester (gap ↔ issue en free-admin). Agent Prompt
|
||
| | Service token de plataforma para `ft admin` headless — el superadmin solo tenía la cookie de sesión del browser | `GET/POST/DELETE /api/admin/tokens` | Admin | cli ✓ (`ft admin tokens`), mcp ✓ (solo list) | — | shipped | | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 3. Paths admin con prefijo mixto En el ledger se documentan endpoints admin con prefijo /api/admin mientras el resto de docs usa
paths relativos al contrato (p.ej. /workspaces/{id}). Esta mezcla hace ambiguo si se está listando
el path del spec o la URL completa del backend.
Agent Prompt
|
||
| | Liquidaciones al organizador: monto consignado y estado por evento/función, y el desglose financiero (bruto, cargo de plataforma, facial, comisión de pasarela, 4x1000, neto) | `GET /settlements`, `GET /reports/financials` | B2B | cli ✓ (`ft settlements list`, `ft reports financials`), mcp ✓ | [freeticket-cli#32](https://github.com/AppFreeticket/freeticket-cli/issues/32) | shipped | | ||
| | **PDF de comprobante de liquidación** — el contrato expone `hasDocument` y los `fileName` de los comprobantes, pero no una URL de descarga; el archivo sigue siendo solo del panel. Bloquea archivar el comprobante junto al resto de la documentación financiera | `GET /settlements/{id}/document` (o URL firmada de corta vida en el `Settlement`) | B2B | cli, mcp | [#381](https://github.com/AppFreeticket/free-admin/issues/381) · origen [cli#32](https://github.com/AppFreeticket/freeticket-cli/issues/32) | requested | | ||
| | **Listado de staff cross-workspace** — `GET /staff` está scopeado a un workspace por `X-Workspace-Id`, así que un dashboard con N workspaces hace 1×`/me` + N×`/staff`. El fan-out del mcp (`workspace: "all"`) tapa el síntoma del lado cliente, pero sigue siendo N round trips; en cold start serverless es el tramo más caro | `GET /staff?workspaceIds=a,b,c` devolviendo staff agrupado por workspace | B2B | cli, mcp | [#382](https://github.com/AppFreeticket/free-admin/issues/382) · origen [cli#31](https://github.com/AppFreeticket/freeticket-cli/issues/31) | requested | | ||
| | **Onboarding enterprise white-label por API** — el admin API no expone `webTemplate` / `customDomain` en `PATCH /workspaces/{id}` ni la asignación manual de plan, así que `ft admin enterprise` no se puede construir sin inventar contrato | `PATCH /api/admin/workspaces/{id}` con `webTemplate`, `customDomain`, `customDomainVerifiedAt` + `POST /api/admin/workspaces/{id}/plan` | Admin | cli | [#383](https://github.com/AppFreeticket/free-admin/issues/383) · origen [cli#23](https://github.com/AppFreeticket/freeticket-cli/issues/23) | requested | | ||
|
|
||
| <!-- endpoint-requester: agregá filas nuevas arriba de esta línea, ordenadas por prioridad. --> | ||
| +24 −0 | CHANGELOG.md | |
| +38 −9 | README.md | |
| +1,274 −262 | admin-openapi.json | |
| +1 −1 | api/server.ts | |
| +2,039 −228 | openapi.json | |
| +62 −62 | package.json | |
| +1,082 −1,137 | public-openapi.json | |
| +85 −0 | src/admin-client/sdk.gen.ts | |
| +145 −0 | src/admin-client/types.gen.ts | |
| +17 −1 | src/api.ts | |
| +3 −0 | src/brand.ts | |
| +258 −21 | src/client/sdk.gen.ts | |
| +619 −34 | src/client/types.gen.ts | |
| +16 −6 | src/public-client/client.gen.ts | |
| +3 −2 | src/public-client/index.ts | |
| +116 −54 | src/public-client/sdk.gen.ts | |
| +279 −273 | src/public-client/types.gen.ts | |
| +7 −2 | src/server.ts | |
| +15 −0 | src/tools/admin.ts | |
| +122 −3 | src/tools/b2b-writes.ts | |
| +23 −8 | src/tools/b2b.test.ts | |
| +175 −37 | src/tools/b2b.ts | |
| +75 −0 | src/ui.test.ts | |
| +277 −0 | src/ui.ts | |
| +98 −0 | src/workspaces.test.ts | |
| +183 −0 | src/workspaces.ts |
| +33 −6 | skills/freeticket-cli/SKILL.md | |
| +33 −1 | skills/freeticket-cli/references/commands.md |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
2. Roadmap quedó desactualizado
🐞 Bug⚙ MaintainabilityAgent Prompt
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools