## Methods

### init

##### splunkjs.Service.Index.init

Constructor for `splunkjs.Service.Index`.

#### Syntax

init: function(service, name, namespace)

#### Parameters

Name | Type | Description
--- | --- | ---
service | splunkjs.Service | A `Service` instance.
name | String | The name of the index.
namespace | Object | Namespace information: - `owner` (string): The Splunk username, such as "admin". A value of "nobody" means no specific user. The "-" wildcard means all users. - `app` (string): The app context for this resource (such as "search"). The "-" wildcard means all apps. - `sharing` (string): A mode that indicates how the resource is shared. The sharing mode can be "user", "app", "global", or "system".

#### Return

splunkjs.Service.Index.

A new `splunkjs.Service.Index` instance.

#### Source (lib/service.js:2163)

    init: function(service, name, namespace) {
        this.name = name;
        this._super(service, this.path(), namespace);

        this.submitEvent = utils.bind(this, this.submitEvent);
    },

### path

##### splunkjs.Service.Index.path

Retrieves the REST endpoint path for this resource (with no namespace).

#### Syntax

path: function()

#### Source (lib/service.js:2145)

    path: function() {
        return Paths.indexes + "/" + encodeURIComponent(this.name);
    },

### submitEvent

##### splunkjs.Service.Index.submitEvent

##### Endpoint: receivers/simple?index={name}

Submits an event to this index.

#### Syntax

submitEvent: function(event, params, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
event | String | The text for this event.
params | Object | A dictionary of parameters for indexing: - `host` (string): The value to populate in the host field for events from this data input. - `host_regex` (string): A regular expression used to extract the host value from each event. - `source` (string): The source value to fill in the metadata for this input's events. - `sourcetype` (string): The sourcetype to apply to events from this input.
callback | Function | A function to call when the event is submitted: `(err, result, index)`.

#### Examples

     var index = service.indexes().item("_internal");
     index.submitEvent("A new event", {sourcetype: "mysourcetype"}, function(err, result, index) {
         console.log("Submitted event: ", result);
     });

#### Source (lib/service.js:2191)

    submitEvent: function(event, params, callback) {
            if (!callback && utils.isFunction(params)) {
                callback = params;
                params = {};
            }

            callback = callback || function() {};
            params = params || {};

            // Add the index name
            params["index"] = this.name;

            var that = this;
            return this.service.log(event, params, function(err, result) {
                callback(err, result, that);
            });
        },

        remove: function(callback) {
            if (this.service.versionCompare("5.0") < 0) {
                throw new Error("Indexes cannot be removed in Splunk 4.x");
            }
            else {
                return this._super(callback);
            }
        }
    });

## Inherited Methods

### _load

##### splunkjs.Service.Entity._load

Loads the entity and stores the properties.

#### Syntax

_load: function(properties)

#### Parameters

Name | Type | Description
--- | --- | ---
properties | Object | The properties for this entity.

#### Source (lib/service.js:882)

    _load: function(properties) {
        properties = utils.isArray(properties) ? properties[0] : properties;

        // Initialize the properties to
        // empty values
        properties = properties || {
            content: {},
            fields: {},
            acl: {},
            links: {}
        };

        this._super(properties);

        // Take out the entity-specific content
        this._properties = properties.content   || {};
        this._fields     = properties.fields    || this._fields || {};
        this._acl        = properties.acl       || {};
        this._links      = properties.links     || {};
        this._author     = properties.author    || null;
        this._updated    = properties.updated   || null;
        this._published  = properties.published || null;
    },

### acl

##### splunkjs.Service.Entity.acl

Retrieves the access control list (ACL) information for this entity, which contains the permissions for accessing the entity.

#### Syntax

acl: function()

#### Return

Object.

The ACL.

#### Source (lib/service.js:926)

    acl: function() {
        return this._acl;
    },

### author

##### splunkjs.Service.Entity.author

Retrieves the author information for this entity.

#### Syntax

author: function()

#### Return

String.

The author.

#### Source (lib/service.js:949)

    author: function() {
        return this._author;
    },

### del

##### splunkjs.Service.Endpoint.del

Performs a relative DELETE request on an endpoint's path, combined with the parameters and a relative path if specified.

#### Syntax

del: function(relpath, params, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
relpath | String | A relative path to append to the endpoint path.
params | Object | A dictionary of entity-specific parameters to add to the query string.
callback | Function | A function to call when the request is complete: `(err, response)`.

#### Examples

     // Will make a request to {service.prefix}/search/jobs/123456
     var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
     endpoint.delete("", {}, function() { console.log("DELETED"))});

#### Source (lib/service.js:695)

    del: function(relpath, params, callback) {
            var url = this.qualifiedPath;
            // If we have a relative path, we will append it with a preceding
            // slash.
            if (relpath) {
                url = url + "/" + relpath;
            }
            return this.service.del(
                url,
                params,
                callback
            );
        }
    });

### disable

##### splunkjs.Service.Entity.disable

Disables the entity on the server.

#### Syntax

disable: function(callback)

#### Parameters

Name | Type | Description
--- | --- | ---
callback | Function | A function to call when the object is disabled: `(err, entity)`.

#### Source (lib/service.js:1076)

    disable: function(callback) {
        callback = callback || function() {};

        var that = this;
        this.post("disable", {}, function(err, response) {
            if (err) {
                callback(err);
            }
            else {
                callback(null, that);
            }
        });
    },

### enable

##### splunkjs.Service.Entity.enable

Enables the entity on the server.

#### Syntax

enable: function(callback)

#### Parameters

Name | Type | Description
--- | --- | ---
callback | Function | A function to call when the object is enabled: `(err, entity)`.

#### Source (lib/service.js:1098)

    enable: function(callback) {
        callback = callback || function() {};

        var that = this;
        this.post("enable", {}, function(err, response) {
            if (err) {
                callback(err);
            }
            else {
                callback(null, that);
            }
        });
    },

### fetch

##### splunkjs.Service.Entity.fetch

Refreshes the entity by fetching the object from the server and loading it.

#### Syntax

fetch: function(options, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
options | Object | An optional dictionary of collection filtering and pagination options: - `count` (integer): The maximum number of items to return. - `offset` (integer): The offset of the first item to return. - `search` (string): The search query to filter responses. - `sort_dir` (string): The direction to sort returned items: “asc” or “desc”. - `sort_key` (string): The field to use for sorting (optional). - `sort_mode` (string): The collating sequence for sorting returned items: “auto”, “alpha”, “alpha_case”, or “num”.
callback | Function | A function to call when the object is retrieved: `(err, resource)`.

#### Source (lib/service.js:990)

    fetch: function(options, callback) {
        if (!callback && utils.isFunction(options)) {
            callback = options;
            options = {};
        }
        callback = callback || function() {};

        options = options || {};

        var that = this;
        return this.get("", options, function(err, response) {
            if (err) {
                callback(err);
            }
            else {
                that._load(response.data ? response.data.entry : null);
                callback(null, that);
            }
        });
    },

### fetchOnUpdate

##### splunkjs.Service.Entity.fetchOnUpdate

A static property that indicates whether to call `fetch` after an update to get the updated entity. By default, the entity is not fetched because the endpoint returns (echoes) the updated entity.

#### Source (lib/service.js:832)

    fetchOnUpdate: false,

### fields

##### splunkjs.Service.Entity.fields

Retrieves the fields information for this entity, indicating which fields are wildcards, required, and optional.

#### Syntax

fields: function()

#### Return

Object.

The fields information.

#### Source (lib/service.js:914)

    fields: function() {
        return this._fields;
    },

### get

##### splunkjs.Service.Endpoint.get

Performs a relative GET request on an endpoint's path, combined with the parameters and a relative path if specified.

#### Syntax

get: function(relpath, params, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
relpath | String | A relative path to append to the endpoint path.
params | Object | A dictionary of entity-specific parameters to add to the query string.
callback | Function | A function to call when the request is complete: `(err, response)`.

#### Examples

     // Will make a request to {service.prefix}/search/jobs/123456/results?offset=1
     var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
     endpoint.get("results", {offset: 1}, function() { console.log("DONE"))});

#### Source (lib/service.js:631)

    get: function(relpath, params, callback) {
        var url = this.qualifiedPath;
        // If we have a relative path, we will append it with a preceding
        // slash.
        if (relpath) {
            url = url + "/" + relpath;
        }
        return this.service.get(
            url,
            params,
            callback
        );
    },

### links

##### splunkjs.Service.Entity.links

Retrieves the links information for this entity, which is the URI of the entity relative to the management port of a Splunk instance.

#### Syntax

links: function()

#### Return

Object.

The links information.

#### Source (lib/service.js:938)

    links: function() {
        return this._links;
    },

### post

##### splunkjs.Service.Endpoint.post

Performs a relative POST request on an endpoint's path, combined with the parameters and a relative path if specified.

#### Syntax

post: function(relpath, params, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
relpath | String | A relative path to append to the endpoint path.
params | Object | A dictionary of entity-specific parameters to add to the body.
callback | Function | A function to call when the request is complete: `(err, response)`.

#### Examples

     // Will make a request to {service.prefix}/search/jobs/123456/control
     var endpoint = new splunkjs.Service.Endpoint(service, "search/jobs/12345");
     endpoint.post("control", {action: "cancel"}, function() { console.log("CANCELLED"))});

#### Source (lib/service.js:663)

    post: function(relpath, params, callback) {
        var url = this.qualifiedPath;
        // If we have a relative path, we will append it with a preceding
        // slash.
        if (relpath) {
            url = url + "/" + relpath;
        }
        return this.service.post(
            url,
            params,
            callback
        );
    },

### properties

##### splunkjs.Service.Resource.properties

Retrieves the current properties for this resource.

#### Syntax

properties: function()

#### Return

Object.

The properties.

#### Source (lib/service.js:797)

    properties: function() {
        return this._properties;
    },

### published

##### splunkjs.Service.Entity.published

Retrieves the published time for this entity.

#### Syntax

published: function()

#### Return

String.

The published time.

#### Source (lib/service.js:971)

    published: function() {
        return this._published;
    },

### reload

##### splunkjs.Service.Entity.reload

Reloads the entity on the server.

#### Syntax

reload: function(callback)

#### Parameters

Name | Type | Description
--- | --- | ---
callback | Function | A function to call when the object is reloaded: `(err, entity)`.

#### Source (lib/service.js:1120)

    reload: function(callback) {
            callback = callback || function() {};

            var that = this;
            this.post("_reload", {}, function(err, response) {
                if (err) {
                    callback(err);
                }
                else {
                    callback(null, that);
                }
            });
        }
    });

### remove

##### splunkjs.Service.Entity.remove

Deletes the entity from the server.

#### Syntax

remove: function(callback)

#### Parameters

Name | Type | Description
--- | --- | ---
callback | Function | A function to call when the object is deleted: `(err)`.

#### Source (lib/service.js:1019)

    remove: function(callback) {
        callback = callback || function() {};

        var that = this;
        return this.del("", {}, function(err) {
            callback(err);
        });
    },

### state

##### splunkjs.Service.Resource.state

Retrieves the current full state (properties and metadata) of this resource.

#### Syntax

state: function()

#### Return

Object.

The current full state of this resource.

#### Source (lib/service.js:808)

    state: function() {
            return this._state;
        }
    });

### update

##### splunkjs.Service.Entity.update

Updates the entity on the server.

#### Syntax

update: function(props, callback)

#### Parameters

Name | Type | Description
--- | --- | ---
props | Object | The properties to update the object with.
callback | Function | A function to call when the object is updated: `(err, entity)`.

#### Source (lib/service.js:1037)

    update: function(props, callback) {
        callback = callback || function() {};

        if (props.hasOwnProperty("name")) {
            throw new Error("Cannot set 'name' field in 'update'");
        }

        var that = this;
        var req = this.post("", props, function(err, response) {
            if (!err && !that.fetchOnUpdate) {
                that._load(response.data.entry);
                callback(err, that);
            }
            else if (!err && that.fetchOnUpdate) {
                that.fetch(function() {
                    if (req.wasAborted) {
                        return; // aborted, so ignore
                    }
                    else {
                        callback.apply(null, arguments);
                    }
                });
            }
            else {
                callback(err, that);
            }
        });

        return req;
    },

### updated

##### splunkjs.Service.Entity.updated

Retrieves the updated time for this entity.

#### Syntax

updated: function()

#### Return

String.

The updated time.

#### Source (lib/service.js:960)

    updated: function() {
        return this._updated;
    },