///|
pub fn verify_configured_fetch_v1_json(
  config_text : String,
  execution_text : String,
  native_text : String,
  deliveries_text : String,
  options_text : String,
) -> String {
  try {
    let config = match parse_sql_config_v1(config_text) {
      Ok(config) => config
      Err(reason) => fail(reason)
    }
    let options = object_fields(
      sql_json_v1(options_text, 8192),
      "fetch options",
    )
    known_fields(options, ["maxChecks", "grammarOptions"], "fetch options")
    let checks = match options.get("maxChecks") {
      None => 1000000
      Some(value) => fetch_number_v1(value, 1000000)
    }
    let grammar = match options.get("grammarOptions") {
      None => sql_verification_options_v1()
      Some(value) => sql_wire_options_v1(value.stringify())
    }
    configured_fetch_check_v1_json(
      verify_configured_fetch_v1(
        config,
        sql_json_v1(execution_text, 1048576),
        sql_json_v1(native_text, 524288),
        sql_json_v1(deliveries_text, 2097152),
        max_checks=checks,
        grammar_options=grammar,
      ),
    ).stringify()
  } catch {
    error =>
      (
        {
          "format": "moontxnwitness-configured-fetch-verification/v1",
          "status": "invalid",
          "valid": false,
          "sourceFactsProduced": false,
          "sourceAuthenticated": false,
          "gaps": [Json(error.to_string())],
        } : Json).stringify()
  }
}