# sim_access

Control access to the sim.

```csharp
smartbotsAPI("sim_access", [
  "avatar", UUID, 
  "operation", OPERATION,
  "all_estates", TRUE
]); // See "LSL Helper Functions" page for this function
```

## Variables

The following table shows input values (you send them with the API call) and returned output values.

### Input basic parameters

| Variable | Required | Description |
|----------|----------|-------------|
| action   | yes      | = sim_access |
| apikey   | yes      | Your personal [developer's API key](/doc/developers-api-key-tw8bQj4LSJ). |
| botname  | yes      | Your bot's SL login. |
| secret   | yes      | [Bot access code](https://www.mysmartbots.com/docs/Bot_access_code) of your bot. |
| dataType | optional | Set to "json" to get JSON reply instead of URL-encoded string |
| custom   | optional | The custom data (string) to be passed back to caller script. This value will be returned back to the caller in HTTP response. |

### Input

| Variable | Required | Description |
|----------|----------|-------------|
| avatar   | yes      | The resident to manage access for |
| operation | yes      | The operation to perform. One of the following:<br><br>• ban - add to ban list<br>• unban - remove from ban list<br>• allow - add to allowed list<br>• disallow - remove from allowed list |
| all_estates | optional | If TRUE (or 1), perform operation for all estates available for bot |

### Output

(to be received in `http_response` LSL event, see [docs](/doc/doing-http-api-calls-c6FSEMF7bP) for details)

| Variable | Description |
|----------|-------------|
| result   | OK - command completed successfully<br>FAIL - command failed |
| resulttext | Detailed reason for the failure. |
| custom   | The value from input "custom" parameter. See above. |

## Comments

"allow" and "disallow" operations work with a "Allowed residents" list. This list is taken into account only if your sim is private (has "Allow public access" option off).

"disallow" and "ban" operations are not the same. "ban" ejects resident from the sim, and prevents him from returning back, while "disallow" removes resident from the "allowed residents" access list.

Also:

* You have to teleport to the region first.
* To execute this function your bot needs to be an [Estate Manager](http://wiki.secondlife.com/wiki/Estate_Manager).
* You **don't** need a "Sim Governor" add-on to use this function.

## Examples

Teleport to DuoLife region and ban BartenderJoe:

```csharp
// You need to adjust the vars below:
string sbApiKey = "...";
string sbBotName = "...";
string sbBotAccessCode = "...";

string myHome = "DuoLife/128/128/20";

// First, teleport to the desired region

string params = llDumpList2String([
  "action="  + "teleport",
  "location=" + llEscapeURL(myHome),
  "apikey="  + llEscapeURL(sbApiKey),
  "botname=" + llEscapeURL(sbBotName),
  "secret="  + llEscapeURL(sbBotAccessCode)
  ], "&");

llHTTPRequest("https://api.mysmartbots.com/api/bot.html",
  [HTTP_METHOD,"POST"], params);

// Then restart it:
params = llDumpList2String([
  "action="  + "sim_access",
  "avatar=" + "bc3af7d6-f089-4b57-b78e-473334af01cb",
  "operation=" + "ban",
  "all_estates=" + "0"
  ], "&");

llHTTPRequest("https://api.mysmartbots.com/api/bot.html",
  [HTTP_METHOD,"POST"], params);
```