Gira un Registros personalizados Consulta SQL en una API REST punto final
Para guardar una consulta en el Generador de consultas, haga clic aquí. Nuevo punto final, and you have a URL at api.querystreams.com with its own key. The SQL runs read-only on the Agent that already reads your Custom Logs file; the caller gets JSON or CSV and never sees the SQL, the schema or a password. Nothing to host, no port to open. About 90 seconds from a saved query, and the Free plan covers your first endpoint.
Lo que obtendrás al final
Una URL en api.querystreams.com que devuelve las filas de tu consulta de Registros personalizados guardada como JSON o CSV a cualquier persona que tenga una clave, probada desde la consola en el portal antes de compartirla. Así:
| Llave | Valor | Descripción |
|---|---|---|
mensaje cadena Opcional | Seattle | Filtro invocable desde la consulta guardada |
Clave X-API | qsapi_AB•••••••••• | Tu ficha secreta |
{
"mensaje": "Seattle"
}| Encabezamiento | Valor | Descripción |
|---|---|---|
Clave X-API | qsapi_AB•••••••••• | Tu token secreto. Uno por persona que llama, revocable en cualquier momento. |
Tipo de contenido | aplicación/json | Los parámetros se transmiten como un cuerpo JSON. |
Aceptar | aplicación/json | Devuelve JSON; si pides texto/CSV, obtienes CSV. |
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"message": "Seattle"}'{
"columnas": [ { "nombre": "tiempo_evento", "tipo": "entero" }, { "nombre": "Nombre del archivo", "tipo": "cadena" }, { "nombre": "mensaje", "tipo": "cadena" } ],
"filas": [
{ "tiempo_evento": 1042, "Nombre del archivo": "Comerciantes del Viento del Norte", "mensaje": "Seattle" },
{ "tiempo_evento": 1057, "Nombre del archivo": "Alpine Outfitters", "mensaje": "Denver" },
{ "tiempo_evento": 1063, "Nombre del archivo": "Comida del puerto", "mensaje": "Halifax" }
],
"meta": { "row_count": 3, "agent_duration_ms": 41, "id_solicitud": "req_7Hq2mKd9" }
}| Encabezamiento | Valor | Descripción |
|---|---|---|
tipo de contenido | aplicación/json; charset=utf-8 | El sobre en la pestaña Cuerpo |
longitud del contenido | 412 | Bytes devueltos; la insignia de tamaño arriba |
Custom Logs almacena tus datos en archivos en un ordenador que controlas. Si alguien más necesita acceder a ellos en su aplicación, panel de control o script, las soluciones habituales suelen ser demasiado complejas: un inicio de sesión en la base de datos que queda obsoleto después de finalizar el proyecto, una exportación diaria que se vuelve obsoleta al día siguiente, o un pequeño servidor API que alguien debe gestionar y actualizar. Query Streams convierte el punto final en una consulta guardada con una clave. El agente, que ya se encuentra con el registro de texto que describas, ejecuta la consulta; api.querystreams.com comprueba la clave y el límite de solicitudes, y quien realiza la llamada recibe las filas. El código SQL, el esquema y las credenciales nunca salen de tu cuenta.
Lo que necesitarás
Una cuenta de Query Streams
Todos los planes incluyen la API REST. El plan gratuito ofrece un endpoint, dos claves y 250 filas por llamada, suficiente para crear esta guía. Regístrese en mi.querystreams.com.
The Agent with your Custom Logs file added as a connection
¿Aún no lo has hecho? Añádelo en Datos → Agentes de datos; te llevará unos diez minutos.
Una consulta guardada en el Generador de consultas
El punto final encapsula exactamente una consulta guardada. Escriba la sentencia SELECT, ejecútela una vez y guárdela. Agregue un filtro dinámico (un @variable en la cláusula WHERE) si los que llaman deberían poder filtrar.
¿Quién puede crear puntos finales? Propietarios, administradores y creadores. Si el API El elemento no aparece en la barra superior; un administrador puede activarlo para su usuario en Cuenta → PermisosCualquier persona con la que compartas un punto final solo necesita una cuenta de Query Streams, en cualquier plan.
Configúralo en cuatro pasos.
-
Guardar la consulta
En Generador de consultas Seleccione su conexión de Registros personalizados, escriba la consulta SELECT que desea publicar y ejecútela una vez para que pueda ver las filas. Limítese a las columnas que necesita quien realiza la llamada; el punto final devuelve exactamente lo que devuelve la consulta.
Consulta guardada · fileset.eventsSELECCIONE hora_del_evento, nombre_del_archivo, mensaje, archivo_origen DESDE eventos del conjunto de archivos ORDEN POR tiempo_del_evento DESC LÍMITE 100
Si los usuarios deben poder filtrar, agregue un filtro dinámico, por ejemplo.
DONDE mensaje = @mensaje. Cada@variablese convierte en un parámetro de API en el paso 3. Haga clic Guardar y asigna un nombre a la consulta; ese nombre se convierte en el nombre para mostrar del punto final. -
Crear el punto final
Abrir API en la barra superior y haga clic Nuevo punto final. El mago tiene cuatro pasos, Seleccionar consulta, Configurar, Parámetros de bloqueo y Compartir. En Seleccionar consultaHaga clic en la consulta que acaba de guardar; las consultas cuyo agente está desconectado aparecen atenuadas. Haga clic Siguiente.
Atajo. Desde el Generador de consultas puede exponer la consulta abierta directamente; el asistente entonces comienza en Configurar con la consulta ya seleccionada.
-
Configurar y bloquear parámetros
En Configurar Los valores predeterminados son correctos para un primer punto final: Nombre para mostrar rellenado a partir de la consulta, Esperanza de vida Permanente (elegir Caducando (por una participación temporal), Modo de respuesta Estático (una respuesta JSON; seleccione Transmisión para resultados que superen el límite de filas estático de su plan), Formato interior JSON. El modo y el formato de respuesta son fijos una vez creados, así que decídalos aquí. Haga clic aquí. Siguiente.
En Parámetros de bloqueo Se enumeran todos los filtros dinámicos de la consulta. Deje los que los llamantes pueden configurar como Llamable y dar a cada uno un Nombre de la cadena de consulta; garrapata Obligatorio Si una llamada sin él debería fallar. Fije un valor que el llamante no debe cambiar con Bloqueadoo un escenario de citas como por ejemplo Comienzo de mes. Oculto Mantiene la configuración predeterminada de la consulta y rechaza cualquier intento de modificarla. Haga clic. Siguiente.
-
Comparte y obtén tu clave.
En Compartir puedes invitar Gente por correo electrónico o agregar un Clave de servicio para un servidor o una herramienta de automatización, o omita ambos por ahora. Haga clic Crea y obtén mi clave. La pantalla de éxito muestra la URL del punto final y su clave: una cadena de 49 caracteres que comienza
qsapi_Cópialo. Puedes volver a mostrarlo más tarde desde el punto final. Compartir pestaña, para que no se pierda si cierras la pantalla.Haga clic en Enviar en la consola para realizar la primera llamada desde el propio portal. El panel de respuesta muestra Estado, Tiempo y Tamaño, el Cuerpo La pestaña muestra el JSON y la llamada aparece en el Actividad pulsa la pestaña unos segundos después.
Eso es todo. Cualquier registro de texto que describas ahora responde a una URL, de solo lectura, a las claves que proporciones. No se instaló nada, no se abrió ningún puerto y la base de datos SQL permaneció en tu cuenta.
Llámalo desde cualquier lugar
Reemplace el ID del punto final con el suyo desde la barra de URL de la consola y qsapi_TU_CLAVE con su clave. Los parámetros invocables van en la cadena de consulta en GET; aquí la consulta guardada expone mensaje:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?message=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
"columnas": [ { "nombre": "tiempo_evento", "tipo": "entero" }, { "nombre": "Nombre del archivo", "tipo": "cadena" }, { "nombre": "mensaje", "tipo": "cadena" } ],
"filas": [
{ "tiempo_evento": 1042, "Nombre del archivo": "Comerciantes del Viento del Norte", "mensaje": "Seattle" },
{ "tiempo_evento": 1057, "Nombre del archivo": "Alpine Outfitters", "mensaje": "Denver" },
{ "tiempo_evento": 1063, "Nombre del archivo": "Comida del puerto", "mensaje": "Halifax" }
],
"meta": { "row_count": 3, "agent_duration_ms": 41, "id_solicitud": "req_7Hq2mKd9" }
}Las filas se devuelven como objetos indexados por nombre de columna, con la lista de columnas y un meta Bloque que indica cuántas filas hay, si el resultado se recortó y el ID de la solicitud que puede citar para respaldar. La misma llamada como una POST coloca los parámetros en un cuerpo JSON, que es la opción correcta para listas largas de valores:
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"message": "Seattle"}}'?formato=csv- CSV en lugar de JSON, con fila de encabezado incluida.
Aceptar: texto/csvhace lo mismo. Los puntos finales de transmisión devuelven NDJSON (un objeto JSON por línea) con un final{"_summary": true, "row_count": N}línea; revisa esa última línea. ?muestra=verdadero- Máximo cinco filas, sin costo. Ideal para conectar a un cliente.
?compresión=lz4- Un cuerpo de bastidor LZ4 para llamadas de alto volumen con decodificador; Código La pestaña tiene el fragmento del decodificador por idioma. El gzip simple se realiza automáticamente cuando su cliente envía
Codificación aceptada: gzip. Autorización: Portador qsapi_…- Aceptado como alias de
Clave X-APIÚsalo desde el código del navegador.
Dónde se enchufa
Excel y Power BI
Exportar → Power Query M (.pq) te proporciona una consulta predefinida. Pégala en el Editor avanzado (Excel: Datos → Obtener datos → De otras fuentes → Consulta en blanco; Power BI: Inicio → Transformar datos → Nueva fuente → Consulta en blanco) y reemplaza el marcador de posición con tu consulta. qsapi_ llave.
Cartero, Insomnio, Rayuela
Lo mismo Exportar El menú descarga una colección de Postman v2.1, una exportación de Insomnia v5 o una colección de Hoppscotch con los parámetros completados y un marcador de posición para la clave.
Tu propio código
El Código La pestaña contiene ejemplos prácticos para cURL, Python, JavaScript, TypeScript, Java, C#, Go, PHP, PowerShell y Ruby. Exportar → Especificación OpenAPI 3.1 Alimenta cualquier generador de clientes o interfaz de usuario de Swagger.
n8n, Zapier, Make, cron
Crear un Clave de servicio Para usar la herramienta, pega la URL y la clave en su nodo HTTP y prográmala. Cada herramienta tiene su propia clave, así que puedes revocar una sin afectar a las demás.
Lo que permiten los planes
| Plan | Puntos finales | Claves por punto final | Personas por punto final | Filas por llamada (estático) | Filas por llamada (streaming) | Llamadas por minuto, por tecla |
|---|---|---|---|---|---|---|
| Gratis | 1 | 2 | 1 | 250 | 250 | 3 |
| Núcleo personal | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| Personal Plus | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| Núcleo empresarial | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| Negocios Plus | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| Business Max | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| Núcleo empresarial | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| Enterprise Plus | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| Enterprise Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
Cada llamada tiene un tiempo de espera fijo de 60 segundos para la consulta y un límite de respuesta de 8 MiB. Los bytes que devuelve se descuentan del límite de datos mensual de tu plan, el mismo que utilizan los complementos de Excel y Google Sheets. El plan gratuito incluye un punto final y 5 MB al mes, lo cual es suficiente para una tabla pequeña que se consulta varias veces al día. Consulte la página de precios. para las asignaciones por plan.
Lo gratuito es un plan que debes mantener. No es una prueba que caduca. Vea exactamente lo que incluye en el página de precios.
Mantenerlo seguro
El SQL sigue siendo tuyo
Quienes realizan las llamadas obtienen filas. Nunca ven la consulta, los nombres de las tablas ni los detalles de la conexión, y no pueden cambiar lo que ejecuta el punto final.
Una clave, un punto final, una persona que realiza la llamada.
Una clave funciona para un único punto final. Asigne una clave a cada persona o herramienta, y cada llamada quedará registrada en ella. Si se revoca una clave, las demás seguirán funcionando; la revocación surte efecto en unos cinco minutos.
Solo lectura, en tu lado del muro
El agente ejecuta la única consulta SELECT guardada y nada más, desde dentro de su red, a través de su propia conexión de salida. No hay ningún puerto que abrir ni credenciales en internet.
Cada llamada en el libro mayor
El Actividad La pestaña muestra cada llamada con hora, destinatario, estado, filas, bytes y duración, incluidas las rechazadas. Establezca una Caducando duración para un recurso compartido temporal y el punto final se apaga automáticamente en la fecha.
Cuando algo no funciona
| Estado | Código | ¿Qué hacer? |
|---|---|---|
| 401 | API_KEY_REQUERIDA / API_KEY_INVÁLIDA | Falta el encabezado o la clave es incorrecta. Enviar X-API-Key: qsapi_…, los 49 caracteres completos. Las claves se pueden copiar nuevamente desde la pestaña Compartir del punto final. |
| 403 | API_KEY_ENDPOINT_MISMATCH | Una clave válida utilizada en un punto final diferente. Cada clave pertenece a un único punto final. |
| 403 | API_KEY_REVOKED / API_ENDPOINT_EXPIRED | La clave fue revocada o el punto final alcanzó su fecha de vencimiento. Genere una nueva clave o restaure el punto final. |
| 400 | API_PARAM_NO_SOBREESCRIBIRSE | Usted envió un parámetro que el propietario no marcó como invocable. El cuerpo enumera los nombres permitidos. |
| 414 | CONSULTA_API_DEMASIADO_GRANDE | La cadena de consulta GET pasó 8 KB o 200 valores de lista. Envíe los mismos parámetros como cuerpo JSON para POST. |
| 413 | SALIDA DE API DEMASIADO GRANDE | El resultado superó el límite de 8 MiB. Limite la consulta o cambie el punto final a Streaming. |
| 429 | TASA DE API LIMITADA | Demasiadas llamadas en este minuto para la clave o el punto final. Espere a que Reintentar después segundos, o subir Límite de tasa en Configuración de API → Valores predeterminados dentro de su plan. |
| 429 | DATOS_REALES_EXHAUSTED DE LA API | Se ha agotado el límite mensual de datos del propietario. Se restablecerá con el mes de facturación; actualiza tu plan para obtener más datos. |
| 503 | AGENTE_API_NO_CONECTADO | El agente que gestiona tu archivo de registros personalizados está desconectado. Compruébalo en Datos → Agentes de datos; las llamadas volverán a funcionar correctamente en cuanto se reconecte. |
| 504 | API_QUERY_TIMEOUT | La consulta tardó más de 60 segundos. Añada un filtro o un índice, o guarde una consulta más específica. |
Cada cuerpo de error tiene la forma {"error": {"code": "…", "message": "…"}} y cada respuesta conlleva una ID de solicitud X-QS Encabezado. Cita el ID cuando escribas al soporte.
Preguntas que hace la gente
¿Se copian mis datos a los flujos de consulta?
No. El agente ejecuta la consulta donde se encuentran sus datos y envía solo las filas solicitadas en la llamada. No se sincroniza ni se almacena en caché nada entretanto; cada llamada ejecuta la consulta.
¿Pueden los usuarios modificar la consulta SQL o solicitar otras tablas?
No. Un endpoint ejecuta una consulta guardada. Los llamantes solo pueden establecer los parámetros que usted marcó. Llamabley los valores se vinculan de forma segura: el texto se cita y se escapa, los números se comprueban por rango y las listas se expanden.
¿Cómo le entrego esto a un compañero?
En el punto final Compartir pestaña elegir Gente e ingresen su correo electrónico. Obtienen un enlace mágico, inician sesión con esa dirección (una cuenta gratuita está bien) y generan su propia clave; usted ve sus llamadas por nombre en la pestaña Actividad. Para un servidor o una herramienta de automatización, cree un clave API en su lugar, con una etiqueta.
¿Qué sucede cuando edito la consulta guardada?
El punto final ejecuta el nuevo SQL en la siguiente llamada y su especificación OpenAPI se regenera. La URL y las claves no cambian. Si agrega o elimina un filtro, vuelva a visitar Parámetros de bloqueo para que quienes llaman vean los parámetros correctos.
¿El plan gratuito realmente cubre esto?
Sí. El plan gratuito es permanente, no una prueba que caduca. Incluye un punto final, dos claves y 250 filas por llamada. Consulta exactamente lo que incluye en la página web. página de precios.
¿El punto final utiliza el dialecto SQL de los registros personalizados?
Sí, porque la consulta SQL es tuya. La escribiste y la ejecutaste contra cualquier registro de texto que describiste en el Generador de consultas; el punto final ejecuta esa misma instrucción a través de la misma conexión, con los valores de tus parámetros vinculados de la forma en que lo esperan los Registros personalizados.
¿Es necesario que se pueda acceder a Internet a cualquier registro de texto que describa?
No. Solo el agente necesita acceder a él desde dentro de su red. El agente establece una única conexión saliente con Query Streams; quienes llaman se comunican con api.querystreams.com y nunca con su ordenador.
Guías relacionadas
Cada guía para Custom Logs
¿No es exactamente lo que buscas?
- Primero, compruebe los tipos de registro predefinidos: los registros del servidor web, la aplicación, el contenedor, el sistema y la máquina se leen sin ninguna configuración → Web Logs, App Logs, Container Logs, System Logs, Machine Logs
Setup trouble?
- Agent says the file or folder does not exist, or access is denied? Mapped drives, network shares, OneDrive and Linux home folders each need one fix → Where the Agent can read files from
- Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?

