# Actualizar plugin de Discourse de Patreon a API v2

**URL:** https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701
**Category:** Feature
**Tags:** patreon
**Created:** [25 Octubre, 2025 00:40 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701 "2025-10-25T00:40:54Z")
**Posts on this page:** 13
**Page:** 1

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [25 Octubre, 2025 00:40 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/1 "2025-10-25T00:40:55Z")

</div>

Hola a todos 👋

El **plugin de Discourse de Patreon** todavía está utilizando la **API v1 de Patreon** , que ha estado obsoleta durante varios años. Para mantener la integración funcionando correctamente, es necesario actualizarla para usar la API v2.

La **API v2 de Patreon** es la versión compatible y proporciona una funcionalidad equivalente a la v1, junto con un modelo de datos más consistente y relaciones de recursos mejoradas.  
Documentación:

- **Endpoints:** [https://docs.patreon.com/#apiv2-resource-endpoints](https://docs.patreon.com/#apiv2-resource-endpoints)

- **Recursos:** [https://docs.patreon.com/#apiv2-resources](https://docs.patreon.com/#apiv2-resources)

#### Notas clave de migración:

- Algunas llamadas a la API que actualmente usan `/api/oauth2/` deberán actualizarse a los endpoints v2.

- Los usuarios del plugin deberán crear nuevos clientes OAuth de Patreon con ámbitos v2 durante la migración. Los clientes v1 no son compatibles.

- La estructura de datos (por ejemplo, campaña, miembro, promesa) se modela de manera diferente en v2.

Me gustaría saber cuál es el proceso para este tipo de actualizaciones. Estaré encantado de ayudar con la orientación sobre esta migración.

Gracias por mantener esta integración 🙏

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [22 Noviembre, 2025 05:11 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/2 "2025-11-22T05:11:12Z")

</div>

Quería dar seguimiento a este tema. ¿Este complemento todavía se mantiene activamente, o deberíamos asumir que está inactivo y aceptar que la terminación de la API v1 resultará en que el complemento deje de funcionar?

---

<div class="post-metadata">

### Author: ![NateDhaliwal](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/natedhaliwal/32/313494_2.png) [@NateDhaliwal](https://meta.discourse.org/u/NateDhaliwal)
#### Post date: [22 Noviembre, 2025 06:07 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/3 "2025-11-22T06:07:12Z")

</div>

Sí. Creo que todavía se mantiene activamente, ya que es un plugin #official, ha sido #included-in-core, y tiene el commit más reciente de la semana pasada.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [22 Noviembre, 2025 15:30 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/4 "2025-11-22T15:30:25Z")

</div>

La última vez que investigamos esto, Patreon había disuelto el equipo que trabajaba en la API v2 a mitad de camino, por lo que la API v1 funcionaría indefinidamente.

¿Puedes enlazar a algún recurso que diga lo contrario?

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [25 Noviembre, 2025 23:27 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/5 "2025-11-25T23:27:26Z")

</div>

¡Gracias por responder! Fuente de esto: Soy ingeniero en el equipo de Patreon. Nuestra [documentación pública](https://docs.patreon.com/#introduction) y el flujo de creación de clientes tienen avisos sobre la desaprobación de la v1. La v2 ha sido la API principal durante unos 5 años o más, Discourse es una de las últimas integraciones que aún no la utiliza.

EDITAR: No duden en enviarme un mensaje directo o un correo electrónico (en caso de que no reciba notificaciones de Discourse) si necesitan información adicional.

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [21 Marzo, 2026 01:23 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/6 "2026-03-21T01:23:59Z")

</div>

Hola @Falco ¿alguna actualización/plan para actualizar el complemento? Nos gustaría minimizar el impacto de descontinuar la v1. Gracias.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [21 Marzo, 2026 02:20 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/7 "2026-03-21T02:20:07Z")

</div>

Intentaré actualizar la próxima semana. ¿Podemos obtener algunas credenciales de prueba?

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [21 Marzo, 2026 02:57 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/8 "2026-03-21T02:57:18Z")

</div>

¡Genial @falco, te lo agradezco! Patreon no tiene usuarios de prueba públicos. La mejor manera que sugeriría para probar esto sería:

1. Crear tu cuenta de prueba ([https://www.patreon.com/login](https://www.patreon.com/login)) y verificar tu correo electrónico.
2. Solo se permite a los creadores crear clientes OAuth. Necesitarías lanzar tu campaña de creador visitando [https://patreon.com/create](https://patreon.com/create) (el correo electrónico debe verificarse para considerar que la campaña se lanzó).
3. Crear un nivel de prueba [https://patreon.com/c/yourvanity/membership](https://patreon.com/c/yourvanity/membership).
4. Ahora puedes crear el cliente de API v2 en [https://www.patreon.com/portal/registration/register-clients](https://www.patreon.com/portal/registration/register-clients)

Para probar el control de acceso/las funciones de membresía, crearías una cuenta de prueba separada. Luego podrías afiliarte al nivel gratuito de tu campaña de prueba o potencialmente otorgar una membresía de regalo desde el creador.

Estoy disponible para responder, emparejarme o ayudarte por mensajes directos la próxima semana.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [26 Marzo, 2026 17:02 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/9 "2026-03-26T17:02:19Z")

</div>

> [@noertap](#):
>
> Ahora puedes crear el cliente de la API v2 en [Platform | Applications | Patreon](https://www.patreon.com/portal/registration/register-clients)

No logro que este formulario habilite el botón de envío, sin importar lo que intente.

 ![image](https://global.discourse-cdn.com/meta/original/4X/3/9/8/3986a84de42ad1c95d2a58cd020c318dc3aa4474.jpeg)

Es el único obstáculo que tengo para fusionar el cambio.

> <https://github.com/discourse/discourse/pull/38871>
>
> \## Summary
> 
> Patreon API v1 has been deprecated for years and the Patreon team ha…s requested we migrate to v2 (see https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701).
> 
> Since hundreds of existing customers have v1 OAuth clients, this PR supports \*\*both versions simultaneously\*\* via an adapter pattern, controlled by a new \`patreon\_api\_version\` site setting (defaults to \`"1"\` so no one breaks on upgrade).
> 
> \### What changed
> 
> \- \*\*Adapter pattern\*\*: \`Patreon::ApiVersion::V1\` and \`ApiVersion::V2\` modules with identical interfaces for endpoints, response parsing, and OAuth config. \`ApiVersion.current\` routes based on the site setting.
> \- \*\*v2 API support\*\*: campaigns endpoint returns tiers (not rewards), members fetched separately with cursor-based pagination, v2 identity endpoint with explicit field selection, v2 OAuth scopes
> \- \*\*Webhooks accept both formats\*\*: payload version detected from \`data.type\` (\`"pledge"\` → v1, \`"member"\` → v2), regardless of the site setting
> \- \*\*Admin deprecation notice\*\*: \`ProblemCheck::PatreonApiV1Deprecated\` warns on the dashboard when still using v1
> \- \*\*Shared logic unchanged\*\*: rate limiting, PluginStore, group sync, admin UI all version-agnostic
> \- Also fixes pre-existing flaky seed/campaign spec failures
> 
> \### Migration path for existing users
> 
> 1. Admin sees deprecation warning on dashboard
> 2. Create a new v2 OAuth client at https://www.patreon.com/portal/registration/register-clients
> 3. Update credentials in site settings
> 4. Switch \`patreon\_api\_version\` to \`"2"\`
> 5. Creator re-authenticates via Patreon login to get v2-scoped tokens
> 6. Trigger a manual data sync from the Patreon admin panel
> 
> \### Future v1 removal
> 
> When ready to drop v1: delete \`lib/api\_version/v1.rb\`, the problem check, the site setting, v1 fixtures, and v1 test contexts — one clean cut.
> 
> \## Test plan
> 
> \- \[x\] All 41 plugin specs pass (both v1 and v2 contexts)
> \- \[x\] Lint passes on all changed files
> \- \[x\] Zeitwerk reload passes (\`bin/rails runner "Rails.application.reloader.reload!"\`)
> \- \[\] Manual testing with a real Patreon v2 OAuth client

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [27 Marzo, 2026 04:19 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/10 "2026-03-27T04:19:18Z")

</div>

@Falco hemos implementado una solución para esto más temprano hoy, ¡disculpa! ¿Podrías intentarlo de nuevo? Además, qué bien: ¡avances rápidos! 🎉

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27 Marzo, 2026 15:29 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/11 "2026-03-27T15:29:02Z")

</div>

Está funcionando bien en mi sitio de prueba, fusionaré el cambio el lunes temprano.

---

<div class="post-metadata">

### Author: ![noertap](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/noertap/32/531244_2.png) [@noertap](https://meta.discourse.org/u/noertap)
#### Post date: [27 Marzo, 2026 16:25 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/12 "2026-03-27T16:25:00Z")

</div>

¡Eso fue rápido, gracias!

No está relacionado con una actualización a v2, pero es una solicitud general mientras estás preparando este PR: ¿podrías establecer el agente de usuario en un valor personalizado? Algo como `Discourse-Patreon-Plugin/vX.x`. Eso podría ayudarnos a depurar problemas de API en el futuro e identificar clientes. Para la deprecación de v1, vi una serie de agentes de usuario de Faraday y fue así como descubrí que Discourse era una de las aplicaciones restantes de v1.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27 Marzo, 2026 16:29 UTC](https://meta.discourse.org/t/upgrade-patreon-discourse-plugin-to-api-v2/386701/13 "2026-03-27T16:29:35Z")

</div>

Buena idea, agregado al PR.
