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

# Obtener cesion y certificado

> Obtiene el detalle de una cesión por ID. Es accesible tanto si tenés acceso a la entidad emisora como a la receptora del documento cedido. Si se envía el parámetro pdf=document-cession, la respuesta es el PDF del certificado de cesión servido inline (200, Content-Type application/pdf) en vez del JSON — se lee del caché en S3 si ya existe, o se scrapea del SII en el momento (requiere que Tupana administre la credencial SII del emisor de la factura). Por defecto (sin el parámetro) devuelve el JSON con el detalle de la cesión.

## Para que se usa?

Sirve para **consultar el detalle de una cesion** por ID, incluyendo el **certificado de cesion (PDF)** del SII.

## Que hace

Devuelve el detalle completo en JSON: documento, cesionario, monto, estado, eventos de trazabilidad, errores y `certificate_pdf_url`.

Es accesible tanto si tenes acceso a la entidad **emisora** como a la **receptora** del documento cedido — no hace falta indicar `document_type`, el acceso se resuelve automaticamente segun a que lado de la cesion pertenece tu entidad.

## Campo `certificate_pdf_url`

La respuesta JSON incluye el campo `certificate_pdf_url` con la URL presignada del certificado de cesion (PDF) en S3/CDN, si ya fue descargado. Tupana descarga automaticamente los certificados al scrapear las cesiones del SII; si todavia no esta disponible el campo viene `null` y se dispara una descarga en background para la proxima consulta (no bloquea la respuesta).

## Descarga directa: `?pdf=document-cession`

Si necesitas el PDF ya mismo (sin esperar el proceso async), pedi `GET /cessions/{id}?pdf=document-cession`. La respuesta es el **PDF inline** (`200`, `Content-Type: application/pdf`), no un JSON ni un redirect. Si el PDF ya estaba cacheado se devuelve al instante; si no, Tupana lo scrapea del SII en el momento (requiere que Tupana administre la credencial SII del **emisor** de la factura — si la cesion es `document_type=received` y el emisor es un proveedor externo sin credencial en Tupana, esto devuelve `502` con el error correspondiente).

## Ejemplos de uso

* Ver en tu sistema el detalle y la trazabilidad de una cesion.
* Ofrecer un boton "Descargar certificado" que abra directamente `certificate_pdf_url` (si ya esta disponible) o pegue a `?pdf=document-cession` para forzar la descarga.


## OpenAPI

````yaml GET /cessions/{id}
openapi: 3.0.0
info:
  title: Tupana API
  description: API para integración con el sistema Tupana - Facturación Electrónica
  version: 1.0.0
servers:
  - url: https://api.tupana.ai/v1
    description: Servidor de producción
security:
  - apiKeyAuth: []
paths:
  /cessions/{id}:
    get:
      tags:
        - Cesiones
      summary: Obtener una cesión
      description: >-
        Obtiene el detalle de una cesión por ID. Es accesible tanto si tenés
        acceso a la entidad emisora como a la receptora del documento cedido. Si
        se envía el parámetro pdf=document-cession, la respuesta es el PDF del
        certificado de cesión servido inline (200, Content-Type application/pdf)
        en vez del JSON — se lee del caché en S3 si ya existe, o se scrapea del
        SII en el momento (requiere que Tupana administre la credencial SII del
        emisor de la factura). Por defecto (sin el parámetro) devuelve el JSON
        con el detalle de la cesión.
      operationId: getCession
      parameters:
        - name: id
          in: path
          required: true
          description: ID de la cesión
          schema:
            type: integer
        - name: pdf
          in: query
          required: false
          description: >-
            Si se envía el valor document-cession, la respuesta es el PDF del
            certificado de cesión servido inline (no JSON, no redirect). Útil
            para descargar o mostrar el certificado directamente.
          schema:
            type: string
            enum:
              - document-cession
      responses:
        '200':
          description: >-
            Sin pdf=document-cession: detalle de la cesión (JSON), incluye
            eventos de trazabilidad y errores si existen. Con
            pdf=document-cession: el PDF del certificado de cesión servido
            inline, reemplazando la respuesta JSON.
          content:
            application/json:
              schema:
                type: object
                description: >-
                  Objeto cesión con todos los campos del listado más events y
                  errors
                properties:
                  id:
                    type: integer
                  document_id:
                    type: integer
                  document_folio:
                    type: string
                  status:
                    type: string
                  source:
                    type: string
                  assignee_business_name:
                    type: string
                  assignment_amount:
                    type: number
                  events:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                        event_code:
                          type: string
                        event_description:
                          type: string
                        event_date:
                          type: string
                          format: date-time
                  errors:
                    type: array
                    items:
                      type: object
            application/pdf:
              schema:
                type: string
                format: binary
        '403':
          description: No tienes acceso a esta cesión
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '404':
          description: Cesión no encontrada
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
        '502':
          description: Error al obtener el certificado (credencial SII o scraping)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
      security:
        - apiKeyAuth: []
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: >-
        API Key para autenticación. Debe proporcionarse en el header
        Authorization con el formato: 'Api-Key YOUR-API-KEY' (incluye el prefijo
        'Api-Key ' seguido de tu API key)

````