Ir al contenido

Conexiones de workspace

import { Aside } from ‘@astrojs/starlight/components’;

Los conectores de workspace son fuentes de datos reutilizables definidas una sola vez a nivel workspace. Los artifacts las referencian por nombre — las credenciales nunca se copian en el HTML publicado.

PatróncredentialScopeEl admin proveeCada miembro proveeEjemplo
Conector compartido del equiposhared (por defecto)Endpoint + un tokenNadaService account de Snowflake, bot de Slack del equipo
Conector por usuarioper_userEndpoint + forma de authSu propio API tokenAPI GraphQL con datos del usuario logueado

Usá per_user cuando la API upstream autentica a la persona, no a la organización. Usá shared cuando un service account cubre a todo el equipo.

Acciónowner / adminmember
Listar conectores
Crear / eliminar conectores
Instalar conectores de plataforma vía OAuth
Guardar credenciales propias (solo per_user)
POST /v1/workspaces/{workspaceId}/connections
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "team_mixpanel",
"type": "rest_api",
"credentialScope": "shared",
"config": {
"baseUrl": "https://mixpanel.com/api/2.0",
"apiKeyHeader": "Authorization",
"apiKeyPrefix": "Basic "
},
"credentials": {
"type": "api_key",
"data": { "apiKey": "credencial-base64-del-servicio" }
}
}

El admin define el endpoint y la forma de auth. No enviés credentials.data.

POST /v1/workspaces/{workspaceId}/connections
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "galley_graphql",
"type": "rest_api",
"credentialScope": "per_user",
"authType": "api_key",
"config": {
"baseUrl": "https://api.example.com/graphql",
"apiKeyHeader": "Authorization",
"apiKeyPrefix": "Bearer "
}
}

authType debe ser uno de: api_key, basic_auth, service_account.

PUT /v1/workspaces/{workspaceId}/connections/{connectionId}/my-credentials
Authorization: Bearer {token}
Content-Type: application/json
{
"credentials": {
"type": "api_key",
"data": { "apiKey": "token-personal-del-miembro" }
}
}

Consultar estado (sin valores secretos):

GET /v1/workspaces/{workspaceId}/connections/{connectionId}/my-credentials
{ "configured": true, "authType": "api_key", "updatedAt": "2026-06-15T12:00:00.000Z" }

Revocar:

DELETE /v1/workspaces/{workspaceId}/connections/{connectionId}/my-credentials

El listado GET /connections incluye hasMyCredentials: true|false en cada conector per_user.

const sdk = await ShareOut.create();
const body = await sdk.connection('galley_graphql').fetch('', {
query: {
endpoint: '',
method: 'POST',
body: {
query: `query Adoption($id: ID!) { company(id: $id) { name } }`,
variables: { id: '743' }
}
},
cache: false
});

El servidor inyecta el token guardado del viewer. Si no hay token guardado, la request devuelve 403 CREDENTIALS_REQUIRED.

Explorá el catálogo siempre visible en el admin del workspace. La mayoría usa credenciales propias — pegá tu token o clave, usá Test, guardá. Incluye Google Analytics, Google Ads, Facebook Ads, Shopify, Tienda Nube, Google Sheets, Snowflake, BigQuery y Slack.

POST /v1/workspaces/{workspaceId}/connections/test
Authorization: Bearer {token}
Content-Type: application/json
{
"provider": "google-analytics",
"config": { "propertyId": "123456789" },
"credentials": { "type": "service_account", "data": { "key": { } } }
}

Solo admin+.

EndpointPropósito
GET /v1/workspaces/{id}/connections/slack/install?connection={name}Instalar Slack (302).
GET /v1/workspaces/{id}/connections/{connectionId}Detalle admin (sin secretos).

Los admins pueden habilitar consulta IA por conector para que el asistente del workspace ejecute SELECT de solo lectura:

PATCH /v1/workspaces/{workspaceId}/connections/{connectionId}
Authorization: Bearer {token}
Content-Type: application/json
{ "agent_query_enabled": true }

Desactivado por defecto.

Los conectores genéricos de Snowflake y BigQuery del workspace (credenciales inline, sin OAuth de plataforma) se ejecutan en el servidor para:

  • query_snapshot y otras entregas materialize programadas
  • Test de conexión (POST /v1/workspaces/{id}/connections/test)

Los conectores Postgres warehouse aún requieren pre-fetch externo hasta que haya motor en Workers. Los conectores REST y OAuth de plataforma no cambian.

MétodoEndpointQuiénNotas
GET/v1/workspaces/{id}/connectionsMember+Listar. Sin secretos.
POST/v1/workspaces/{id}/connectionsAdmin+Crear.
GET/v1/workspaces/{id}/connections/{connectionId}Admin+Detalle.
DELETE/v1/workspaces/{id}/connections/{connectionId}Admin+Eliminar; cascadea credenciales de miembros.
GET/v1/workspaces/{id}/connections/{connectionId}/artifactsMember+Artifacts que usan este conector.
GET/v1/workspaces/{id}/connections/{connectionId}/my-credentialsMember+Estado per-user.
PUT/v1/workspaces/{id}/connections/{connectionId}/my-credentialsMember+Guardar token propio.
DELETE/v1/workspaces/{id}/connections/{connectionId}/my-credentialsMember+Eliminar token propio.
POST/v1/workspaces/{id}/connections/testAdmin+Verificar credenciales sin guardar.
PATCH/v1/workspaces/{id}/connections/{connectionId}Admin+Activar agent_query_enabled.
GET/v1/oauth/slack/callbackCallback OAuth de Slack.
CódigoSignificado
403 CREDENTIALS_REQUIREDEl miembro hizo una query a un conector per_user sin guardar my-credentials.
400 NOT_PER_USERSe llamó a my-credentials en un conector shared.