[console] Adding documentation to console (#19715)

* adding documentation links when the endpoint is known

* making doc link reflect version user is using

* adding documentation links for xpack APIs

* fixing missing argument issue

* removing console log

* fixing issue with lingering documentation after text is deleted

* fixing issue with documentation and multiple commands in the editor

* adding $scope.$apply so documentation changes show up in UI

* removing dead code

* adding missing boost param for match_all

* fixing issue with parameterized endpoint completion

* adding keyboard shortcut for opening documentation for current request

* fixing issue with keyboard docs shortcut when you just move the cursor around
This commit is contained in:
Bill McConaghy 2018-06-08 12:47:22 -04:00 committed by GitHub
parent c8216de9d5
commit 990e454b92
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
26 changed files with 627 additions and 484 deletions

View file

@ -386,7 +386,9 @@ export function queryDsl(api) {
_scope: '',
query: {},
},
match_all: {},
match_all: {
boost: 1,
},
more_like_this: {
__template: {
fields: ['FIELD'],

View file

@ -16,6 +16,7 @@
id="consoleRequestOptions"
class="editor_action"
dropdown-toggle
ng-click="getDocumentation()"
aria-label="Request options"
>
<span class="kuiIcon fa-wrench"></span>
@ -29,6 +30,9 @@
<li role="menuitem">
<button class="link" id="copy_as_curl">Copy as cURL</button>
</li>
<li role="menuitem" ng-if="documentation">
<button ng-click="openDocumentation(documentation)">Open documentation</button>
</li>
<li role="menuitem">
<button ng-click="autoIndent($event)">Auto indent</button>
</li>

View file

@ -33,6 +33,27 @@ export default function init(input, output, sourceLocation = 'stored') {
output.update('');
}
function setupAutosave() {
let timer;
const saveDelay = 500;
input.getSession().on('change', function onChange() {
if (timer) {
timer = clearTimeout(timer);
}
timer = setTimeout(saveCurrentState, saveDelay);
});
}
function saveCurrentState() {
try {
const content = input.getValue();
history.updateCurrentState(content);
}
catch (e) {
console.log('Ignoring saving error: ' + e);
}
}
function loadSavedState() {
const previousSaveState = history.getSavedEditorState();
@ -71,28 +92,6 @@ export default function init(input, output, sourceLocation = 'stored') {
input.moveToNextRequestEdge(true);
}
function setupAutosave() {
let timer;
const saveDelay = 500;
input.getSession().on('change', function onChange() {
if (timer) {
timer = clearTimeout(timer);
}
timer = setTimeout(saveCurrentState, saveDelay);
});
}
function saveCurrentState() {
try {
const content = input.getValue();
history.updateCurrentState(content);
}
catch (e) {
console.log('Ignoring saving error: ' + e);
}
}
// stupid simple restore function, called when the user
// chooses to restore a request from the history
// PREVENTS history from needing to know about the input
@ -130,8 +129,7 @@ export default function init(input, output, sourceLocation = 'stored') {
input.moveCursorTo(pos.row + prefix.length, 0);
input.focus();
};
loadSavedState();
setupAutosave();
loadSavedState();
mappings.startRetrievingAutoCompleteInfo();
}

View file

@ -34,6 +34,272 @@ const AceRange = ace.acequire('ace/range').Range;
let LAST_EVALUATED_TOKEN = null;
function isUrlParamsToken(token) {
switch ((token || {}).type) {
case 'url.param':
case 'url.equal':
case 'url.value':
case 'url.questionmark':
case 'url.amp':
return true;
default:
return false;
}
}
function getCurrentMethodAndTokenPaths(editor, pos, forceEndOfUrl) {
const tokenIter = editor.iterForPosition(pos.row, pos.column);
const startPos = pos;
let bodyTokenPath = [];
const ret = {};
const STATES = {
looking_for_key: 0, // looking for a key but without jumping over anything but white space and colon.
looking_for_scope_start: 1, // skip everything until scope start
start: 3
};
let state = STATES.start;
// initialization problems -
let t = tokenIter.getCurrentToken();
if (t) {
if (startPos.column === 0) {
// if we are at the beginning of the line, the current token is the one after cursor, not before which
// deviates from the standard.
t = tokenIter.stepBackward();
state = STATES.looking_for_scope_start;
}
}
else {
if (startPos.column === 0) {
// empty lines do no have tokens, move one back
t = tokenIter.stepBackward();
state = STATES.start;
}
}
let walkedSomeBody = false;
// climb one scope at a time and get the scope key
for (; t && t.type.indexOf('url') === -1 && t.type !== 'method'; t = tokenIter.stepBackward()) {
if (t.type !== 'whitespace') {
walkedSomeBody = true;
} // marks we saw something
switch (t.type) {
case 'variable':
if (state === STATES.looking_for_key) {
bodyTokenPath.unshift(t.value.trim().replace(/"/g, ''));
}
state = STATES.looking_for_scope_start; // skip everything until the beginning of this scope
break;
case 'paren.lparen':
bodyTokenPath.unshift(t.value);
if (state === STATES.looking_for_scope_start) {
// found it. go look for the relevant key
state = STATES.looking_for_key;
}
break;
case 'paren.rparen':
// reset he search for key
state = STATES.looking_for_scope_start;
// and ignore this sub scope..
let parenCount = 1;
t = tokenIter.stepBackward();
while (t && parenCount > 0) {
switch (t.type) {
case 'paren.lparen':
parenCount--;
break;
case 'paren.rparen':
parenCount++;
break;
}
if (parenCount > 0) {
t = tokenIter.stepBackward();
}
}
if (!t) // oops we run out.. we don't know what's up return null;
{
return {};
}
continue;
case 'punctuation.end_triple_quote':
// reset the search for key
state = STATES.looking_for_scope_start;
for (t = tokenIter.stepBackward(); t; t = tokenIter.stepBackward()) {
if (t.type === 'punctuation.start_triple_quote') {
t = tokenIter.stepBackward();
break;
}
}
if (!t) // oops we run out.. we don't know what's up return null;
{
return {};
}
continue;
case 'punctuation.start_triple_quote':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
else if (state === STATES.looking_for_key) {
state = STATES.looking_for_scope_start;
}
bodyTokenPath.unshift('"""');
continue;
case 'string':
case 'constant.numeric':
case 'constant.language.boolean':
case 'text':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
else if (state === STATES.looking_for_key) {
state = STATES.looking_for_scope_start;
}
break;
case 'punctuation.comma':
if (state === STATES.start) {
state = STATES.looking_for_scope_start;
}
break;
case 'punctuation.colon':
case 'whitespace':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
break; // skip white space
}
}
if (walkedSomeBody && (!bodyTokenPath || bodyTokenPath.length === 0)) {
// we had some content and still no path -> the cursor is position after a closed body -> no auto complete
return {};
}
ret.urlTokenPath = [];
if (tokenIter.getCurrentTokenRow() === startPos.row) {
if (t.type === 'url.part' || t.type === 'url.param' || t.type === 'url.value') {
// we are forcing the end of the url for the purposes of determining an endpoint
if (forceEndOfUrl && t.type === 'url.part') {
ret.urlTokenPath.push(t.value);
ret.urlTokenPath.push(URL_PATH_END_MARKER);
}
// we are on the same line as cursor and dealing with a url. Current token is not part of the context
t = tokenIter.stepBackward();
// This will force method parsing
while (t.type === 'whitespace') {
t = tokenIter.stepBackward();
}
}
bodyTokenPath = null; // no not on a body line.
}
ret.bodyTokenPath = bodyTokenPath;
ret.urlParamsTokenPath = null;
ret.requestStartRow = tokenIter.getCurrentTokenRow();
let curUrlPart;
while (t && isUrlParamsToken(t)) {
switch (t.type) {
case 'url.value':
if (Array.isArray(curUrlPart)) {
curUrlPart.unshift(t.value);
}
else if (curUrlPart) {
curUrlPart = [t.value, curUrlPart];
}
else {
curUrlPart = t.value;
}
break;
case 'url.comma':
if (!curUrlPart) {
curUrlPart = [];
}
else if (!Array.isArray(curUrlPart)) {
curUrlPart = [curUrlPart];
}
break;
case 'url.param':
const v = curUrlPart;
curUrlPart = {};
curUrlPart[t.value] = v;
break;
case 'url.amp':
case 'url.questionmark':
if (!ret.urlParamsTokenPath) {
ret.urlParamsTokenPath = [];
}
ret.urlParamsTokenPath.unshift(curUrlPart || {});
curUrlPart = null;
break;
}
t = tokenIter.stepBackward();
}
curUrlPart = null;
while (t && t.type.indexOf('url') !== -1) {
switch (t.type) {
case 'url.part':
if (Array.isArray(curUrlPart)) {
curUrlPart.unshift(t.value);
}
else if (curUrlPart) {
curUrlPart = [t.value, curUrlPart];
}
else {
curUrlPart = t.value;
}
break;
case 'url.comma':
if (!curUrlPart) {
curUrlPart = [];
}
else if (!Array.isArray(curUrlPart)) {
curUrlPart = [curUrlPart];
}
break;
case 'url.slash':
if (curUrlPart) {
ret.urlTokenPath.unshift(curUrlPart);
curUrlPart = null;
}
break;
}
t = editor.parser.prevNonEmptyToken(tokenIter);
}
if (curUrlPart) {
ret.urlTokenPath.unshift(curUrlPart);
}
if (!ret.bodyTokenPath && !ret.urlParamsTokenPath) {
if (ret.urlTokenPath.length > 0) {
// // started on the url, first token is current token
ret.otherTokenValues = ret.urlTokenPath[0];
}
}
else {
// mark the url as completed.
ret.urlTokenPath.push(URL_PATH_END_MARKER);
}
if (t && t.type === 'method') {
ret.method = t.value;
}
return ret;
}
export function getEndpointFromPosition(editor, pos) {
const context = { ...getCurrentMethodAndTokenPaths(editor, pos, true) };
const components = getTopLevelUrlCompleteComponents(context.method);
populateContext(context.urlTokenPath, context, editor, true, components);
return context.endpoint;
}
export default function (editor) {
function isSeparatorToken(token) {
@ -64,18 +330,6 @@ export default function (editor) {
}
}
function isUrlParamsToken(token) {
switch ((token || {}).type) {
case 'url.param':
case 'url.equal':
case 'url.value':
case 'url.questionmark':
case 'url.amp':
return true;
default:
return false;
}
}
function getAutoCompleteValueFromToken(token) {
switch ((token || {}).type) {
@ -523,8 +777,9 @@ export default function (editor) {
}));
}
function addPathAutoCompleteSetToContext(context, pos) {
const ret = getCurrentMethodAndTokenPaths(pos);
const ret = getCurrentMethodAndTokenPaths(editor, pos);
context.method = ret.method;
context.token = ret.token;
context.otherTokenValues = ret.otherTokenValues;
@ -537,7 +792,7 @@ export default function (editor) {
}
function addUrlParamsAutoCompleteSetToContext(context, pos) {
const ret = getCurrentMethodAndTokenPaths(pos);
const ret = getCurrentMethodAndTokenPaths(editor, pos);
context.method = ret.method;
context.otherTokenValues = ret.otherTokenValues;
context.urlTokenPath = ret.urlTokenPath;
@ -572,7 +827,7 @@ export default function (editor) {
function addBodyAutoCompleteSetToContext(context, pos) {
const ret = getCurrentMethodAndTokenPaths(pos);
const ret = getCurrentMethodAndTokenPaths(editor, pos);
context.method = ret.method;
context.otherTokenValues = ret.otherTokenValues;
context.urlTokenPath = ret.urlTokenPath;
@ -606,247 +861,7 @@ export default function (editor) {
return context;
}
function getCurrentMethodAndTokenPaths(pos) {
const tokenIter = editor.iterForPosition(pos.row, pos.column);
const startPos = pos;
let bodyTokenPath = [];
const ret = {};
const STATES = {
looking_for_key: 0, // looking for a key but without jumping over anything but white space and colon.
looking_for_scope_start: 1, // skip everything until scope start
start: 3
};
let state = STATES.start;
// initialization problems -
let t = tokenIter.getCurrentToken();
if (t) {
if (startPos.column === 0) {
// if we are at the beginning of the line, the current token is the one after cursor, not before which
// deviates from the standard.
t = tokenIter.stepBackward();
state = STATES.looking_for_scope_start;
}
}
else {
if (startPos.column === 0) {
// empty lines do no have tokens, move one back
t = tokenIter.stepBackward();
state = STATES.start;
}
}
let walkedSomeBody = false;
// climb one scope at a time and get the scope key
for (; t && t.type.indexOf('url') === -1 && t.type !== 'method'; t = tokenIter.stepBackward()) {
if (t.type !== 'whitespace') {
walkedSomeBody = true;
} // marks we saw something
switch (t.type) {
case 'variable':
if (state === STATES.looking_for_key) {
bodyTokenPath.unshift(t.value.trim().replace(/"/g, ''));
}
state = STATES.looking_for_scope_start; // skip everything until the beginning of this scope
break;
case 'paren.lparen':
bodyTokenPath.unshift(t.value);
if (state === STATES.looking_for_scope_start) {
// found it. go look for the relevant key
state = STATES.looking_for_key;
}
break;
case 'paren.rparen':
// reset he search for key
state = STATES.looking_for_scope_start;
// and ignore this sub scope..
let parenCount = 1;
t = tokenIter.stepBackward();
while (t && parenCount > 0) {
switch (t.type) {
case 'paren.lparen':
parenCount--;
break;
case 'paren.rparen':
parenCount++;
break;
}
if (parenCount > 0) {
t = tokenIter.stepBackward();
}
}
if (!t) // oops we run out.. we don't know what's up return null;
{
return {};
}
continue;
case 'punctuation.end_triple_quote':
// reset the search for key
state = STATES.looking_for_scope_start;
for (t = tokenIter.stepBackward(); t; t = tokenIter.stepBackward()) {
if (t.type === 'punctuation.start_tripple_qoute') {
t = tokenIter.stepBackward();
break;
}
}
if (!t) // oops we run out.. we don't know what's up return null;
{
return {};
}
continue;
case 'punctuation.start_triple_quote':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
else if (state === STATES.looking_for_key) {
state = STATES.looking_for_scope_start;
}
bodyTokenPath.unshift('"""');
continue;
case 'string':
case 'constant.numeric':
case 'constant.language.boolean':
case 'text':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
else if (state === STATES.looking_for_key) {
state = STATES.looking_for_scope_start;
}
break;
case 'punctuation.comma':
if (state === STATES.start) {
state = STATES.looking_for_scope_start;
}
break;
case 'punctuation.colon':
case 'whitespace':
if (state === STATES.start) {
state = STATES.looking_for_key;
}
break; // skip white space
}
}
if (walkedSomeBody && (!bodyTokenPath || bodyTokenPath.length === 0)) {
// we had some content and still no path -> the cursor is position after a closed body -> no auto complete
return {};
}
if (tokenIter.getCurrentTokenRow() === startPos.row) {
if (t.type === 'url.part' || t.type === 'url.param' || t.type === 'url.value') {
// we are on the same line as cursor and dealing with a url. Current token is not part of the context
t = tokenIter.stepBackward();
// This will force method parsing
while (t.type === 'whitespace') {
t = tokenIter.stepBackward();
}
}
bodyTokenPath = null; // no not on a body line.
}
ret.bodyTokenPath = bodyTokenPath;
ret.urlTokenPath = [];
ret.urlParamsTokenPath = null;
ret.requestStartRow = tokenIter.getCurrentTokenRow();
let curUrlPart;
while (t && isUrlParamsToken(t)) {
switch (t.type) {
case 'url.value':
if (Array.isArray(curUrlPart)) {
curUrlPart.unshift(t.value);
}
else if (curUrlPart) {
curUrlPart = [t.value, curUrlPart];
}
else {
curUrlPart = t.value;
}
break;
case 'url.comma':
if (!curUrlPart) {
curUrlPart = [];
}
else if (!Array.isArray(curUrlPart)) {
curUrlPart = [curUrlPart];
}
break;
case 'url.param':
const v = curUrlPart;
curUrlPart = {};
curUrlPart[t.value] = v;
break;
case 'url.amp':
case 'url.questionmark':
if (!ret.urlParamsTokenPath) {
ret.urlParamsTokenPath = [];
}
ret.urlParamsTokenPath.unshift(curUrlPart || {});
curUrlPart = null;
break;
}
t = tokenIter.stepBackward();
}
curUrlPart = null;
while (t && t.type.indexOf('url') !== -1) {
switch (t.type) {
case 'url.part':
if (Array.isArray(curUrlPart)) {
curUrlPart.unshift(t.value);
}
else if (curUrlPart) {
curUrlPart = [t.value, curUrlPart];
}
else {
curUrlPart = t.value;
}
break;
case 'url.comma':
if (!curUrlPart) {
curUrlPart = [];
}
else if (!Array.isArray(curUrlPart)) {
curUrlPart = [curUrlPart];
}
break;
case 'url.slash':
ret.urlTokenPath.unshift(curUrlPart);
curUrlPart = null;
break;
}
t = editor.parser.prevNonEmptyToken(tokenIter);
}
if (curUrlPart) {
ret.urlTokenPath.unshift(curUrlPart);
}
if (!ret.bodyTokenPath && !ret.urlParamsTokenPath) {
if (ret.urlTokenPath.length > 0) {
// started on the url, first token is current token
ret.otherTokenValues = ret.urlTokenPath.splice(-1)[0];
}
}
else {
// mark the url as completed.
ret.urlTokenPath.push(URL_PATH_END_MARKER);
}
if (t && t.type === 'method') {
ret.method = t.value;
}
return ret;
}
const evaluateCurrentTokenAfterAChange = _.debounce(function evaluateCurrentTokenAfterAChange(pos) {
const session = editor.getSession();
@ -942,7 +957,7 @@ export default function (editor) {
context: context,
completer: {
insertMatch: function () {
applyTerm(term);
return applyTerm(term);
}
}
});
@ -1047,6 +1062,7 @@ export default function (editor) {
editor.__ace.completer = aceAutoCompleteInstance;
return {
_test: {
getCompletions: getCompletions,
addReplacementInfoToContext: addReplacementInfoToContext,

View file

@ -16,7 +16,6 @@
* specific language governing permissions and limitations
* under the License.
*/
import 'ui/doc_title';
import { useResizeChecker } from '../sense_editor_resize';
import $ from 'jquery';
@ -24,6 +23,8 @@ import { initializeInput } from '../input';
import { initializeOutput } from '../output';
import init from '../app';
import { SenseTopNavController } from './sense_top_nav_controller';
import { getEndpointFromPosition } from '../autocomplete';
import { DOC_LINK_VERSION } from 'ui/documentation_links';
const module = require('ui/modules').get('app/sense');
@ -42,12 +43,42 @@ module.controller('SenseController', function SenseController(Private, $scope, $
// and then initialize this app
let input;
let output;
$timeout(() => {
$timeout(async () => {
output = initializeOutput($('#output'));
input = initializeInput($('#editor'), $('#editor_actions'), $('#copy_as_curl'), output);
input = initializeInput($('#editor'), $('#editor_actions'), $('#copy_as_curl'), output, $scope.openDocumentation);
init(input, output, $location.search().load_from);
kbnUiAceKeyboardModeService.initialize($scope, $('#editor'));
const session = input.getSession();
session.getSelection().on('changeCursor', () => {
$scope.getDocumentation();
});
$scope.getDocumentation();
});
$scope.getDocumentation = () => {
input.getRequestsInRange(function (requests) {
if (!requests || requests.length === 0) {
$scope.documentation = null;
$scope.$apply();
return;
}
const position = requests[0].range.end;
position.column = position.column - 1;
const endpoint = getEndpointFromPosition(input, position);
if (endpoint && endpoint.documentation) {
$scope.documentation = endpoint.documentation.replace('master', DOC_LINK_VERSION);
$scope.$apply();
} else {
$scope.documentation = null;
$scope.$apply();
}
});
};
$scope.openDocumentation = () => {
if (!$scope.documentation) {
return;
}
window.open($scope.documentation, '_blank');
};
$scope.sendSelected = () => {
input.focus();

View file

@ -16,6 +16,8 @@
<dl class="euiDescriptionList euiDescriptionList--row euiDescriptionList--compressed">
<dt class="euiDescriptionList__title">Ctrl/Cmd + I</dt>
<dd class="euiDescriptionList__description">Auto indent current request</dd>
<dt class="euiDescriptionList__title">Ctrl/Cmd + /</dt>
<dd class="euiDescriptionList__description">Open documentation for current request</dd>
<dt class="euiDescriptionList__title">Ctrl + Space</dt>
<dd class="euiDescriptionList__description">Open Auto complete (even if not typing)</dd>
<dt class="euiDescriptionList__title">Ctrl/Cmd + Enter</dt>

View file

@ -20,7 +20,7 @@
const $ = require('jquery');
require('brace');
require('brace/ext/searchbox');
const Autocomplete = require('./autocomplete');
import Autocomplete from './autocomplete';
const SenseEditor = require('./sense_editor/editor');
const settings = require('./settings');
const utils = require('./utils');
@ -29,7 +29,7 @@ const history = require('./history');
import { uiModules } from 'ui/modules';
let input;
export function initializeInput($el, $actionsEl, $copyAsCurlEl, output) {
export function initializeInput($el, $actionsEl, $copyAsCurlEl, output, openDocumentation = () => {}) {
input = new SenseEditor($el);
// this may not exist if running from tests
@ -241,7 +241,13 @@ export function initializeInput($el, $actionsEl, $copyAsCurlEl, output) {
bindKey: { win: 'Ctrl-Enter', mac: 'Command-Enter' },
exec: sendCurrentRequestToES
});
input.commands.addCommand({
name: 'open documentation',
bindKey: { win: 'Ctrl-/', mac: 'Command-/' },
exec: () => {
openDocumentation();
}
});
/**
* Init the editor

View file

@ -50,6 +50,9 @@ const parametrizedComponentFactories = {
id: function (name, parent) {
return new IdAutocompleteComponent(name, parent);
},
task_id: function (name, parent) {
return new IdAutocompleteComponent(name, parent);
},
ids: function (name, parent) {
return new IdAutocompleteComponent(name, parent, true);
},
@ -148,7 +151,6 @@ export function setActiveApi(api) {
);
return;
}
console.log('setting active api to [' + api.name + ']');
ACTIVE_API = api;
}

View file

@ -17,6 +17,7 @@
],
"patterns": [
"_xpack"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/info-api.html"
}
}

View file

@ -5,6 +5,7 @@
],
"patterns": [
"_xpack/security/_authenticate"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-authenticate.html"
}
}

View file

@ -1,5 +1,5 @@
{
"_xpack/security/realm/{realms}/_clear_cache": {
"_xpack/security/realm/{ids}/_clear_cache": {
"methods": [
"POST"
],
@ -7,7 +7,8 @@
"usernames": ""
},
"patterns": [
"_xpack/security/realm/{realms}/_clear_cache"
]
"_xpack/security/realm/{ids}/_clear_cache"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-clear-cache.html"
}
}

View file

@ -10,6 +10,7 @@
"query": {},
"vertices": [{}],
"connections": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/graph-explore-api.html"
}
}

View file

@ -8,7 +8,8 @@
},
"patterns": [
"_xpack/license"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-license.html"
},
"DELETE _xpack/license": {
"methods": [
@ -16,7 +17,8 @@
],
"patterns": [
"_xpack/license"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/delete-license.html"
},
"PUT _xpack/license": {
"methods": [
@ -30,7 +32,8 @@
],
"data_autocomplete_rules": {
"licenses": []
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/update-license.html"
},
"_xpack/license/trial_status": {
"methods": [
@ -38,7 +41,8 @@
],
"patterns": [
"_xpack/license/trial_status"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/get-trial-status.html"
},
"_xpack/license/start_trial": {
"methods": [
@ -46,7 +50,8 @@
],
"patterns": [
"_xpack/license/start_trial"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-trial.html"
},
"_xpack/license/start_basic": {
"url_params": {
@ -57,6 +62,7 @@
],
"patterns": [
"_xpack/license/start_basic"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/start-basic.html"
}
}

View file

@ -6,7 +6,8 @@
"patterns": [
"_xpack/migration/assistance",
"_xpack/migration/assistance/{index}"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/migration-api-assistance.html"
},
"_xpack/migration/upgrade/{index}": {
"url_params": {
@ -17,7 +18,8 @@
],
"patterns": [
"_xpack/migration/upgrade/{index}"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/migration-api-upgrade.html"
},
"_xpack/migration/deprecations": {
"methods": [
@ -26,6 +28,7 @@
"patterns": [
"_xpack/migration/deprecations",
"{index}/_xpack/migration/deprecations"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/migration-api-deprecation.html"
}
}

View file

@ -1,53 +1,58 @@
{
"_xpack/ml/calendars/{calendar_id}": {
"_xpack/ml/calendars/{id}": {
"methods": [
"GET"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}",
"_xpack/ml/calendars/{id}",
"_xpack/ml/calendars/_all"
],
"data_autocomplete_rules": {
"from": 0,
"size": 100
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-calendar.html"
},
"PUT _xpack/ml/calendars/{calendar_id}": {
"PUT _xpack/ml/calendars/{id}": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}"
"_xpack/ml/calendars/{id}"
],
"data_autocomplete_rules": {
"description": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-put-calendar.html"
},
"DELETE _xpack/ml/calendars/{calendar_id}": {
"DELETE _xpack/ml/calendars/{id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}"
]
"_xpack/ml/calendars/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-calendar.html"
},
"_xpack/ml/calendars/{calendar_id}/jobs/{job_id}": {
"_xpack/ml/calendars/{id}/jobs/{id}": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}/jobs/{job_id}"
]
"_xpack/ml/calendars/{id}/jobs/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-put-calendar-job.html"
},
"DELETE _xpack/ml/calendars/{calendar_id}/jobs/{job_id}": {
"DELETE _xpack/ml/calendars/{id}/jobs/{id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}/jobs/{job_id}"
]
"_xpack/ml/calendars/{id}/jobs/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-calendar-job.html"
},
"_xpack/ml/calendars/{calendar_id}/events": {
"_xpack/ml/calendars/{id}/events": {
"methods": [
"GET"
],
@ -56,27 +61,30 @@
"size": 100
},
"patterns": [
"_xpack/ml/calendars/{calendar_id}/events",
"_xpack/ml/calendars/{id}/events",
"_xpack/ml/calendars/_all/events"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-calendar-event.html"
},
"POST _xpack/ml/calendars/{calendar_id}/events": {
"POST _xpack/ml/calendars/{id}/events": {
"methods": [
"POST"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}/events"
"_xpack/ml/calendars/{id}/events"
],
"data_autocomplete_rules": {
"events": [{}]
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-post-calendar-event.html"
},
"_xpack/ml/calendars/{calendar_id}/events/{event_id}": {
"_xpack/ml/calendars/{id}/events/{event_id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/ml/calendars/{calendar_id}/events/{event_id}"
]
"_xpack/ml/calendars/{id}/events/{event_id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-calendar-event.html"
}
}

View file

@ -1,20 +1,21 @@
{
"_xpack/ml/datafeeds/{datafeed_id}": {
"_xpack/ml/datafeeds/{id}": {
"methods": [
"GET"
],
"patterns": [
"_xpack/ml/datafeeds/",
"_xpack/ml/datafeeds/{datafeed_id}",
"_xpack/ml/datafeeds/{id}",
"_xpack/ml/datafeeds/_all"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-datafeed.html"
},
"PUT _xpack/ml/datafeeds/{datafeed_id}": {
"PUT _xpack/ml/datafeeds/{id}": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}"
"_xpack/ml/datafeeds/{id}"
],
"data_autocomplete_rules": {
"aggregations": {},
@ -27,56 +28,62 @@
"script_field": {},
"scroll_size": 1000,
"types": []
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-put-datafeed.html"
},
"DELETE _xpack/ml/datafeeds/{datafeed_id}": {
"DELETE _xpack/ml/datafeeds/{id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}"
]
"_xpack/ml/datafeeds/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-datafeed.html"
},
"_xpack/ml/datafeeds/{datafeed_id}/_start": {
"_xpack/ml/datafeeds/{id}/_start": {
"methods": [
"POST"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}/_start"
]
"_xpack/ml/datafeeds/{id}/_start"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-start-datafeed.html"
},
"_xpack/ml/datafeeds/{datafeed_id}/_stop": {
"_xpack/ml/datafeeds/{id}/_stop": {
"methods": [
"POST"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}/_stop"
]
"_xpack/ml/datafeeds/{id}/_stop"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-stop-datafeed.html"
},
"_xpack/ml/datafeeds/{datafeed_id}/stats": {
"_xpack/ml/datafeeds/{id}/stats": {
"methods": [
"GET"
],
"patterns": [
"_xpack/ml/datafeeds/stats",
"_xpack/ml/datafeeds/{datafeed_id}/stats",
"_xpack/ml/datafeeds/{id}/stats",
"_xpack/ml/datafeeds/_all/stats"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-datafeed-stats.html"
},
"_xpack/ml/datafeeds/{datafeed_id}/_preview": {
"_xpack/ml/datafeeds/{id}/_preview": {
"methods": [
"GET"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}_preview"
]
"_xpack/ml/datafeeds/{id}_preview"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-preview-datafeed.html"
},
"_xpack/ml/datafeeds/{datafeed_id}/_update": {
"_xpack/ml/datafeeds/{id}/_update": {
"methods": [
"POST"
],
"patterns": [
"_xpack/ml/datafeeds/{datafeed_id}/_update"
"_xpack/ml/datafeeds/{id}/_update"
],
"data_autocomplete_rules": {
"aggregations": {},
@ -89,6 +96,7 @@
"script_field": {},
"scroll_size": 1000,
"types": []
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-update-datafeed.html"
}
}

View file

@ -1,7 +1,7 @@
{
"PUT _xpack/ml/anomaly_detectors/{job_id}": {
"PUT _xpack/ml/anomaly_detectors/{id}": {
"methods": ["PUT"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}"],
"patterns": ["_xpack/ml/anomaly_detectors/{id}"],
"data_autocomplete_rules": {
"analysis_config": {},
"background_persist_interval": "",
@ -14,53 +14,61 @@
"renormalization_window_days": 1,
"results_index_name": "",
"results_retention_days": 1
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-put-job.html"
},
"DELETE _xpack/ml/anomaly_detectors/{job_id}": {
"DELETE _xpack/ml/anomaly_detectors/{id}": {
"methods": ["DELETE"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_open": {
"_xpack/ml/anomaly_detectors/{id}/_open": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_open"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_open"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-open-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_close": {
"_xpack/ml/anomaly_detectors/{id}/_close": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_close"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_close"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-close-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}": {
"_xpack/ml/anomaly_detectors/{id}": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/",
"_xpack/ml/anomaly_detectors/{job_id}",
"_xpack/ml/anomaly_detectors/{id}",
"_xpack/ml/anomaly_detectors/_all"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/stats": {
"_xpack/ml/anomaly_detectors/{id}/stats": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/stats",
"_xpack/ml/anomaly_detectors/{job_id}/stats",
"_xpack/ml/anomaly_detectors/{id}/stats",
"_xpack/ml/anomaly_detectors/_all/stats"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-job-stats.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_flush": {
"_xpack/ml/anomaly_detectors/{id}/_flush": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_flush"],
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_flush"],
"url_params": {
"advance_time": "",
"calc_interim": ["true", "false"],
"end": "",
"start": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-flush-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_data": {
"_xpack/ml/anomaly_detectors/{id}/_data": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_data"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_data"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-post-data.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_update": {
"_xpack/ml/anomaly_detectors/{id}/_update": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_update"],
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_update"],
"data_autocomplete_rules": {
"analysis_limits": {},
"background_persist_interval": "",
@ -72,10 +80,12 @@
"renormalization_window_days": 1,
"results_index_name": "",
"results_retention_days": 1
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-update-job.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/_forecast": {
"_xpack/ml/anomaly_detectors/{id}/_forecast": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/_forecast"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}/_forecast"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-forecast.html"
}
}

View file

@ -1,13 +1,14 @@
{
"DELETE _xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}": {
"DELETE _xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}": {
"methods": ["DELETE"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}"]
"patterns": ["_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-delete-snapshot.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/model_snapshots": {
"_xpack/ml/anomaly_detectors/{id}/model_snapshots": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/model_snapshots",
"_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}"
"_xpack/ml/anomaly_detectors/{id}/model_snapshots",
"_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}"
],
"data_autocomplete_rules": {
"desc": [true, false],
@ -16,21 +17,24 @@
"size": 1000,
"sort": "",
"start": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-snapshot.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_revert": {
"_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}/_revert": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_revert"],
"patterns": ["_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}/_revert"],
"data_autocomplete_rules": {
"delete_intervening_results": [true, false]
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-revert-snapshot.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_update": {
"_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}/_update": {
"methods": ["POST"],
"patterns": ["_xpack/ml/anomaly_detectors/{job_id}/model_snapshots/{snapshot_id}/_update"],
"patterns": ["_xpack/ml/anomaly_detectors/{id}/model_snapshots/{id}/_update"],
"data_autocomplete_rules": {
"description": "",
"retain": [true, false]
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-update-snapshot.html"
}
}

View file

@ -1,9 +1,9 @@
{
"_xpack/ml/anomaly_detectors/{job_id}/results/buckets": {
"_xpack/ml/anomaly_detectors/{id}/results/buckets": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/results/buckets",
"_xpack/ml/anomaly_detectors/{job_id}/results/buckets/{timestamp}"
"_xpack/ml/anomaly_detectors/{id}/results/buckets",
"_xpack/ml/anomaly_detectors/{id}/results/buckets/{timestamp}"
],
"data_autocomplete_rules": {
"desc": [true, false],
@ -17,12 +17,13 @@
},
"sort": "",
"start": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-bucket.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/results/overall_buckets": {
"_xpack/ml/anomaly_detectors/{id}/results/overall_buckets": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/results/overall_buckets",
"_xpack/ml/anomaly_detectors/{id}/results/overall_buckets",
"_xpack/ml/anomaly_detectors/_all/results/overall_buckets"
],
"data_autocomplete_rules": {
@ -33,25 +34,27 @@
"overall_score": 0,
"start": "",
"top_n": 0
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-overall-buckets.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/results/categories": {
"_xpack/ml/anomaly_detectors/{id}/results/categories": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/results/categories",
"_xpack/ml/anomaly_detectors/{job_id}/results/categories/{category_id}"
"_xpack/ml/anomaly_detectors/{id}/results/categories",
"_xpack/ml/anomaly_detectors/{id}/results/categories/{id}"
],
"data_autocomplete_rules": {
"page": {
"from": 0,
"size": 100
}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-category.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/results/influencers": {
"_xpack/ml/anomaly_detectors/{id}/results/influencers": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/results/influencers"
"_xpack/ml/anomaly_detectors/{id}/results/influencers"
],
"data_autocomplete_rules": {
"desc": [true, false],
@ -64,12 +67,13 @@
},
"sort": "",
"start": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-influencer.html"
},
"_xpack/ml/anomaly_detectors/{job_id}/results/records": {
"_xpack/ml/anomaly_detectors/{id}/results/records": {
"methods": ["GET"],
"patterns": [
"_xpack/ml/anomaly_detectors/{job_id}/results/records"
"_xpack/ml/anomaly_detectors/{id}/results/records"
],
"data_autocomplete_rules": {
"desc": [true, false],
@ -82,6 +86,7 @@
},
"sort": "",
"start": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/ml-get-record.html"
}
}

View file

@ -7,13 +7,15 @@
"password": "",
"scope": "",
"username": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-tokens.html"
},
"DELETE _xpack/security/oauth2/token": {
"methods": ["DELETE"],
"patterns": ["_xpack/security/oauth2/token"],
"data_autocomplete_rules": {
"token": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-tokens.html"
}
}

View file

@ -1,11 +1,12 @@
{
"_xpack/security/role": {
"methods": ["GET"],
"patterns": ["_xpack/security/role", "_xpack/security/role/{name}"]
"patterns": ["_xpack/security/role", "_xpack/security/role/{id}"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-roles.html"
},
"_xpack/security/role/{name}": {
"_xpack/security/role/{id}": {
"methods": ["PUT", "POST"],
"patterns": ["_xpack/security/role/{name}"],
"patterns": ["_xpack/security/role/{id}"],
"data_autocomplete_rules": {
"cluster": [],
"indices": [
@ -18,14 +19,16 @@
],
"run_as": [],
"metadata": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-roles.html"
},
"_xpack/security/role/{name}/_clear_cache": {
"_xpack/security/role/{id}/_clear_cache": {
"methods": [
"POST"
],
"patterns": [
"_xpack/security/role/{name}/_clear_cache"
]
"_xpack/security/role/{id}/_clear_cache"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-roles.html"
}
}

View file

@ -3,21 +3,24 @@
"methods": ["GET"],
"patterns": [
"_xpack/security/role_mapping",
"_xpack/security/role_mapping/{name}"
]
"_xpack/security/role_mapping/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-role-mapping.html"
},
"_xpack/security/role_mapping/{name}": {
"_xpack/security/role_mapping/{id}": {
"methods": ["PUT", "POST"],
"patterns": ["_xpack/security/role_mapping/{name}"],
"patterns": ["_xpack/security/role_mapping/{id}"],
"data_autocomplete_rules": {
"enabled": true,
"metadata": {},
"roles": [],
"rules": {}
},
"DELETE _xpack/security/role_mapping/{name}": {
"methods": ["DELETE"],
"patterns": ["_xpack/security/role_mapping/{name}"]
}
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-role-mapping.html"
},
"DELETE _xpack/security/role_mapping/{id}": {
"methods": ["DELETE"],
"patterns": ["_xpack/security/role_mapping/{id}"],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-role-mapping.html"
}
}

View file

@ -1,18 +1,19 @@
{
"_xpack/rollup/job/{job_id}": {
"_xpack/rollup/job/{id}": {
"patterns": [
"_xpack/rollup/job/{job_id}"
"_xpack/rollup/job/{id}"
],
"methods": [
"GET"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-job.html"
},
"PUT _xpack/rollup/job/{job_id}": {
"PUT _xpack/rollup/job/{id}": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/rollup/job/{job_id}"
"_xpack/rollup/job/{id}"
],
"data_autocomplete_rules": {
"index_pattern": "",
@ -21,11 +22,12 @@
"page_size": 100,
"groups": {},
"metrics": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-job-config.html"
},
"DELETE _xpack/rollup/job/{job_id}": {
"DELETE _xpack/rollup/job/{id}": {
"patterns": [
"_xpack/rollup/job/{job_id}"
"_xpack/rollup/job/{id}"
],
"methods": [
"DELETE"
@ -37,23 +39,26 @@
"page_size": 100,
"groups": {},
"metrics": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-delete-job.html"
},
"_xpack/rollup/job/{job_id}/_start": {
"_xpack/rollup/job/{id}/_start": {
"patterns": [
"_xpack/rollup/job/{job_id}/_start"
"_xpack/rollup/job/{id}/_start"
],
"methods": [
"POST"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-start-job.html"
},
"_xpack/rollup/job/{job_id}/_stop": {
"_xpack/rollup/job/{id}/_stop": {
"patterns": [
"_xpack/rollup/job/{job_id}/_stop"
"_xpack/rollup/job/{id}/_stop"
],
"methods": [
"POST"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-stop-job.html"
},
"_xpack/rollup/data/{index}": {
"patterns": [
@ -61,7 +66,8 @@
],
"methods": [
"GET"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-get-rollup-caps.html"
},
"{index}/_rollup_search": {
"patterns": [
@ -73,6 +79,7 @@
"data_autocomplete_rules": {
"query": {},
"aggregations": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/rollup-search.html"
}
}

View file

@ -5,6 +5,7 @@
],
"patterns": [
"_xpack/ssl/certificates"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-ssl.html"
}
}

View file

@ -1,53 +1,58 @@
{
"POST _xpack/security/user/{name}": {
"POST _xpack/security/user/{id}": {
"methods": [
"PUT",
"POST"
],
"patterns": [
"_xpack/security/user/{name}"
"_xpack/security/user/{id}"
],
"data_autocomplete_rules": {
"metadata": {},
"password": "",
"fullname": "",
"roles": []
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user/{name}/_enable": {
"_xpack/security/user/{id}/_enable": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/security/user/{name}/_enable"
]
"_xpack/security/user/{id}/_enable"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user/{name}/_disable": {
"_xpack/security/user/{id}/_disable": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/security/user/{name}/_disable"
]
"_xpack/security/user/{id}/_disable"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user/{name}/_password": {
"_xpack/security/user/{id}/_password": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/security/user/{name}/_password"
"_xpack/security/user/{id}/_password"
],
"data_autocomplete_rules": {
"password": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"DELETE _xpack/security/user/{name}": {
"DELETE _xpack/security/user/{id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/security/user/{name}"
]
"_xpack/security/user/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user": {
"methods": [
@ -55,8 +60,9 @@
],
"patterns": [
"_xpack/security/user",
"_xpack/security/user/{name}"
]
"_xpack/security/user/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user/_password": {
"methods": [
@ -64,11 +70,12 @@
],
"patterns": [
"_xpack/security/user/_password",
"_xpack/security/user/{username}/_password"
"_xpack/security/user/{id}/_password"
],
"data_autocomplete_rules": {
"password": ""
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
},
"_xpack/security/user/_has_privileges": {
"methods": [
@ -76,6 +83,7 @@
],
"patterns": [
"_xpack/security/user/_has_privileges"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/security-api-users.html"
}
}

View file

@ -1,21 +1,23 @@
{
"_xpack/watcher/watch/{watch_id}": {
"_xpack/watcher/watch/{id}": {
"methods": [
"GET"
],
"patterns": [
"_xpack/watcher/watch/{watch_id}"
]
"_xpack/watcher/watch/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-get-watch.html"
},
"DELETE _xpack/watcher/watch/{watch_id}": {
"DELETE _xpack/watcher/watch/{id}": {
"methods": [
"DELETE"
],
"patterns": [
"_xpack/watcher/watch/{watch_id}"
]
"_xpack/watcher/watch/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-delete-watch.html"
},
"PUT _xpack/watcher/watch/{watch_id}": {
"PUT _xpack/watcher/watch/{id}": {
"methods": [
"PUT"
],
@ -23,7 +25,7 @@
"active": ["true", "false"]
},
"patterns": [
"_xpack/watcher/watch/{watch_id}"
"_xpack/watcher/watch/{id}"
],
"data_autocomplete_rules": {
"metadata": {},
@ -32,7 +34,8 @@
"condition": {},
"throttle_period": 5,
"actions": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-put-watch.html"
},
"_xpack/watcher/watch/_execute": {
"methods": [
@ -43,7 +46,7 @@
},
"patterns": [
"_xpack/watcher/watch/_execute",
"_xpack/watcher/watch/{watch_id}/_execute"
"_xpack/watcher/watch/{id}/_execute"
],
"data_autocomplete_rules": {
"trigger_data": {},
@ -52,32 +55,36 @@
"watch": {},
"alternative_input": {},
"action_modes": {}
}
},
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-execute-watch.html"
},
"_xpack/watcher/watch/{watch_id}/_ack": {
"_xpack/watcher/watch/{id}/_ack": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/watcher/watch/{watch_id}/_ack",
"_xpack/watcher/watch/{watch_id}/_ack/{action_id}"
]
"_xpack/watcher/watch/{id}/_ack",
"_xpack/watcher/watch/{id}/_ack/{id}"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-ack-watch.html"
},
"_xpack/watcher/watch/{watch_id}/_activate": {
"_xpack/watcher/watch/{id}/_activate": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/watcher/watch/{watch_id}/_activate"
]
"_xpack/watcher/watch/{id}/_activate"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-activate-watch.html"
},
"_xpack/watcher/watch/{watch_id}/_deactivate": {
"_xpack/watcher/watch/{id}/_deactivate": {
"methods": [
"PUT"
],
"patterns": [
"_xpack/watcher/watch/{watch_id}/_deactivate"
]
"_xpack/watcher/watch/{id}/_deactivate"
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-deactivate-watch.html"
},
"_xpack/watcher/stats": {
"url_params": {
@ -88,7 +95,8 @@
],
"patterns": [
"_xpack/watcher/stats"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-stats.html"
},
"_xpack/watcher/_start": {
"methods": [
@ -96,7 +104,8 @@
],
"patterns": [
"_xpack/watcher/_start"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-start.html"
},
"_xpack/watcher/_stop": {
"methods": [
@ -104,7 +113,8 @@
],
"patterns": [
"_xpack/watcher/_stop"
]
],
"documentation": "https://www.elastic.co/guide/en/elasticsearch/reference/master/watcher-api-stop.html"
},
"_xpack/watcher/_restart": {
"methods": [