import requests
url = "https://{FUSION HOST}/api/spark/configurations"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)[
{
"id": "product_demo_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:22.962021895Z"
}
]
},
{
"id": "query-query-recommendations",
"inputCollection": "Docs_Site_2_signals",
"sourceCatchup": true,
"sourceRemove": false,
"sql": "SELECT DISTINCT d.doc_id as doc_s,\n\tcollect_set(d.query_orig_s) as query_ss,\n\tfirst(d.id) as id,\n\tapprox_count_distinct(d.query_orig_s) as count_i\n\tFROM ${inputCollection} as d\n\tGROUP BY doc_s",
"skipCheckEnabled": true,
"skipJobIfSignalsEmpty": true,
"selectQuery": "*:*",
"rows": 10000,
"outputCollection": "Docs_Site_2_queries_query_recs",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "aggregation",
"updates": [
{
"userId": "docs",
"timestamp": "2023-11-16T22:11:06.157793Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:12:50.565353Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:12:50.568009Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:25:02.487439Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:25:02.489696Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:29:23.298780Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:29:23.301201Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:49:57.502412Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:49:57.504789Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T23:08:31.127377Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T23:08:31.129831Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:13:06.160988Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:13:06.163055Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:51:44.405324Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:51:44.407660Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T01:04:32.624678Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T01:04:32.626958Z"
},
{
"userId": "docs",
"timestamp": "2023-11-20T16:49:16.543368Z"
},
{
"userId": "docs",
"timestamp": "2023-11-20T16:49:16.551262Z"
}
]
},
{
"id": "api-test-app_click_signals_aggregation",
"inputCollection": "api-test-app_signals",
"outputCollection": "api-test-app_signals_aggr",
"sql": "WITH sigs_with_filters AS (\n SELECT c.query as query,\n c.doc_id,\n q.filters_s as filters,\n c.type,\n c.ref_time,\n coalesce(c.count_i,1) as count_i,\n c.timestamp_tdt,\n greatest(coalesce(c.weight_d,0.1),0.0) as weight_d\n FROM ${inputCollection} c\n LEFT JOIN (SELECT id, filters_s FROM ${inputCollection} WHERE type='response') q ON q.id = c.fusion_query_id\n WHERE c.type IN (${signalTypes}) AND c.timestamp_tdt >= c.catchup_timestamp_tdt\n ), signal_type_groups AS (\n SELECT SUM(count_i) AS typed_aggr_count_i,\n query,\n doc_id,\n type,\n filters,\n time_decay(count_i, timestamp_tdt, \"30 days\", ref_time, weight_d) AS typed_weight_d\n FROM sigs_with_filters\n GROUP BY doc_id, query, filters, type\n ) SELECT concat_ws('|', query, doc_id, filters) as id,\n SUM(typed_aggr_count_i) AS aggr_count_i,\n query AS query_s,\n query AS query_t,\n doc_id AS doc_id_s,\n filters AS filters_s,\n SPLIT(filters, ' \\\\$ ') AS filters_ss,\n weighted_sum(typed_weight_d, type, '${signalTypeWeights}') AS weight_d\n FROM signal_type_groups\n GROUP BY query, doc_id, filters",
"rollupSql": "SELECT concat_ws('|', query_s, doc_id_s, filters_s) as id,\n query_s,\n query_s as query_t,\n doc_id_s,\n filters_s,\n first(aggr_type_s) AS aggr_type_s,\n SPLIT(filters_s, ' \\\\$ ') AS filters_ss,\n SUM(weight_d) AS weight_d,\n SUM(aggr_count_i) AS aggr_count_i\n FROM api-test-app_signals_aggr\n GROUP BY query_s, doc_id_s, filters_s",
"parameters": [
{
"key": "signalTypeWeights",
"value": "click:1.0,cart:10.0,purchase:25.0"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": true,
"hiddenParameters": [
{
"key": "signalTypes",
"value": "_regex/signalTypeWeights/([\\w\\-\\.]*):([\\d\\.\\-]*)(,|$)/'$1'$3/g"
}
],
"skipCheckEnabled": true,
"notes": "Computes an aggregated weight for each query / item combination found in the signals collection. The weight for each group is computed using an exponential time-decay on signal count (30 day half-life) and a weighted sum based on the signal type. Use the 'signalTypeWeights' parameter to set the correct signal types and weights for your dataset. The results of this job can be used to boost documents at query time using the boosting stage.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.015534417Z"
}
]
},
{
"id": "api-test-app_session_rollup",
"inputCollection": "api-test-app_signals",
"outputCollection": "api-test-app_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.027725367Z"
}
]
},
{
"id": "product_demo_session_rollup",
"inputCollection": "product_demo_signals",
"outputCollection": "product_demo_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.657308899Z"
}
]
},
{
"id": "product_demo_click_signals_aggregation",
"inputCollection": "product_demo_signals",
"outputCollection": "product_demo_signals_aggr",
"sql": "WITH sigs_with_filters AS (\n SELECT c.query as query,\n c.doc_id,\n q.filters_s as filters,\n c.type,\n c.ref_time,\n coalesce(c.count_i,1) as count_i,\n c.timestamp_tdt,\n greatest(coalesce(c.weight_d,0.1),0.0) as weight_d\n FROM ${inputCollection} c\n LEFT JOIN (SELECT id, filters_s FROM ${inputCollection} WHERE type='response') q ON q.id = c.fusion_query_id\n WHERE c.type IN (${signalTypes}) AND c.timestamp_tdt >= c.catchup_timestamp_tdt\n ), signal_type_groups AS (\n SELECT SUM(count_i) AS typed_aggr_count_i,\n query,\n doc_id,\n type,\n filters,\n time_decay(count_i, timestamp_tdt, \"30 days\", ref_time, weight_d) AS typed_weight_d\n FROM sigs_with_filters\n GROUP BY doc_id, query, filters, type\n ) SELECT concat_ws('|', query, doc_id, filters) as id,\n SUM(typed_aggr_count_i) AS aggr_count_i,\n query AS query_s,\n query AS query_t,\n doc_id AS doc_id_s,\n filters AS filters_s,\n SPLIT(filters, ' \\\\$ ') AS filters_ss,\n weighted_sum(typed_weight_d, type, '${signalTypeWeights}') AS weight_d\n FROM signal_type_groups\n GROUP BY query, doc_id, filters",
"rollupSql": "SELECT concat_ws('|', query_s, doc_id_s, filters_s) as id,\n query_s,\n query_s as query_t,\n doc_id_s,\n filters_s,\n first(aggr_type_s) AS aggr_type_s,\n SPLIT(filters_s, ' \\\\$ ') AS filters_ss,\n SUM(weight_d) AS weight_d,\n SUM(aggr_count_i) AS aggr_count_i\n FROM product_demo_signals_aggr\n GROUP BY query_s, doc_id_s, filters_s",
"parameters": [
{
"key": "signalTypeWeights",
"value": "click:1.0,cart:10.0,purchase:25.0"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": true,
"hiddenParameters": [
{
"key": "signalTypes",
"value": "_regex/signalTypeWeights/([\\w\\-\\.]*):([\\d\\.\\-]*)(,|$)/'$1'$3/g"
}
],
"skipCheckEnabled": true,
"notes": "Computes an aggregated weight for each query / item combination found in the signals collection. The weight for each group is computed using an exponential time-decay on signal count (30 day half-life) and a weighted sum based on the signal type. Use the 'signalTypeWeights' parameter to set the correct signal types and weights for your dataset. The results of this job can be used to boost documents at query time using the boosting stage.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.631440661Z"
}
]
},
{
"id": "Synthetic_dataset_test_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "Synthetic_dataset_test_signals_aggr",
"outputCollection": "Synthetic_dataset_test_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "Synthetic_dataset_test_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "Synthetic_dataset_test_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:31.054004509Z"
}
]
},
{
"id": "Synthetic_dataset_test_head_tail",
"randomSeed": 1234,
"trainingCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "Synthetic_dataset_test_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:37.976254886Z"
}
]
},
{
"id": "api-test-app_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.857626422Z"
}
]
},
{
"id": "api-test-app_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "api-test-app_signals_aggr",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "api-test-app_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "api-test-app_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.888732541Z"
}
]
},
{
"id": "product_demo_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "product_demo_signals_aggr",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "product_demo_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "product_demo_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:23.452449115Z"
}
]
},
{
"id": "product_demo_head_tail",
"randomSeed": 1234,
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "product_demo_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.680465167Z"
}
]
},
{
"id": "Synthetic_dataset_test_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:31.008454832Z"
}
]
},
{
"id": "api-test-app_phrase_extraction",
"trainingDataFilterQuery": "*:*",
"randomSeed": 8180,
"analyzerConfig": "{ \"analyzers\": [{ \"name\": \"StdTokLowerStop\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStop\" } ]}",
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"fieldToVectorize": "query",
"trainingDataSamplingFraction": 1,
"ngramSize": 3,
"minmatch": 100,
"attachPhrases": false,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "sip",
"sourceFields": "query",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.880887211Z"
}
]
},
{
"id": "api-test-app_head_tail",
"randomSeed": 1234,
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "api-test-app_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.037038966Z"
}
]
},
{
"id": "product_demo_phrase_extraction",
"trainingDataFilterQuery": "*:*",
"randomSeed": 8180,
"analyzerConfig": "{ \"analyzers\": [{ \"name\": \"StdTokLowerStop\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStop\" } ]}",
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"fieldToVectorize": "query",
"trainingDataSamplingFraction": 1,
"ngramSize": 3,
"minmatch": 100,
"attachPhrases": false,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "sip",
"sourceFields": "query",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:23.352147553Z"
}
]
},
{
"id": "Synthetic_dataset_test_session_rollup",
"inputCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:37.961250096Z"
}
]
},
{
"id": "index_synthetic_data",
"format": "json",
"path": "gs://lucidworks-example-data/hardware/1000/1000_synthetic.json",
"outputCollection": "Synthetic_dataset_test",
"outputIndexPipeline": "Synthetic_dataset_test",
"clearDatasource": false,
"defineFieldsUsingInputSchema": true,
"atomicUpdates": false,
"cacheAfterRead": false,
"continueAfterFailure": false,
"type": "parallel-bulk-loader",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-14T20:50:09.847634657Z"
}
]
}
]Get the list of all existing job configurations.
import requests
url = "https://{FUSION HOST}/api/spark/configurations"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)[
{
"id": "product_demo_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:22.962021895Z"
}
]
},
{
"id": "query-query-recommendations",
"inputCollection": "Docs_Site_2_signals",
"sourceCatchup": true,
"sourceRemove": false,
"sql": "SELECT DISTINCT d.doc_id as doc_s,\n\tcollect_set(d.query_orig_s) as query_ss,\n\tfirst(d.id) as id,\n\tapprox_count_distinct(d.query_orig_s) as count_i\n\tFROM ${inputCollection} as d\n\tGROUP BY doc_s",
"skipCheckEnabled": true,
"skipJobIfSignalsEmpty": true,
"selectQuery": "*:*",
"rows": 10000,
"outputCollection": "Docs_Site_2_queries_query_recs",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "aggregation",
"updates": [
{
"userId": "docs",
"timestamp": "2023-11-16T22:11:06.157793Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:12:50.565353Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:12:50.568009Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:25:02.487439Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:25:02.489696Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:29:23.298780Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:29:23.301201Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:49:57.502412Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T22:49:57.504789Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T23:08:31.127377Z"
},
{
"userId": "docs",
"timestamp": "2023-11-16T23:08:31.129831Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:13:06.160988Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:13:06.163055Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:51:44.405324Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T00:51:44.407660Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T01:04:32.624678Z"
},
{
"userId": "docs",
"timestamp": "2023-11-17T01:04:32.626958Z"
},
{
"userId": "docs",
"timestamp": "2023-11-20T16:49:16.543368Z"
},
{
"userId": "docs",
"timestamp": "2023-11-20T16:49:16.551262Z"
}
]
},
{
"id": "api-test-app_click_signals_aggregation",
"inputCollection": "api-test-app_signals",
"outputCollection": "api-test-app_signals_aggr",
"sql": "WITH sigs_with_filters AS (\n SELECT c.query as query,\n c.doc_id,\n q.filters_s as filters,\n c.type,\n c.ref_time,\n coalesce(c.count_i,1) as count_i,\n c.timestamp_tdt,\n greatest(coalesce(c.weight_d,0.1),0.0) as weight_d\n FROM ${inputCollection} c\n LEFT JOIN (SELECT id, filters_s FROM ${inputCollection} WHERE type='response') q ON q.id = c.fusion_query_id\n WHERE c.type IN (${signalTypes}) AND c.timestamp_tdt >= c.catchup_timestamp_tdt\n ), signal_type_groups AS (\n SELECT SUM(count_i) AS typed_aggr_count_i,\n query,\n doc_id,\n type,\n filters,\n time_decay(count_i, timestamp_tdt, \"30 days\", ref_time, weight_d) AS typed_weight_d\n FROM sigs_with_filters\n GROUP BY doc_id, query, filters, type\n ) SELECT concat_ws('|', query, doc_id, filters) as id,\n SUM(typed_aggr_count_i) AS aggr_count_i,\n query AS query_s,\n query AS query_t,\n doc_id AS doc_id_s,\n filters AS filters_s,\n SPLIT(filters, ' \\\\$ ') AS filters_ss,\n weighted_sum(typed_weight_d, type, '${signalTypeWeights}') AS weight_d\n FROM signal_type_groups\n GROUP BY query, doc_id, filters",
"rollupSql": "SELECT concat_ws('|', query_s, doc_id_s, filters_s) as id,\n query_s,\n query_s as query_t,\n doc_id_s,\n filters_s,\n first(aggr_type_s) AS aggr_type_s,\n SPLIT(filters_s, ' \\\\$ ') AS filters_ss,\n SUM(weight_d) AS weight_d,\n SUM(aggr_count_i) AS aggr_count_i\n FROM api-test-app_signals_aggr\n GROUP BY query_s, doc_id_s, filters_s",
"parameters": [
{
"key": "signalTypeWeights",
"value": "click:1.0,cart:10.0,purchase:25.0"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": true,
"hiddenParameters": [
{
"key": "signalTypes",
"value": "_regex/signalTypeWeights/([\\w\\-\\.]*):([\\d\\.\\-]*)(,|$)/'$1'$3/g"
}
],
"skipCheckEnabled": true,
"notes": "Computes an aggregated weight for each query / item combination found in the signals collection. The weight for each group is computed using an exponential time-decay on signal count (30 day half-life) and a weighted sum based on the signal type. Use the 'signalTypeWeights' parameter to set the correct signal types and weights for your dataset. The results of this job can be used to boost documents at query time using the boosting stage.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.015534417Z"
}
]
},
{
"id": "api-test-app_session_rollup",
"inputCollection": "api-test-app_signals",
"outputCollection": "api-test-app_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.027725367Z"
}
]
},
{
"id": "product_demo_session_rollup",
"inputCollection": "product_demo_signals",
"outputCollection": "product_demo_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.657308899Z"
}
]
},
{
"id": "product_demo_click_signals_aggregation",
"inputCollection": "product_demo_signals",
"outputCollection": "product_demo_signals_aggr",
"sql": "WITH sigs_with_filters AS (\n SELECT c.query as query,\n c.doc_id,\n q.filters_s as filters,\n c.type,\n c.ref_time,\n coalesce(c.count_i,1) as count_i,\n c.timestamp_tdt,\n greatest(coalesce(c.weight_d,0.1),0.0) as weight_d\n FROM ${inputCollection} c\n LEFT JOIN (SELECT id, filters_s FROM ${inputCollection} WHERE type='response') q ON q.id = c.fusion_query_id\n WHERE c.type IN (${signalTypes}) AND c.timestamp_tdt >= c.catchup_timestamp_tdt\n ), signal_type_groups AS (\n SELECT SUM(count_i) AS typed_aggr_count_i,\n query,\n doc_id,\n type,\n filters,\n time_decay(count_i, timestamp_tdt, \"30 days\", ref_time, weight_d) AS typed_weight_d\n FROM sigs_with_filters\n GROUP BY doc_id, query, filters, type\n ) SELECT concat_ws('|', query, doc_id, filters) as id,\n SUM(typed_aggr_count_i) AS aggr_count_i,\n query AS query_s,\n query AS query_t,\n doc_id AS doc_id_s,\n filters AS filters_s,\n SPLIT(filters, ' \\\\$ ') AS filters_ss,\n weighted_sum(typed_weight_d, type, '${signalTypeWeights}') AS weight_d\n FROM signal_type_groups\n GROUP BY query, doc_id, filters",
"rollupSql": "SELECT concat_ws('|', query_s, doc_id_s, filters_s) as id,\n query_s,\n query_s as query_t,\n doc_id_s,\n filters_s,\n first(aggr_type_s) AS aggr_type_s,\n SPLIT(filters_s, ' \\\\$ ') AS filters_ss,\n SUM(weight_d) AS weight_d,\n SUM(aggr_count_i) AS aggr_count_i\n FROM product_demo_signals_aggr\n GROUP BY query_s, doc_id_s, filters_s",
"parameters": [
{
"key": "signalTypeWeights",
"value": "click:1.0,cart:10.0,purchase:25.0"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": true,
"hiddenParameters": [
{
"key": "signalTypes",
"value": "_regex/signalTypeWeights/([\\w\\-\\.]*):([\\d\\.\\-]*)(,|$)/'$1'$3/g"
}
],
"skipCheckEnabled": true,
"notes": "Computes an aggregated weight for each query / item combination found in the signals collection. The weight for each group is computed using an exponential time-decay on signal count (30 day half-life) and a weighted sum based on the signal type. Use the 'signalTypeWeights' parameter to set the correct signal types and weights for your dataset. The results of this job can be used to boost documents at query time using the boosting stage.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.631440661Z"
}
]
},
{
"id": "Synthetic_dataset_test_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "Synthetic_dataset_test_signals_aggr",
"outputCollection": "Synthetic_dataset_test_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "Synthetic_dataset_test_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "Synthetic_dataset_test_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:31.054004509Z"
}
]
},
{
"id": "Synthetic_dataset_test_head_tail",
"randomSeed": 1234,
"trainingCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "Synthetic_dataset_test_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:37.976254886Z"
}
]
},
{
"id": "api-test-app_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.857626422Z"
}
]
},
{
"id": "api-test-app_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "api-test-app_signals_aggr",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "api-test-app_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "api-test-app_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.888732541Z"
}
]
},
{
"id": "product_demo_synonym_detection",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "product_demo_signals_aggr",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"misspellingCollection": "product_demo_query_rewrite_staging",
"misspellingsFilterQuery": "type:spell",
"keyPhraseCollection": "product_demo_query_rewrite_staging",
"keyPhraseFilterQuery": "type:phrase",
"countField": "aggr_count_i",
"fieldToVectorize": "query_s",
"docIdField": "doc_id_s",
"overlapThreshold": 0.5,
"minQueryCount": 5,
"similarityThreshold": 0.01,
"trainingDataSamplingFraction": 1,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"randomSeed": 1234,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"misspellingSQL": "\nSELECT surface_form AS misspelling_s, output AS correction_s\nFROM spell_input\nWHERE doc_type = 'query_rewrite' AND type = 'spell' AND (review = 'approved' OR review = 'auto')\n\n ",
"misspellingSQLDataFormat": "solr",
"phraseSQL": "\nSELECT surface_form AS phrases_s, coalesce(confidence, 1) AS likelihood_d, coalesce(word_count,1) AS word_num_i\nFROM phrase_input\nWHERE doc_type = 'query_rewrite' AND type = 'phrase' AND (review = 'approved' OR review = 'auto')\n\n ",
"phraseSQLDataFormat": "solr",
"type": "synonymDetection",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:23.452449115Z"
}
]
},
{
"id": "product_demo_head_tail",
"randomSeed": 1234,
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "product_demo_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:34.680465167Z"
}
]
},
{
"id": "Synthetic_dataset_test_spell_correction",
"trainingDataFilterQuery": "*:*",
"trainingCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_query_rewrite_staging",
"overwriteOutput": true,
"maxDistance": 2,
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"analyzerConfigDictionary": "{ \"analyzers\": [ { \"name\": \"LetterTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"letter\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"KStem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"LetterTokLowerStem\" } ]}",
"lenScale": 5,
"fieldToVectorize": "query",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 10,
"trainingDataSamplingFraction": 1,
"countField": "count_i",
"dictionaryDataFilterQuery": "*:*",
"minPrefix": 1,
"minMispellingLen": 5,
"correctionThreshold": 0.8,
"misspellingThreshold": 0.8,
"lastCharMatchBoost": 1,
"soundMatchBoost": 3,
"correctCntBoost": 2,
"editDistBoost": 2,
"corMisRatio": 3,
"randomSeed": 1234,
"signalDataIndicator": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "tokenPhraseSpellCorrection",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:31.008454832Z"
}
]
},
{
"id": "api-test-app_phrase_extraction",
"trainingDataFilterQuery": "*:*",
"randomSeed": 8180,
"analyzerConfig": "{ \"analyzers\": [{ \"name\": \"StdTokLowerStop\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStop\" } ]}",
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_query_rewrite_staging",
"overwriteOutput": true,
"fieldToVectorize": "query",
"trainingDataSamplingFraction": 1,
"ngramSize": 3,
"minmatch": 100,
"attachPhrases": false,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "sip",
"sourceFields": "query",
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:32.880887211Z"
}
]
},
{
"id": "api-test-app_head_tail",
"randomSeed": 1234,
"trainingCollection": "api-test-app_signals",
"outputCollection": "api-test-app_job_reports",
"overwriteOutput": true,
"trainingDataFilterQuery": "*:*",
"fieldToVectorize": "query",
"analyzerConfigQuery": "{ \"analyzers\": [ { \"name\": \"StdTokLowerStem\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" },{ \"type\": \"englishminimalstem\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStem\" } ]}",
"countField": "count_i",
"mainType": "click",
"filterType": "response",
"signalTypeField": "type",
"minCountMain": 1,
"minCountFilter": 20,
"queryLenThreshold": 2,
"userHead": -1,
"userTail": -1,
"topQ": [
100,
0.01
],
"trafficPerc": [
0.25,
0.5,
0.75
],
"lastTraffic": [
0.01
],
"trafficCount": [
5
],
"overlapThreshold": 4,
"lenScale": 6,
"overlapNumBoost": 10,
"headQueryCntBoost": 1,
"tailRewrite": true,
"sparkPartitions": 200,
"enableAutoPublish": false,
"tailRewriteCollection": "api-test-app_query_rewrite_staging",
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "headTailAnalysis",
"trainingDataSamplingFraction": 1,
"updates": [
{
"userId": "laureltraining",
"timestamp": "2025-10-02T19:41:38.037038966Z"
}
]
},
{
"id": "product_demo_phrase_extraction",
"trainingDataFilterQuery": "*:*",
"randomSeed": 8180,
"analyzerConfig": "{ \"analyzers\": [{ \"name\": \"StdTokLowerStop\",\"charFilters\": [ { \"type\": \"htmlstrip\" } ],\"tokenizer\": { \"type\": \"standard\" },\"filters\": [{ \"type\": \"lowercase\" }] }],\"fields\": [{ \"regex\": \".+\", \"analyzer\": \"StdTokLowerStop\" } ]}",
"trainingCollection": "product_demo_signals",
"outputCollection": "product_demo_query_rewrite_staging",
"overwriteOutput": true,
"fieldToVectorize": "query",
"trainingDataSamplingFraction": 1,
"ngramSize": 3,
"minmatch": 100,
"attachPhrases": false,
"sparkPartitions": 200,
"enableAutoPublish": false,
"dataFormat": "solr",
"dataOutputFormat": "solr",
"sparkSQL": "SELECT * from spark_input",
"type": "sip",
"sourceFields": "query",
"updates": [
{
"userId": "[email protected]",
"timestamp": "2025-04-15T15:32:23.352147553Z"
}
]
},
{
"id": "Synthetic_dataset_test_session_rollup",
"inputCollection": "Synthetic_dataset_test_signals",
"outputCollection": "Synthetic_dataset_test_signals",
"sql": "WITH session_agg AS (\n SELECT COUNT(1) AS activity_count,\n MIN(timestamp_tdt) AS start,\n MAX(timestamp_tdt) AS end,\n timediff(MAX(timestamp_tdt), MIN(timestamp_tdt), \"MINUTES\") AS duration,\n 'session' AS type,\n first(user_id) AS user,\n session_keywords(query) AS keywords,\n session\n FROM ${inputCollection}\n WHERE timestamp_tdt IS NOT NULL\n AND type != 'session'\n AND session IS NOT NULL\n AND session NOT IN (SELECT session FROM ${inputCollection} WHERE type = 'session' AND session IS NOT NULL)\n GROUP BY session\n HAVING timediff(current_timestamp(), MAX(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceLastActivity} OR timediff(current_timestamp(), MIN(timestamp_tdt), \"SECONDS\") >= ${elapsedSecsSinceSessionStart})\n SELECT activity_count, start, end, duration, type, user, keywords, session FROM session_agg",
"parameters": [
{
"key": "elapsedSecsSinceLastActivity",
"value": "360"
},
{
"key": "elapsedSecsSinceSessionStart",
"value": "3600"
}
],
"selectQuery": "*:*",
"sourceRemove": false,
"sourceCatchup": false,
"hiddenParameters": [
{
"key": "outputProjectedFieldsOnly",
"value": "true"
}
],
"skipCheckEnabled": false,
"notes": "Aggregate related user activity into a session signal containing activity count, duration, and keywords (based on user search terms). This job is used by the Fusion Insights application to show reports about user sessions. Use the 'elapsedSecsSinceLastActivity' and 'elapsedSecsSinceSessionStart' parameters to determine when a user session is considered to be complete.",
"useNaturalKey": true,
"optimizeSegments": 0,
"dataFormat": "solr",
"sparkSQL": "SELECT * FROM spark_input",
"sparkPartitions": 200,
"type": "sql_template",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-08T16:50:37.961250096Z"
}
]
},
{
"id": "index_synthetic_data",
"format": "json",
"path": "gs://lucidworks-example-data/hardware/1000/1000_synthetic.json",
"outputCollection": "Synthetic_dataset_test",
"outputIndexPipeline": "Synthetic_dataset_test",
"clearDatasource": false,
"defineFieldsUsingInputSchema": true,
"atomicUpdates": false,
"cacheAfterRead": false,
"continueAfterFailure": false,
"type": "parallel-bulk-loader",
"updates": [
{
"userId": "docs",
"timestamp": "2025-08-14T20:50:09.847634657Z"
}
]
}
]Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
OK
Was this page helpful?