---
name: bq_list_jobs
kind: function
lang: py
domain: infra
version: "1.0.0"
purity: impure
signature: "def bq_list_jobs(client: BQClient, state_filter: str = '', max_results: int = 50, all_users: bool = False) -> list[dict]"
description: "Lista jobs del proyecto con filtro por estado (running, pending, done). Retorna una lista de dicts planos con metadatos de cada job."
tags: [bigquery, gcp, job, list, google-cloud, python, pendiente-usar]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [google-cloud-bigquery]
params:
  - name: client
    desc: "cliente autenticado de BigQuery obtenido con bq_auth"
  - name: state_filter
    desc: "filtro por estado del job: 'running', 'pending' o 'done'; vacio = todos los estados"
  - name: max_results
    desc: "numero maximo de jobs a retornar (por defecto 50)"
  - name: all_users
    desc: "si True lista jobs de todos los usuarios del proyecto; requiere permisos de administrador"
output: "lista de dicts con campos: job_id, job_type, state, created, started, ended, user_email, bytes_processed, error"
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/bigquery/jobs.py"
---

## Ejemplo

```python
from bigquery.client import bq_auth
from bigquery.jobs import bq_list_jobs

client = bq_auth("my-project")

# Todos los jobs recientes
jobs = bq_list_jobs(client, max_results=20)

# Solo jobs en ejecucion
running = bq_list_jobs(client, state_filter="running")
for j in running:
    print(j["job_id"], j["state"], j["job_type"])

# Jobs completados de todos los usuarios
done = bq_list_jobs(client, state_filter="done", all_users=True, max_results=100)
```

## Notas

Los campos `created`, `started` y `ended` se serializan como strings ISO 8601 (o `None` si no estan disponibles).

El campo `bytes_processed` solo esta disponible en query jobs; para otros tipos de job (load, export, copy) se retorna `None`.

El campo `error` contiene el error_result como string si el job fallo, o `None` si no hay error.

Para obtener el texto completo del SQL de un job concreto, usar `bq_get_job` que incluye el campo `query`.
