# REST - Parameters

Parameters are used throughout the application to store values. The userId and companyId parameters are used for identifying the current user. Non-hidden parameters can be accessed in reports.

> Note. All requests require Session Id URL parameter and basic request headers. In the following examples, headers are omitted for clarity.

# Parameter JSON

Parameters are represented as JSON objects with the following properties:

Name | Type | Writeable | Description
Id | string | required-create | The unique Id of this parameter
DataType | enum | yes ("String") | Parameter Type
Value | string | yes | The value of this parameter
PromptText | string | yes | If set, text to prompt the user for a value
IsHidden | boolean | yes (true) | Whether the parameter is accessible in reports

### Example

    {
      "Id":         "MyParameter",
      "DataType":   "String",
      "Value":      "",
      "PromptText": "Input a value",
      "IsHidden":   true
    }

# List Parameters

    GET /rest/parameters

List all the parameters in the current configuration. Output is an array of objects, each representing an individual parameter.

Name | Type | Description
Id | string | The unique Id of this parameter

### Using curl

    curl http://{webservice}/rest/parameters?sid={sid} -X GET

### Example response

    Status: 200 OK

    [
      {
        "Id": "MyParameter"
      },
      {
        "Id": "HelloWorld"
      }
    ]

# Show Parameter

    GET /rest/parameters/{Id}

Show the properties of the parameter specified by its Id.

### Using curl

    curl http://{webservice}/rest/parameters/{Id}?sid={sid} -X GET

### Example response

    Status: 200 OK

    {
      "Id":         "MyParameter",
      "DataType":   "String",
      "Value":      "",
      "PromptText": "Input a value",
      "IsHidden":   true
    }

# Create Parameter

    POST /rest/parameters

Parameters are designed to be set in the API. If they do not already exist in config, create them programmatically.

### Using curl

    curl http://{webservice}/rest/parameters?sid={sid} -X POST ^
    	-d "{'Id':'Hello','DataType':'String','Value':'World','IsHidden':false}"

### Example response

    Status: 201 Created
    Location: /{webservice}/rest/Parameters/Hello

    {
      "Id":         "Hello",
      "DataType":   "String",
      "Value":      "World",
      "PromptText": "",
      "IsHidden":   false
    }

# Edit Parameter

    PATCH /rest/parameters/{Id}

Only supply the properties to be edited.

### Using curl

    curl http://{webservice}/rest/parameters/{Id}?sid={sid} -X PATCH ^
    	-d "{'IsHidden':true}"

### Example response

    Status: 204 No Content

# Delete Parameter

    DELETE /rest/parameters/{Id}

### Using curl

    curl http://{webservice}/rest/parameters/{Id}?sid={sid} -X DELETE

### Example response

    Status: 204 No Content