> ## Documentation Index
> Fetch the complete documentation index at: https://docs.lerian.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Socios en Reporter

> Restringe la credencial de un socio en Reporter a las instituciones o a los templates que elijas, indícale cómo nombrarlos en cada solicitud, y lee los rechazos que recibe.

Un [socio](https://docs.lerian.studio/es/platform/access-manager/features/partners/overview) puede llamar a Reporter con su propia credencial. En Reporter, restringes esa credencial a algunas instituciones, a algunos templates, o a ambos. Esta página muestra cómo elegir ese ámbito, qué alcanza cada opción y qué recibe el socio cuando sale de él.

Todo socio de Reporter necesita un ámbito: al menos una institución o un template.

## Paso a paso

***

**1. Elige con qué trabaja el socio**

Elige el ámbito más estrecho que cubra lo que el socio necesita. Cada fila es una restricción que puedes agregar. El **campo en la API** es el `field` de una entrada de ámbito; la Console muestra el nombre de la primera columna.

| Restricción | Campo en la API | Qué alcanza el socio | Qué se rechaza |
| - | - | - | - |
| **Institución** | `institutionId` | Los reportes de sus propias instituciones: crearlos, listarlos, y leerlos y descargarlos por ID bajo la institución. El registro de su propia institución. Suscribir sus instituciones a documentos regulatorios y generar sus remesas. | Otras instituciones, un reporte que no nombra institución, la lista de instituciones, los templates, y toda ruta que lee un reporte por ID sin nombrar la institución. |
| **Template** | `templateId` | Sus propios templates y su contenido. Los reportes de sus propios templates: crearlos, listarlos, y leerlos y descargarlos por ID bajo el template. | Otros templates, un reporte que no nombra template, la lista de templates, las instituciones, generar remesas regulatorias, y toda ruta que lee un reporte por ID sin nombrar el template. |

Las dos restricciones se pueden combinar. Un socio restringido por ambas nombra una institución y un template de su ámbito en toda solicitud sobre reportes, y lee un reporte por ID solo bajo ambos. Cada valor es el ID que Reporter devuelve cuando creas la [institución](https://docs.lerian.studio/es/products/reporter/console/managing-institutions.md) o el template.

El catálogo de ámbito lista todas las restricciones de Reporter. Léelo con [Consultar el catálogo de ámbito de un producto](https://docs.lerian.studio/es/reference/platform/access-manager/retrieve-a-product-s-scope-catalog.md) para `reporter`.

Algunas reglas valen para todo ámbito:

* Una solicitud que no nombra un elemento de un tipo restringido se rechaza cuando actúa sobre reportes. Por ejemplo, un socio restringido a algunas instituciones no puede listar todos los reportes de tu tenant.
* Una query que lista varios valores se rechaza cuando cualquiera de ellos está fuera del ámbito. Un campo del cuerpo acepta un valor: una lista en él se rechaza con `400`.
* Las rutas que actúan sobre todo el tenant se rechazan a todo socio: fuentes de datos, plazos, métricas, eventos, las listas de templates y de instituciones, el catálogo regulatorio, las suscripciones regulatorias y sus mapeos, y las correcciones, la aprobación y la procedencia de una remesa regulatoria.

**2. Da al socio sus permisos y su ámbito**

Crea el socio, o cámbialo, en la [Console](https://docs.lerian.studio/es/platform/access-manager/features/partners/console.md) o con la [API de Identity](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md). El identificador del producto es `reporter`.

* Agrega al menos una entrada de ámbito de Reporter. Sin ella, Access Manager rechaza el socio con `400` y `IDE-1060`.
* Marca los recursos y las acciones. Lo máximo que puedes dar es lo que el rol `reporter-editor-role` tiene en tu tenant.

Access Manager verifica cada escritura que das contra el ámbito. Una escritura que actúa sobre todo el tenant nunca se da a un socio, y se rechaza con `400` y `IDE-1056`. La Console marca la línea como **Outside the scope**. En Reporter, esas escrituras son:

* Crear, cambiar o eliminar templates, fuentes de datos, plazos e instituciones.
* Cambiar o eliminar una suscripción regulatoria y su mapeo.
* Aprobar una remesa regulatoria (`regulatory-approval`).

Las escrituras que un socio puede recibir son `reports` con `post`, para generar reportes, y `regulatory` con `post`, para suscribir sus instituciones y generar sus remesas.

**3. Crea su aplicación de Reporter**

Crea la aplicación del socio con el producto `reporter`. Consulta cómo crear las aplicaciones del socio en la [guía de la API](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md#create-the-partners-applications) o en la [Console](https://docs.lerian.studio/es/platform/access-manager/features/partners/console.md#create-the-partners-applications). Envía el client ID y el client secret al socio por un canal seguro.

**4. Indica al socio cómo nombrar sus elementos**

En las rutas que leen un reporte, el path trae la institución, el template o ambos, según la ruta que el socio elige. En las demás rutas, el socio los nombra en las queries y los cuerpos que Reporter ya tiene. Solo se verifican las restricciones que el socio tiene: cada valor que nombra para una de ellas debe estar dentro de su ámbito. Un socio restringido solo por template puede nombrar cualquier institución.

| Rutas | Escrituras | Lecturas y rutas por ID |
| - | - | - |
| Reportes: `/v1/reports` | Para crear: cuerpo `institution` y `templateId` | Para listar: query `institution_id` o `institutionId`, y `template_id` o `templateId` |
| Reportes por ID: `/v1/institutions/{institutionId}/reports/{id}`, `/v1/templates/{templateId}/reports/{id}`, `/v1/institutions/{institutionId}/templates/{templateId}/reports/{id}`, cada una también con `/download` | Ninguna: las rutas solo leen | Path `institutionId` para un socio restringido por institución, `templateId` para uno restringido por template, y ambos para uno restringido por ambos |
| Instituciones: `/v1/institutions/{institutionId}` | Ninguna: las escrituras nunca se dan a un socio | Path `institutionId` |
| Templates: `/v1/templates/{templateId}`, `/v1/templates/{templateId}/content` | Ninguna: las escrituras nunca se dan a un socio | Path `templateId` |
| Remesas regulatorias: `/v1/regulatory/subscriptions`, `/v1/institutions/{institutionId}/regulatory/reports` | Para suscribir: cuerpo `institution`. Para generar una remesa: path `institutionId`, y cuerpo `subscriptionId` con una suscripción de esa institución | Ninguna: las lecturas actúan sobre todo el tenant |

Un socio lee un reporte por ID solo por las rutas que nombran su institución o su template. `GET /v1/reports/{id}` y su `/download` se rechazan a todo socio. Para generar una remesa, un socio usa `/v1/institutions/{institutionId}/regulatory/reports`. `POST /v1/regulatory/reports` se rechaza a todo socio.

Un reporte de otra institución o de otro template, pedido bajo el path del propio socio, responde `404` con `RPT-0011`. Es la misma respuesta que para un ID que no existe. Lo mismo vale para una suscripción regulatoria de otra institución, enviada bajo la institución del propio socio.

> [!WARNING]
>
> Lo que el socio ve en un reporte es lo que el template y la fuente de datos leen. Reporter limita las filas a una institución solo por el ámbito de la institución: las filas de cada fuente de datos que le pertenecen. Antes de dar una institución a un socio, verifica que el ámbito de la institución nombre sus filas en toda fuente de datos que sus templates leen.
>
> Un socio restringido solo por template no queda limitado a una institución: puede generar sus templates para cualquier institución. Da a ese socio templates y fuentes de datos hechos solo para él. Si un socio lee filas que no son suyas, el template, la fuente de datos o el ámbito de la institución está mal configurado. Es un error de configuración, no de autorización, y la corrección está en esa configuración.

**5. Confirma que funciona**

Esta verificación supone que el socio tiene el recurso `reports` con la acción `get` en Reporter, y un ámbito restringido a una o más instituciones. Usa la credencial del socio. Lee un reporte de una institución dentro de su ámbito. La respuesta es `200`:

```bash theme={null}
REPORTER_BASE_URL="https://reporter.<your-domain>"        # your Reporter base URL
REPORTER_BEARER_TOKEN="paste-the-partner-access-token-here"
INSTITUTION_ID="paste-an-institution-id-in-the-scope-here"
REPORT_ID="paste-a-report-id-of-that-institution-here"

curl -s -o /dev/null -w '%{http_code}\n' \
  -H "Authorization: Bearer ${REPORTER_BEARER_TOKEN}" \
  "${REPORTER_BASE_URL}/v1/institutions/${INSTITUTION_ID}/reports/${REPORT_ID}"
```

Envía la misma solicitud con una institución fuera del ámbito. La respuesta es `403`. Para ver el código, quita el `-o /dev/null`: el cuerpo de la respuesta trae `AUT-1020`.

## Si algo falla

***

| Código | Estado | Qué significa | Qué hacer |
| - | - | - | - |
| `AUT-1020` | 403 | La solicitud está fuera de los permisos o fuera del ámbito del socio, o no nombra un elemento que el ámbito exige. | Verifica que la solicitud nombre su institución o su template en el campo de esa ruta, con un valor del ámbito del socio. Verifica también que el socio tenga el permiso de esa ruta. |
| `RPT-0011` | 404 | El reporte o la suscripción regulatoria no existe, o pertenece a otra institución u otro template que el que nombra el path. Nada se lee ni se cambia. | Verifica el ID, y la institución o el template en el path. |
| Sin código | 400 | Un campo del cuerpo recibió una lista de valores. | Envía una institución o un template en el campo. |
| `AUT-1009` | 401 | El socio está suspendido. | Reactiva el socio. |
| `AUT-1010` | 401 | La solicitud está fuera de la ventana de validez del socio. | Cambia la ventana de validez. |

La respuesta no indica si fueron los permisos o el ámbito los que rechazaron la solicitud. Es intencional: un socio no puede usar un rechazo para saber qué instituciones o templates existen fuera de su ámbito.

Para todos los demás códigos, consulta la [lista de errores de Reporter](https://docs.lerian.studio/es/reference/products/reporter/reporter-error-list.md). Para los rechazos al crear o cambiar un socio, consulta los [códigos de error](https://docs.lerian.studio/es/platform/access-manager/features/partners/api.md#error-codes) de la guía de la API.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.