[[create-stored-script-api]] === Create or update stored script API ++++ Create or update stored script ++++ Creates or updates a <> or <>. [source,console] ---- PUT _scripts/my-stored-script { "script": { "lang": "painless", "source": """ TimestampHour date = doc['@timestamp'].value; return date.getHour() """ } } ---- [[create-stored-script-api-request]] ==== {api-request-title} `PUT _scripts/` `POST _scripts/` `PUT _scripts//` `POST _scripts//` [[create-stored-script-api-prereqs]] ==== {api-prereq-title} * If the {es} {security-features} are enabled, you must have the `manage` <> to use this API. [[create-stored-script-api-path-params]] ==== {api-path-parms-title} ``:: (Required, string) Name or identifier for the stored script or search template. Must be unique within the cluster. ``:: (Optional, string) Context in which the script or search template should run. To prevent errors, the API immediately compiles the script or template in this context. [[create-stored-script-api-query-params]] ==== {api-query-parms-title} `context`:: (Optional, string) Context in which the script or search template should run. To prevent errors, the API immediately compiles the script or template in this context. + If you specify both this and the `` request path parameter, the API uses the request path parameter. include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=timeoutparms] [role="child_attributes"] [[create-stored-script-api-request-body]] ==== {api-request-body-title} `script`:: (Required, object) Contains the script or search template, its parameters, and its language. + .Properties of `script` [%collapsible%open] ==== `lang`:: (Required, string) <>. For search templates, use `mustache`. `source`:: (Required, string or object) Script or search template. `params`:: (Optional, object) Parameters for the script or search template. ==== [[create-stored-script-api-example]] ==== {api-examples-title} The following request stores a search template. Search templates must use a `lang` of `mustache`. [source,console] ---- PUT _scripts/my-search-template { "script": { "lang": "mustache", "source": { "from": "{{from}}{{^from}}0{{/from}}", "size": "{{size}}{{^size}}10{{/size}}", "query": { "match": { "content": "{{query_string}}" } } } } } ----