Proveedores Integrados de Decision Gate
Descargar: providers.json (14 KB)
Este documento resume los proveedores integrados. Los esquemas completos se encuentran en providers.json.
tiempo
Comprobaciones deterministas derivadas de la marca de tiempo del disparador proporcionada por el llamador.
Contrato de proveedor
- Nombre: Proveedor de Tiempo
- Transporte: incorporado
Notas
- Determinista: no lecturas de reloj en tiempo real, solo marcas de tiempo de activación.
- Soporta unix_millis y marcas de tiempo de activación lógicas.
Esquema de configuración
Campos de configuración:
allow_logical(opcional): Permitir marcas de tiempo de activación lógica en comparaciones. Predeterminado: verdadero.
{
"additionalProperties": false,
"properties": {
"allow_logical": {
"default": true,
"description": "Allow logical trigger timestamps in comparisons.",
"type": "boolean"
}
},
"type": "object"
}
Verificaciones
ahora
Devuelva la marca de tiempo del desencadenador como un número JSON.
- Determinismo: dependiente del tiempo
- Parámetros requeridos: no
- Comparadores permitidos: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, in_set, exists, not_exists
- Tipos de anclaje: trigger_time_unix_millis, trigger_time_logical
- Tipos de contenido: application/json
Campos de parámetros:
No hay campos.
Esquema de parámetros:
{
"additionalProperties": false,
"description": "No parameters required.",
"properties": {},
"type": "object"
}
Esquema de resultados:
{
"type": "integer"
}
Ejemplos:
Devolver el tiempo de activación.
Params:
{}
Resultado:
1710000000000
después
Devuelve verdadero si el tiempo de activación es posterior al umbral.
- Determinismo: dependiente del tiempo
- Params requeridos: sí
- Comparadores permitidos: equals, not_equals, in_set, exists, not_exists
- Tipos de anclaje: trigger_time_unix_millis, trigger_time_logical
- Tipos de contenido: application/json
Campos de parámetros:
- timestamp (requerido): número Unix millis o cadena de marca de tiempo RFC3339.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
Esquema de resultados:
{
"type": "boolean"
}
Ejemplos:
Tiempo de activación después del umbral.
Params:
{
"timestamp": 1710000000000
}
Resultado:
true
antes
Devuelve verdadero si el tiempo de activación es anterior al umbral.
- Determinismo: dependiente del tiempo
- Params requeridos: sí
- Comparadores permitidos: equals, not_equals, in_set, exists, not_exists
- Tipos de anclaje: trigger_time_unix_millis, trigger_time_logical
- Tipos de contenido: application/json
Campos de parámetros:
- timestamp (requerido): número Unix millis o cadena de marca de tiempo RFC3339.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
Esquema de resultados:
{
"type": "boolean"
}
Ejemplos:
Tiempo de activación antes del umbral.
Params:
{
"timestamp": "2024-01-01T00:00:00Z"
}
Resultado:
false
env
Lee las variables de entorno del proceso con políticas de permitir/denegar y límites de tamaño.
Contrato de proveedor
- Nombre: Proveedor de Entorno
- Transporte: incorporado
Notas
- Devuelve null cuando falta una clave o está bloqueada por la política.
- Se aplican límites de tamaño tanto a la clave como al valor.
Esquema de configuración
Campos de configuración:
allowlist(opcional): Lista de permitidos opcional de claves de entorno.denylist(opcional): Lista de exclusión explícita de claves de entorno. Predeterminado: [].max_key_bytes(opcional): Máximo de bytes permitidos para una clave de entorno. Predeterminado: 255.max_value_bytes(opcional): Máximo de bytes permitidos para un valor de entorno. Predeterminado: 65536.overrides(opcional): Mapa de anulación determinista opcional para búsquedas de entorno.
{
"additionalProperties": false,
"properties": {
"allowlist": {
"description": "Optional allowlist of environment keys.",
"items": {
"type": "string"
},
"type": "array"
},
"denylist": {
"default": [],
"description": "Explicit denylist of environment keys.",
"items": {
"type": "string"
},
"type": "array"
},
"max_key_bytes": {
"default": 255,
"description": "Maximum bytes allowed for an environment key.",
"minimum": 0,
"type": "integer"
},
"max_value_bytes": {
"default": 65536,
"description": "Maximum bytes allowed for an environment value.",
"minimum": 0,
"type": "integer"
},
"overrides": {
"additionalProperties": {
"type": "string"
},
"description": "Optional deterministic override map for env lookups.",
"type": "object"
}
},
"type": "object"
}
Verificaciones
obtener
Obtenga una variable de entorno por clave.
- Determinismo: externo
- Params requeridos: sí
- Comparadores permitidos: equals, not_equals, contains, in_set, exists, not_exists
- Tipos de anclaje: env
- Tipos de contenido: text/plain
Campos de parámetros:
key(requerido): clave de la variable de entorno.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"key": {
"description": "Environment variable key.",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
Esquema de resultados:
{
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
Ejemplos:
Lee DEPLOY_ENV.
Params:
{
"key": "DEPLOY_ENV"
}
Resultado:
"production"
json
Lee archivos JSON o YAML y evalúa consultas JSONPath contra ellos.
Contrato de proveedor
- Nombre: Proveedor JSON
- Transporte: incorporado
Notas
- El acceso a los archivos está restringido por la raíz configurada y los límites de tamaño.
- Las rutas de archivo deben ser relativas a la raíz; se rechazan las rutas absolutas.
- JSONPath es opcional; si se omite, se refiere al documento completo.
- La falta de JSONPath produce un valor nulo con metadatos de error (jsonpath_not_found).
Esquema de configuración
Campos de configuración:
allow_yaml(opcional): Permitir el análisis de YAML para archivos .yaml/.yml. Predeterminado: true.max_bytes(opcional): Tamaño máximo del archivo en bytes. Predeterminado: 1048576.root(requerido): Directorio raíz para la resolución de archivos (requerido).root_id(requerido): Identificador estable para la raíz configurada (requerido).
{
"additionalProperties": false,
"properties": {
"allow_yaml": {
"default": true,
"description": "Allow YAML parsing for .yaml/.yml files.",
"type": "boolean"
},
"max_bytes": {
"default": 1048576,
"description": "Maximum file size in bytes.",
"minimum": 0,
"type": "integer"
},
"root": {
"description": "Root directory for file resolution (required).",
"type": "string"
},
"root_id": {
"description": "Stable identifier for the configured root (required).",
"pattern": "^[a-z0-9][a-z0-9_-]{0,63}$",
"type": "string"
}
},
"required": [
"root",
"root_id"
],
"type": "object"
}
Verificaciones
ruta
Selecciona valores a través de JSONPath de un archivo JSON/YAML.
- Determinismo: externo
- Params requeridos: sí
- Comparadores permitidos: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, lex_greater_than, lex_greater_than_or_equal, lex_less_than, lex_less_than_or_equal, contains, in_set, deep_equals, deep_not_equals, exists, not_exists
- Tipos de anclaje: file_path_rooted
- Tipos de contenido: application/json, application/yaml
Campos de parámetros:
file(requerido): Ruta a un archivo JSON o YAML.jsonpath(opcional): Selector JSONPath opcional.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"file": {
"description": "Path to a JSON or YAML file.",
"type": "string"
},
"jsonpath": {
"description": "Optional JSONPath selector.",
"type": "string"
}
},
"required": [
"file"
],
"type": "object"
}
Esquema de resultados:
{
"description": "JSONPath result value (dynamic JSON type).",
"x-decision-gate": {
"dynamic_type": true
}
}
Ejemplos:
Ejemplo 1: Leer la versión desde config.json (ruta relativa a la raíz).
Params:
{
"file": "config.json",
"jsonpath": "$.version"
}
Resultado:
"1.2.3"
Ejemplo 2: Devuelve el documento completo cuando se omite jsonpath.
Params:
{
"file": "config.json"
}
Resultado:
{
"version": "1.2.3"
}
http
Emite solicitudes HTTP GET limitadas y devuelve códigos de estado o hashes de cuerpo.
Contrato de proveedor
- Nombre: Proveedor HTTP
- Transporte: incorporado
Notas
- Las listas de permitidos para esquemas y hosts se aplican mediante configuración.
- Las respuestas tienen un límite de tamaño y se hash determinísticamente.
Esquema de configuración
Campos de configuración:
allow_http(opcional): Permitir URLs http:// en texto claro. Predeterminado: falso.allowed_hosts(opcional): Lista de permitidos de nombres de host opcional.hash_algorithm(opcional): Algoritmo de hash utilizado para las respuestas body_hash. Predeterminado: “sha256”.max_response_bytes(opcional): Tamaño máximo de respuesta en bytes. Predeterminado: 1048576.timeout_ms(opcional): Tiempo de espera de la solicitud en milisegundos. Predeterminado: 5000.user_agent(opcional): Cadena del agente de usuario para solicitudes salientes. Predeterminado: “decision-gate/0.1”.
{
"additionalProperties": false,
"properties": {
"allow_http": {
"default": false,
"description": "Allow cleartext http:// URLs.",
"type": "boolean"
},
"allowed_hosts": {
"description": "Optional allowlist of hostnames.",
"items": {
"type": "string"
},
"type": "array"
},
"hash_algorithm": {
"default": "sha256",
"description": "Hash algorithm used for body_hash responses.",
"enum": [
"sha256"
],
"type": "string"
},
"max_response_bytes": {
"default": 1048576,
"description": "Maximum response size in bytes.",
"minimum": 0,
"type": "integer"
},
"timeout_ms": {
"default": 5000,
"description": "Request timeout in milliseconds.",
"minimum": 0,
"type": "integer"
},
"user_agent": {
"default": "decision-gate/0.1",
"description": "User agent string for outbound requests.",
"type": "string"
}
},
"type": "object"
}
Verificaciones
estado
Devolver el código de estado HTTP para una URL.
- Determinismo: externo
- Params requeridos: sí
- Comparadores permitidos: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, in_set, exists, not_exists
- Tipos de anclaje: url
- Tipos de contenido: application/json
Campos de parámetros:
- url (requerido): URL a consultar.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
Esquema de resultados:
{
"type": "integer"
}
Ejemplos:
Obtener el estado de un endpoint de salud.
Params:
{
"url": "https://api.example.com/health"
}
Resultado:
200
hashdelcuerpo
Devuelve un hash del cuerpo de la respuesta.
- Determinismo: externo
- Params requeridos: sí
- Comparadores permitidos: exists, not_exists
- Tipos de anclaje: url
- Tipos de contenido: application/json
Campos de parámetros:
- url (requerido): URL a consultar.
Esquema de parámetros:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
Esquema de resultados:
{
"additionalProperties": false,
"properties": {
"algorithm": {
"enum": [
"sha256"
],
"type": "string"
},
"value": {
"description": "Lowercase hex digest.",
"type": "string"
}
},
"required": [
"algorithm",
"value"
],
"type": "object"
}
Ejemplos:
Hashea el cuerpo de un endpoint de salud.
Params:
{
"url": "https://api.example.com/health"
}
Resultado:
{
"algorithm": "sha256",
"value": "7b4d0d3d16c8f85f67ad79b0870a2c9f1e88924c4cbb4ed4bb7f5c6a1d1b7f9a"
}