# `Sat.Cfdi.Descarga.Masiva.Solicitud`

Servicio `SolicitaDescarga` del WS de Descarga Masiva (v1.5).

Endpoint: `https://cfdidescargamasivasolicitud.clouda.sat.gob.mx/CFDI-descarga-masiva-CSD-SolicitudService/solicitud`.

Registra una solicitud de descarga por rango de fechas, RFC emisor/receptor,
tipo de comprobante, estado, complemento, UUID, etc. Retorna un
`IdSolicitud` que se usara despues para verificar el estado.

En v1.5 la operacion `SolicitaDescarga` fue reemplazada por tres operaciones:
  * `SolicitaDescargaEmitidos`  — facturas emitidas por el RFC
  * `SolicitaDescargaRecibidos` — facturas recibidas por el RFC
  * `SolicitaDescargaFolio`     — un CFDI especifico por UUID (Folio)

La funcion `solicitar/3` selecciona automaticamente la operacion correcta
segun `params.tipo_solicitud` (:emitidos | :recibidos | :folio).

# `endpoint`

Endpoint del servicio.

# `soap_action_base`

SOAPAction base (sin sufijo de operacion).

# `soap_operation`

Selecciona la operacion SOAP segun el tipo de solicitud.

# `solicitar`

```elixir
@spec solicitar(
  Sat.Cfdi.Descarga.Masiva.Types.Token.t(),
  Sat.Cfdi.Descarga.Masiva.Types.SolicitudParams.t(),
  keyword()
) ::
  {:ok, Sat.Cfdi.Descarga.Masiva.Types.SolicitudResult.t()} | {:error, term()}
```

Registra una solicitud y retorna el `IdSolicitud`.

Requiere un token vigente (`Sat.Cfdi.Descarga.Masiva.Autenticacion.autenticar/1`)
y la FIEL para firmar el sobre SOAP.

Selecciona la operacion SOAP segun `params.tipo_solicitud`:
  * `:emitidos`  → `SolicitaDescargaEmitidos`
  * `:recibidos` → `SolicitaDescargaRecibidos`
  * `:folio`     → `SolicitaDescargaFolio`

Opciones:
  * `:credential` (requerido) — FIEL para firmar
  * `:endpoint`   — override
  * `:timeout`    — HTTP timeout

IMPORTANTE: El SAT permite maximo 2 solicitudes con los mismos parametros
(mismo RFC + mismo rango de fechas). La tercera solicitud identica devuelve
`cod_estatus = "5002"` de forma permanente para esa combinacion.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
