URL base y claves
Todas las rutas están bajo https://api.bridgestick.com/api/v1/data y llevan la clave en la cabecera Authorization (Bearer bsk_…). Crea una clave en Claves API → Nueva clave API: se muestra una sola vez, se guarda solo como hash y lee solo lo que se le concede — todos tus orígenes, los orígenes que marques o las tablas de las conexiones que marques — y solo orígenes que expusiste (Exponer vía API de datos).
- Una clave puede caducar, y se puede revocar en cualquier momento; se muestra su último uso.
- La concesión de una conexión abre solo las rutas de esa conexión — sus tablas, en el origen o en un destino — nunca las demás tablas del origen.
- Una clave lee solo su propio espacio: un slug nombra uno de tus orígenes o conexiones.
- Una clave conoce el nombre, el tipo y la salud de un origen — nunca su equipo, su usuario ni un error que nombre tu red.
Rutas
| Ruta | Método | Qué responde |
|---|---|---|
/sources | GET | Los orígenes que la clave puede leer |
/sources/{slug}/tables | GET | Sus tablas y campos |
/sources/{slug}/tables/rows | GET | Una página de filas: ?table=&fields=&cursor=&limit= (límite hasta 10.000) |
/sources/{slug}/tables/preview | GET | Una muestra pequeña: ?table=&limit= (hasta 200), servida desde una caché (refresh=true vuelve a leer) |
/sources/{slug}/health | GET | Si el origen responde |
/connections | GET | Las conexiones que la clave puede leer, con su estado |
/connections/{slug} | GET | Una conexión |
/connections/{slug}/tables | GET | Las tablas que sincroniza la conexión |
/connections/{slug}/tables/rows | GET | Una página de filas de una tabla sincronizada — en el origen, o como la guarda un destino (abajo) |
El nombre de una tabla siempre va en el parámetro ?table=, nunca en la ruta: los nombres de SAP como /CEEIS/RU_DEBTS pasan tal cual.
curl -H "Authorization: Bearer bsk_…" "https://api.bridgestick.com/api/v1/data/sources/sap-prod/tables/rows?table=MARA&fields=MATNR,MTART&limit=1000"
Paginación
Una página trae rows, row_count y next_cursor: pásalo como cursor para la página siguiente; null indica la última. Una tabla con clave se lee en orden de clave, así cada fila llega exactamente una vez aunque cambie mientras tanto.
- Una tabla sin clave se lee en una pasada, entregada página a página (cursores
one:), abierta hasta 30 minutos entre páginas. - Pedir la misma página dos veces (una petición reintentada) responde la misma página.
- Las sincronizaciones nunca cuentan contra tus lecturas, y tus lecturas nunca frenan una sincronización.
import requestsurl = "https://api.bridgestick.com/api/v1/data/sources/sap-prod/tables/rows"headers = {"Authorization": "Bearer bsk_…"}params = {"table": "MARA", "limit": 10000, "decimals": "string"}while True: page = requests.get(url, headers=headers, params=params, timeout=120).json() for row in page["rows"]: print(row) if page["next_cursor"] is None: break params["cursor"] = page["next_cursor"]
Leer la copia de un destino
Mediante una conexión, from=destination lee la tabla como la guarda uno de sus destinos — para no cargar el origen — con destination=<slug> (se puede omitir cuando solo uno se puede leer). El interruptor API de datos del destino debe estar activo, en su formulario. Con fallback=source, si un destino no puede servir la primera página — inaccesible, con fallos o sin la tabla todavía — la sirve el origen.
- Cada página dice dónde se leyó:
served_from(tipo, slug, nombre, tabla y, para un destino, cuándo se sincronizó por última vez). - Un cursor vale para el extremo que lo emitió; una sincronización que vuelve a publicar la tabla entre dos páginas termina la lectura (400: empiézala de nuevo).
curl -H "Authorization: Bearer bsk_…" "https://api.bridgestick.com/api/v1/data/connections/sap-to-warehouse/tables/rows?table=MARA&from=destination&fallback=source"
Valores
Cada valor llega en una forma exacta, sea cual sea el origen: un decimal es un número JSON con todos los dígitos que guarda el origen (1234.5600) — léelo con un analizador que respete los decimales, o pide decimals=string para recibir esos dígitos como texto; un flotante es un número JSON; las fechas y horas, ISO 8601; los datos binarios, Base64. El campo types de cada página nombra el tipo de cada columna (decimal, number, string, …).
Errores y límites
Un error es un objeto JSON con un campo detail.
| Código | Qué significa |
|---|---|
400 | Una petición o un cursor inválidos, un campo que la tabla no tiene, o uno que la conexión no sincroniza |
401 | Una clave ausente, desconocida, revocada o caducada — o su usuario desactivado |
403 | Un origen fuera del alcance de la clave, no expuesto, o una conexión desactivada |
404 | No existe ese origen, conexión o tabla (el catálogo propio de la base nunca se lee) |
429 | Por encima de un límite de la clave — 600 peticiones por minuto, 1.000.000 de filas por minuto, 4 lecturas en vuelo (8 por origen) —: espera Retry-After segundos |
502 | Falló el origen o el destino (con su propio código de error, cuando lo tiene) |
Eventos en vivo
Un WebSocket transmite lo que cambia, en el momento: wss://api.bridgestick.com/ws?key=bsk_…&topics=health,jobs — los eventos de una clave son la salud (health) de sus orígenes y los trabajos (jobs) de sus sincronizaciones, de los orígenes que puede leer. Revocar la clave, o que caduque, cierra la transmisión.