Proveïdors integrats de Decision Gate
Descarregar: providers.json (22 KB)
Aquest document resumeix els proveïdors integrats. Els esquemes complets es troben a providers.json.
temps
Comprovacions deterministes derivades de la marca de temps del desencadenador subministrada pel cridant.
Contracte de proveïdor
- Nom: Proveïdor de Temps
- Transport: integrat
Notes
- Determinista: sense lectures de rellotge, només caràcters de temps d’activació.
- Suporta unix_millis i caràcters de temps de desencadenament lògics.
Esquema de configuració
Camp de configuració:
allow_logical(opcional): Permetre marques de temps de desencadenament lògic en comparacions. Per defecte: true.
{
"additionalProperties": false,
"properties": {
"allow_logical": {
"default": true,
"description": "Allow logical trigger timestamps in comparisons.",
"type": "boolean"
}
},
"type": "object"
}
Comprovacions
ara
Retorna la marca de temps del desencadenant com un número JSON.
- Determinisme: temps_dependent
- Paràmetres requerits: no
- Comparadors permesos: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, in_set, exists, not_exists
- Tipus d’ancoratge: trigger_time_unix_millis, trigger_time_logical
- Content types: application/json
Params fields:
No camps.
Esquema de paràmetres:
{
"additionalProperties": false,
"description": "No parameters required.",
"properties": {},
"type": "object"
}
Esquema de resultats:
{
"type": "integer"
}
Exemples:
Retorn del temps de desencadenament.
Params:
{}
Resultat:
1710000000000
Retorna veritable si el temps de desencadenament és després del llindar.
Retorna veritable si el temps de desencadenament és després del llindar.
- Determinisme: temps_dependent
- Params requerits: sí
- Comparadors permesos: equals, not_equals, in_set, exists, not_exists
- Tipus d’ancoratge: trigger_time_unix_millis, trigger_time_logical
- Content types: application/json
Params fields:
- timestamp (requerit): número Unix millis o cadena de caràcters de timestamp RFC3339.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
Esquema de resultats:
{
"type": "boolean"
}
Exemples:
Temps d’activació després del llindar.
Params:
{
"timestamp": 1710000000000
}
Resultat:
true
abans
Retorna veritable si el temps de desencadenament és abans del llindar.
- Determinisme: temps_dependent
- Params requerits: sí
- Comparadors permesos: equals, not_equals, in_set, exists, not_exists
- Tipus d’ancoratge: trigger_time_unix_millis, trigger_time_logical
- Content types: application/json
Params fields:
- timestamp (requerit): número Unix millis o cadena de caràcters de timestamp RFC3339.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"timestamp": {
"description": "Unix millis number or RFC3339 timestamp string.",
"oneOf": [
{
"type": "integer"
},
{
"type": "string"
}
]
}
},
"required": [
"timestamp"
],
"type": "object"
}
Esquema de resultats:
{
"type": "boolean"
}
Exemples:
Temps de desencadenament abans del llindar.
Params:
{
"timestamp": "2024-01-01T00:00:00Z"
}
Resultat:
false
entorn
Llegeix les variables d’entorn del procés amb política d’autorització/denegació i límits de mida.
Contracte de proveïdor
- Nom: Proveïdor d’Entorn
- Transport: integrat
Notes
- Retorna null quan una clau falta o està bloquejada per política.
- S’apliquen límits de mida tant a la clau com al valor.
Esquema de configuració
Camp de configuració:
allowlist(opcional): Llista d’acceptació opcional de claus d’entorn.denylist(opcional): Llista explícita de claus d’entorn que es deneguen. Per defecte: [].max_key_bytes(opcional): Màxim de bytes permesos per a una clau d’entorn. Per defecte: 255.max_value_bytes(opcional): Màxim de bytes permesos per a un valor d’entorn. Per defecte: 65536.overrides(opcional): Mapa d’override determinista opcional per a cerques d’entorn.
{
"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"
}
Comprovacions
obtenir
Obteniu una variable d’entorn per clau.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: equals, not_equals, contains, in_set, exists, not_exists
- Tipus d’ancoratge: env
- Tipus de contingut: text/plain
Params fields:
key(requerit): Clau de la variable d’entorn.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"key": {
"description": "Environment variable key.",
"type": "string"
}
},
"required": [
"key"
],
"type": "object"
}
Esquema de resultats:
{
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
Exemples:
Llegeix DEPLOY_ENV.
Params:
{
"key": "DEPLOY_ENV"
}
Resultat:
"production"
json
Llegeix fitxers JSON o YAML i avalua consultes JSONPath contra ells.
Contracte de proveïdor
- Nom: Proveïdor JSON
- Transport: integrat
Notes
- L’accés als fitxers està restringit pels límits de mida i arrel configurats.
- Els camins de fitxer han de ser relatius a la arrel; els camins absoluts són rebutjats.
- JSONPath és opcional; si s’omet, significa el document complet.
- La falta de JSONPath genera un valor nul amb metadades d’error (jsonpath_not_found).
Esquema de configuració
Camp de configuració:
allow_yaml(opcional): Permetre el processament de YAML per a fitxers .yaml/.yml. Per defecte: true.max_bytes(opcional): Mida màxima del fitxer en bytes. Per defecte: 1048576.root(obligatori): Directori arrel per a la resolució de fitxers (obligatori).root_id(requerit): Identificador estable per a la arrel configurada (requerit).
{
"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"
}
Comprovacions
camí
Selecciona valors mitjançant JSONPath d’un fitxer JSON/YAML.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: 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
- Tipus d’ancoratge: file_path_rooted
- Tipus de contingut: application/json, application/yaml
Params fields:
file(requerit): Ruta a un fitxer JSON o YAML.jsonpath(opcional): Selector JSONPath opcional.
Esquema de paràmetres:
{
"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 resultats:
{
"description": "JSONPath result value (dynamic JSON type).",
"x-decision-gate": {
"dynamic_type": true
}
}
Exemples:
Exemple 1: Llegir la versió del config.json (ruta relativa a l’arrel).
Params:
{
"file": "config.json",
"jsonpath": "$.version"
}
Resultat:
"1.2.3"
Exemple 2: Retornar el document complet quan es omet jsonpath.
Params:
{
"file": "config.json"
}
Resultat:
{
"version": "1.2.3"
}
http
Emissió de sol·licituds HTTP GET limitades i retorn de codis d’estat o hashes del cos.
Contracte de proveïdor
- Nom: HTTP Provider
- Transport: integrat
Notes
- Els esquemes i les llistes d’hostes permesos s’apliquen amb la fixació de resolució DNS per cada sol·licitud.
- Les destinacions privades/locales estan bloquejades per defecte a menys que s’hagin habilitat explícitament.
- Les respostes tenen un límit de mida i es hash de manera determinista.
Esquema de configuració
Camp de configuració:
allow_http(opcional): Permetre URLs http:// en text pla. Per defecte: fals.allow_private_networks(opcional): Permetre adreces de destinació privades/locales de vincle/loopback. Per defecte: fals.allowed_hosts(opcional): Llista d’hostnames opcional permesa.hash_algorithm(opcional): Algorisme de hash utilitzat per a les respostes body_hash. Per defecte: “sha256”.max_response_bytes(opcional): Mida màxima de la resposta en bytes. Per defecte: 1048576.timeout_ms(opcional): Temps d’espera de la sol·licitud en mil·lisegons. Per defecte: 5000.user_agent(opcional): Cadena d’agent d’usuari per a sol·licituds sortints. Per defecte: “decision-gate/0.1”.
{
"additionalProperties": false,
"properties": {
"allow_http": {
"default": false,
"description": "Allow cleartext http:// URLs.",
"type": "boolean"
},
"allow_private_networks": {
"default": false,
"description": "Allow private/link-local/loopback destination addresses.",
"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"
}
Comprovacions
estat
Retorn de codi d’estat HTTP per a una URL.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: equals, not_equals, greater_than, greater_than_or_equal, less_than, less_than_or_equal, in_set, exists, not_exists
- Tipus d’ancora: url
- Content types: application/json
Params fields:
- url (obligatori): URL a consultar.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
Esquema de resultats:
{
"type": "integer"
}
Exemples:
Obtenir l’estat d’un punt final de salut.
Params:
{
"url": "https://api.example.com/health"
}
Resultat:
200
body_hash
Retorna un hash del cos de la resposta.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: exists, not_exists
- Tipus d’ancora: url
- Content types: application/json
Params fields:
- url (obligatori): URL a consultar.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
}
Esquema de resultats:
{
"additionalProperties": false,
"properties": {
"algorithm": {
"enum": [
"sha256"
],
"type": "string"
},
"value": {
"description": "Lowercase hex digest.",
"type": "string"
}
},
"required": [
"algorithm",
"value"
],
"type": "object"
}
Exemples:
Hasheja el cos d’un endpoint de salut.
Params:
{
"url": "https://api.example.com/health"
}
Resultat:
{
"algorithm": "sha256",
"value": "7b4d0d3d16c8f85f67ad79b0870a2c9f1e88924c4cbb4ed4bb7f5c6a1d1b7f9a"
}
descans
Emet sol·licituds HTTP GET limitades i retorna valors JSONPath extrets o capçaleres de resposta.
Contracte de proveïdor
- Nom: Proveïdor REST
- Transport: integrat
Notes
- Només GET a V1. POST es retarda intencionadament a una versió futura.
- Les comprovacions JSON requereixen el tipus de contingut application/json o variants vendor +json.
- Les ancores d’evidència REST utilitzen el tipus rest_request amb metadades de sol·licitud canònica.
- Els encapçalaments de consulta estan restringits: els noms d’encapçalament reservats i gestionats per l’autenticació són rebutjats.
- Per a les comprovacions només de codi d’estat, utilitzeu el proveïdor http integrat.
Esquema de configuració
Camp de configuració:
allow_http(opcional): Permetre URLs http:// en text pla. Per defecte: fals.allow_private_networks(opcional): Permetre adreces de destinació privades/locales de vincle/loopback. Per defecte: fals.allowed_hosts(opcional): Llista d’hostnames opcional permesa.auth(opcional): Una de les 2 variants d’esquema. Per defecte: null.default_headers(opcional): Encapsulaments estàtics opcionals afegits a cada sol·licitud.hash_algorithm(opcional): Algorisme de hash utilitzat per al hashing del cos de resposta en metadades d’ancoratge. Per defecte: “sha256”.max_response_bytes(opcional): Mida màxima de la resposta en bytes. Per defecte: 1048576.timeout_ms(opcional): Temps d’espera de la sol·licitud en mil·lisegons. Per defecte: 5000.user_agent(opcional): Cadena d’agent d’usuari per a sol·licituds sortints. Per defecte: “decision-gate/0.1”.
{
"additionalProperties": false,
"properties": {
"allow_http": {
"default": false,
"description": "Allow cleartext http:// URLs.",
"type": "boolean"
},
"allow_private_networks": {
"default": false,
"description": "Allow private/link-local/loopback destination addresses.",
"type": "boolean"
},
"allowed_hosts": {
"description": "Optional allowlist of hostnames.",
"items": {
"type": "string"
},
"type": "array"
},
"auth": {
"default": null,
"oneOf": [
{
"type": "null"
},
{
"additionalProperties": false,
"properties": {
"api_key_header": {
"description": "API key header name.",
"type": "string"
},
"api_key_value": {
"description": "API key value or environment variable reference.",
"type": "string"
},
"basic_password": {
"description": "Basic auth password or environment variable reference.",
"type": "string"
},
"basic_username": {
"description": "Basic auth username or environment variable reference.",
"type": "string"
},
"bearer_token": {
"description": "Bearer token value or environment variable reference.",
"type": "string"
}
},
"type": "object"
}
]
},
"default_headers": {
"additionalProperties": {
"type": "string"
},
"description": "Optional static headers added to every request.",
"type": "object"
},
"hash_algorithm": {
"default": "sha256",
"description": "Hash algorithm used for response body hashing in anchor metadata.",
"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"
}
Comprovacions
json_path
Obteniu el cos de resposta JSON i extreu un valor amb JSONPath.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: 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
- Tipus d’ancoratge: rest_request
- Content types: application/json
Params fields:
headers(opcional): Tipus: objecte.jsonpath(requerit): selector JSONPath.- url (obligatori): URL a consultar.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"jsonpath": {
"description": "JSONPath selector.",
"type": "string"
},
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url",
"jsonpath"
],
"type": "object"
}
Esquema de resultats:
{
"description": "JSONPath result value (dynamic JSON type).",
"x-decision-gate": {
"dynamic_type": true
}
}
Exemples:
Extreu l’estat d’aprovació d’una resposta d’API.
Params:
{
"jsonpath": "$.approved",
"url": "https://api.example.com/v1/decision/42"
}
Resultat:
true
capçalera
Obteniu el valor d’una capçalera de resposta pel nom de la capçalera.
- Determinisme: extern
- Params requerits: sí
- Comparadors permesos: equals, not_equals, contains, in_set, exists, not_exists
- Tipus d’ancoratge: rest_request
- Tipus de contingut: text/plain
Params fields:
header_name(requerit): Nom de l’encapçalament de resposta a extreure.headers(opcional): Tipus: objecte.- url (obligatori): URL a consultar.
Esquema de paràmetres:
{
"additionalProperties": false,
"properties": {
"header_name": {
"description": "Response header name to extract.",
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"type": "object"
},
"url": {
"description": "URL to query.",
"type": "string"
}
},
"required": [
"url",
"header_name"
],
"type": "object"
}
Esquema de resultats:
{
"oneOf": [
{
"type": "string"
},
{
"type": "null"
}
]
}
Exemples:
Llegiu un encapçalament de resposta ETag.
Params:
{
"header_name": "etag",
"url": "https://api.example.com/v1/config"
}
Resultat:
"\"abc123\""