Decision Gate Docs

Avaluació de portes determinista, reproduïble amb decisions auditable.

Asset Core docs

Proveïdors integrats de Decision Gate

Descarregar: providers.json (14 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

  • Les llistes blanques de l’esquema i l’amfitrió s’apliquen mitjançant la configuració.
  • 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.
  • 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"
    },
    "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"
}