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

# Descripción General de Projection

> Diseñe políticas de Projection para que los webhooks y las respuestas de Get Submission entreguen solo los datos que su sistema necesita

## Por qué Projection es importante

Las respuestas de webhooks y `GET/Submission` incluyen cada campo que el solicitante ingresó o que Argos generó durante el procesamiento. A medida que los envíos crecen, el tamaño del payload, las obligaciones de almacenamiento de PII y la complejidad de la gestión de datos escalan juntos.

Projection le permite persistir políticas de exclusión por proyecto para que sus aplicaciones solo reciban las porciones de datos que les interesan, habilitando flujos de datos con privilegios mínimos sin modificar los flujos de trabajo principales.

<Info>
  Las políticas de Projection se crean y gestionan exclusivamente a través de la API `POST /projection` en lugar del dashboard.
</Info>

## Alcance y restricciones

* Projection actualmente se aplica solo a envíos creados a través de Liveform.
* La política afecta los eventos de webhook vinculados a esos envíos (`submission.submit`, `submission.approved`, `submission.rejected`) y la API `GET/Submission` por igual.
* `GET/Submission` devuelve datos basados en la Projection asignada en el momento del envío. Editar una política después no cambia retroactivamente los envíos existentes.

<Warning>
  Cada proyecto puede almacenar hasta 10 políticas de Projection. Crear una undécima política devuelve `409 Projection count limit exceeded`.
</Warning>

## Componentes de la política

| Componente      | Descripción                       | Consideraciones clave                                                                                                            |
| --------------- | --------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `name`          | Identificador legible por humanos | Solo letras minúsculas, dígitos y guiones bajos; único por proyecto.                                                             |
| `mode`          | Cómo se manejan los datos         | Solo la opción `exclude` está disponible actualmente.                                                                            |
| `fields`        | Array de campos a ocultar         | Debe usar valores de la lista permitida en [`POST /projection`](/es/idcheck/api-reference/api-reference-guide/post-projection).  |
| `projection_id` | ID generado por el sistema        | Referenciado por URLs de Liveform, registros de webhook y payloads de `GET/Submission` para confirmar qué política fue aplicada. |

<Tip>
  Incluya intención o versionado en el campo `name` (por ejemplo, `aml_minimal_v1`) para que los equipos puedan reutilizar políticas con confianza.
</Tip>

## Cómo funciona el flujo

1. Llame a `POST /projection` para definir el conjunto de exclusión y recibir un `projection_id`.
2. Cifre ese `projectionId` (o `projectionName`) dentro de la URL de Liveform o el payload del token.
3. Una vez que el usuario finaliza el envío, los webhooks y `GET/Submission` emiten respuestas ya filtradas por la Projection elegida.

<RequestExample>
  ```bash cURL theme={null}
  curl --location 'https://rest-api.argosidentity.com/v3/projection' \
    --header 'Content-Type: application/json' \
    --header 'x-api-key: spearmint_project_key' \
    --data-raw '{
      "name": "kyc_minimal_v1",
      "mode": "exclude",
      "fields": ["date_of_birth","address_formatted","cf3"]
    }'
  ```
</RequestExample>

<ResponseExample>
  ```json GetSubmission excerpt theme={null}
  {
    "data": [
      {
        "submissionId": "subm_8zg6kp9",
        "status": "approved",
        "projection": {
          "projectionId": "proj_123abc",
          "projectionName": "kyc_minimal_v1"
        },
        "data": {
          "first_name": "Minty",
          "nationality": "KOR",
          "identityNumber": null
        }
      }
    ]
  }
  ```
</ResponseExample>

Los campos listados en `fields`, como `identityNumber` aquí, se omiten o se establecen como `null` tanto en los payloads de webhook como en las respuestas de `GET/Submission`, aunque Argos aún retiene los valores subyacentes.

## Flujo de trabajo de Projection

<Steps>
  <Step title="Crear la política">
    Use [`POST /projection`](/es/idcheck/api-reference/api-reference-guide/post-projection) para definir la lista de exclusión. Las políticas se activan inmediatamente.

    <Check>
      La respuesta debe contener `"message": "Create projection success"` y un `projection_id`.
    </Check>
  </Step>

  <Step title="Adjuntar la política a Liveform">
    Agregue el `projectionId` cifrado a la URL de Liveform o al payload del token, por ejemplo:

    ```bash theme={null}
    https://form.argosidentity.com?pid=proj_x1yz&encrypted={'projectionId':'proj_123abc'}
    ```

    `projectionId` y `projectionName` son mutuamente excluyentes, y ambos deben estar cifrados. Consulte la [guía de query string y token](/es/idcheck/getting-started/liveform-url/querystring-and-token-guide) para detalles de cifrado.
  </Step>

  <Step title="Validar mediante webhooks o Get Submission">
    Los payloads de webhook y las respuestas de [`GET/Submission`](/es/idcheck/api-reference/api-reference-guide/get-submission) incluyen `projection.projectionId`. Confirme que el payload ahora solo muestra los campos previstos.

    <Check>
      Registre `projection.projectionId` en sus servicios downstream para rastrear qué política dio forma a cada payload.
    </Check>
  </Step>

  <Step title="Monitorear y retirar políticas">
    [`GET /projection`](/es/idcheck/api-reference/api-reference-guide/get-projection) y [`GET /projection/{projectionId}`](/es/idcheck/api-reference/api-reference-guide/get-projection/projectionId) le ayudan a revisar las políticas activas. Elimine entradas no utilizadas mediante [`DELETE /projection/{projectionId}`](/es/idcheck/api-reference/api-reference-guide/delete-projection) para liberar espacios o re-exponer datos.
  </Step>
</Steps>

## Enlaces rápidos de la API Projection

<CardGroup cols={2}>
  <Card title="POST/Projection" icon="plus" href="/es/idcheck/api-reference/api-reference-guide/post-projection">
    Crear nuevas políticas y definir el conjunto de exclusión.
  </Card>

  <Card title="GET/Projection" icon="list" href="/es/idcheck/api-reference/api-reference-guide/get-projection">
    Consultar todas las Projection configuradas para el proyecto.
  </Card>

  <Card title="GET/Projection/{projectionId}" icon="search" href="/es/idcheck/api-reference/api-reference-guide/get-projection/projectionId">
    Inspeccionar una política individual, incluyendo campos y marca de tiempo de creación.
  </Card>

  <Card title="DELETE/Projection" icon="trash" href="/es/idcheck/api-reference/api-reference-guide/delete-projection">
    Eliminar políticas obsoletas para re-exponer campos o mantenerse dentro del límite de 10 espacios.
  </Card>
</CardGroup>

## Mejores prácticas operacionales

* Recopile listas de campos requeridos de cada equipo consumidor antes de implementar Projection y documente las aprobaciones.
* Almacene `projectionId` junto con los payloads de webhook o registros de análisis para simplificar auditorías y resolución de problemas.
* Reutilice políticas existentes cuando sea posible para no alcanzar innecesariamente el límite de 10 políticas.
* Defina esquemas explícitos por Projection en servicios downstream para evitar excepciones de puntero nulo cuando los campos desaparezcan.

<Tip>
  Prefije los nombres de las políticas por entorno (por ejemplo, `dev_payment_v1`) para evitar confundir políticas de staging y producción.
</Tip>

## Resolución de problemas

<AccordionGroup>
  <Accordion title="Projection parece ser ignorada">
    * Confirme que el payload `encrypted` de Liveform está realmente cifrado; los valores en texto plano son rechazados.
    * Al usar `projectionName`, verifique que la ortografía sigue la regla de minúsculas y guiones bajos.
    * Llame a `GET /projection` para asegurar que el ID referenciado aún existe y la marca de tiempo coincide con sus expectativas.
  </Accordion>

  <Accordion title="Necesita revisar campos excluidos nuevamente">
    Argos aún almacena el envío completo. Sin embargo, mientras la Projection esté adjunta, los webhooks y `GET/Submission` seguirán ocultando esos campos. Elimine la política con [`DELETE /projection/{projectionId}`](/es/idcheck/api-reference/api-reference-guide/delete-projection) y active un nuevo envío para recibir payloads completos nuevamente.
  </Accordion>

  <Accordion title="Cuota de políticas excedida">
    Si alcanza el límite de 10 políticas, audite la lista actual mediante [`GET /projection`](/es/idcheck/api-reference/api-reference-guide/get-projection). Elimine políticas no utilizadas o consolide combinaciones de campos en un conjunto compartido más pequeño antes de crear nuevas.
  </Accordion>
</AccordionGroup>
