> This page is for Developers.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.emnify.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.emnify.com/_mcp/server.

> Permission sets for three common jobs, Procurement, Device Manager, and Finance, and how to create each one as a custom role.

Three role templates cover the jobs that teams most often split platform access by: procurement, device operations, and finance.
Each template is a permission set you create as a [custom role](/developers/api-guidelines/manage-permissions#create-a-custom-role), not a built-in [system role](/developers/api-guidelines/permissions#system-roles).

## What each role covers

| Role           | In scope                                 | Out of scope                                                                       |
| -------------- | ---------------------------------------- | ---------------------------------------------------------------------------------- |
| Procurement    | **SIM Inventory**, **Orders**            | **Connected Devices**, **Reports**, **Billing**, **Integrations**, **Automations** |
| Device Manager | **Connected Devices**, **SIM Inventory** | Cost data, policy changes, **Orders**, **Reports**, **Billing**                    |
| Finance        | **Billing**, **Reports**                 | Device and SIM operations, **Orders**, **Device Policies**, **Integrations**       |

None of the three include user management or SSO.
To grant those, add the permissions yourself or assign the Administrator system role.

## Before you begin

Creating a role requires an [authentication token](/developers/auth/application-tokens) and a role that includes role management, such as Administrator.

The examples use `my` as the Workspace identifier, which targets your own Workspace.

## Create a role from a template

> **Note**
>
> During the beta, a Workspace can hold at most 3 custom roles.
> To request beta access, contact your Customer Success Manager.

Each role below has a runnable request and the payload it posts.
Run it from the reference, or save the payload as a JSON file and post it yourself.

The response is `201 Created` with the role's `id`.
[Assign the role to users](/developers/api-guidelines/manage-permissions#assign-a-role-to-a-user) with that ID.

The `name` and `description` fields are free text.
Rename a template to match your own conventions, within the [name rules](/developers/api-guidelines/manage-permissions#create-a-custom-role).

> **Note**
>
> If a template includes a permission your Workspace type can't assign, the request returns `400 Bad Request`.
> Remove that pair and post the request again.
> See [Troubleshooting](/developers/api-guidelines/manage-permissions#troubleshooting).

## Procurement

Orders SIMs and brings them into the Workspace.

This role can:

* View **SIM Inventory**, including SIM details and events.
* Order SIMs, and register the SIMs it receives.
* Create devices in bulk, either during registration or from a selection in **SIM Inventory**.
* View the **Device Policies** lists, and the Workspace contact and payment details that an order needs.

This role can't:

* Open **Connected Devices** or any device details.
* Change, deactivate, delete, or transfer SIMs.
* Create tags or IP address spaces, so device creation picks from existing ones only.
* Open **Reports**, **Dashboard**, **Integrations**, **Automations**, or **Billing**.

### Request

POST [https://cdn.emnify.net/api/v1/organisation/\{orgId}/role](https://cdn.emnify.net/api/v1/organisation/\{orgId}/role)

**`Procurement`**

```curl Procurement
curl -X POST https://cdn.emnify.net/api/v1/organisation/orgId/role \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "Procurement",
  "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
  "permissions": [
    {
      "resource": "Sim",
      "action": "List"
    },
    {
      "resource": "Sim.Event",
      "action": "List"
    },
    {
      "resource": "Event.Type",
      "action": "List"
    },
    {
      "resource": "Operator",
      "action": "List"
    },
    {
      "resource": "SimBatch.Bic",
      "action": "Get"
    },
    {
      "resource": "SimBatch.Bic",
      "action": "Add"
    },
    {
      "resource": "Endpoint",
      "action": "Create"
    },
    {
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    },
    {
      "resource": "TariffProfile",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "List"
    },
    {
      "resource": "IpAddressSpace",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "List"
    },
    {
      "resource": "Shop.Order",
      "action": "Create"
    },
    {
      "resource": "Shop.Order.Calculation",
      "action": "Get"
    },
    {
      "resource": "Shop.Product",
      "action": "List"
    },
    {
      "resource": "PaymentOption",
      "action": "List"
    },
    {
      "resource": "ShippingOption.Country",
      "action": "List"
    },
    {
      "resource": "Organisation.Contact",
      "action": "List"
    },
    {
      "resource": "Shop.Order",
      "action": "List"
    },
    {
      "resource": "Shop.Order.Invoice",
      "action": "Get"
    },
    {
      "resource": "Shop.Order.Item.Artifact",
      "action": "Get"
    }
  ]
}'
```

**`Procurement`**

```python Procurement
import requests

url = "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

payload = {
    "name": "Procurement",
    "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
    "permissions": [
        {
            "resource": "Sim",
            "action": "List"
        },
        {
            "resource": "Sim.Event",
            "action": "List"
        },
        {
            "resource": "Event.Type",
            "action": "List"
        },
        {
            "resource": "Operator",
            "action": "List"
        },
        {
            "resource": "SimBatch.Bic",
            "action": "Get"
        },
        {
            "resource": "SimBatch.Bic",
            "action": "Add"
        },
        {
            "resource": "Endpoint",
            "action": "Create"
        },
        {
            "resource": "Organisation.Billing.Settings",
            "action": "Get"
        },
        {
            "resource": "TariffProfile",
            "action": "List"
        },
        {
            "resource": "ServiceProfile",
            "action": "List"
        },
        {
            "resource": "IpAddressSpace",
            "action": "List"
        },
        {
            "resource": "Tag",
            "action": "List"
        },
        {
            "resource": "Shop.Order",
            "action": "Create"
        },
        {
            "resource": "Shop.Order.Calculation",
            "action": "Get"
        },
        {
            "resource": "Shop.Product",
            "action": "List"
        },
        {
            "resource": "PaymentOption",
            "action": "List"
        },
        {
            "resource": "ShippingOption.Country",
            "action": "List"
        },
        {
            "resource": "Organisation.Contact",
            "action": "List"
        },
        {
            "resource": "Shop.Order",
            "action": "List"
        },
        {
            "resource": "Shop.Order.Invoice",
            "action": "Get"
        },
        {
            "resource": "Shop.Order.Item.Artifact",
            "action": "Get"
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`Procurement`**

```javascript Procurement
const url = 'https://cdn.emnify.net/api/v1/organisation/:orgId/role';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"Procurement","description":"Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.","permissions":[{"resource":"Sim","action":"List"},{"resource":"Sim.Event","action":"List"},{"resource":"Event.Type","action":"List"},{"resource":"Operator","action":"List"},{"resource":"SimBatch.Bic","action":"Get"},{"resource":"SimBatch.Bic","action":"Add"},{"resource":"Endpoint","action":"Create"},{"resource":"Organisation.Billing.Settings","action":"Get"},{"resource":"TariffProfile","action":"List"},{"resource":"ServiceProfile","action":"List"},{"resource":"IpAddressSpace","action":"List"},{"resource":"Tag","action":"List"},{"resource":"Shop.Order","action":"Create"},{"resource":"Shop.Order.Calculation","action":"Get"},{"resource":"Shop.Product","action":"List"},{"resource":"PaymentOption","action":"List"},{"resource":"ShippingOption.Country","action":"List"},{"resource":"Organisation.Contact","action":"List"},{"resource":"Shop.Order","action":"List"},{"resource":"Shop.Order.Invoice","action":"Get"},{"resource":"Shop.Order.Item.Artifact","action":"Get"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Procurement`**

```go Procurement
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

	payload := strings.NewReader("{\n  \"name\": \"Procurement\",\n  \"description\": \"Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Shop.Order.Calculation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Product\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ShippingOption.Country\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Contact\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order.Invoice\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Order.Item.Artifact\",\n      \"action\": \"Get\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Procurement`**

```ruby Procurement
require 'uri'
require 'net/http'

url = URI("https://cdn.emnify.net/api/v1/organisation/:orgId/role")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Procurement\",\n  \"description\": \"Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Shop.Order.Calculation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Product\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ShippingOption.Country\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Contact\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order.Invoice\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Order.Item.Artifact\",\n      \"action\": \"Get\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

**`Procurement`**

```java Procurement
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://cdn.emnify.net/api/v1/organisation/:orgId/role")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Procurement\",\n  \"description\": \"Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Shop.Order.Calculation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Product\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ShippingOption.Country\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Contact\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order.Invoice\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Order.Item.Artifact\",\n      \"action\": \"Get\"\n    }\n  ]\n}")
  .asString();
```

**`Procurement`**

```php Procurement
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://cdn.emnify.net/api/v1/organisation/:orgId/role', [
  'body' => '{
  "name": "Procurement",
  "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
  "permissions": [
    {
      "resource": "Sim",
      "action": "List"
    },
    {
      "resource": "Sim.Event",
      "action": "List"
    },
    {
      "resource": "Event.Type",
      "action": "List"
    },
    {
      "resource": "Operator",
      "action": "List"
    },
    {
      "resource": "SimBatch.Bic",
      "action": "Get"
    },
    {
      "resource": "SimBatch.Bic",
      "action": "Add"
    },
    {
      "resource": "Endpoint",
      "action": "Create"
    },
    {
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    },
    {
      "resource": "TariffProfile",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "List"
    },
    {
      "resource": "IpAddressSpace",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "List"
    },
    {
      "resource": "Shop.Order",
      "action": "Create"
    },
    {
      "resource": "Shop.Order.Calculation",
      "action": "Get"
    },
    {
      "resource": "Shop.Product",
      "action": "List"
    },
    {
      "resource": "PaymentOption",
      "action": "List"
    },
    {
      "resource": "ShippingOption.Country",
      "action": "List"
    },
    {
      "resource": "Organisation.Contact",
      "action": "List"
    },
    {
      "resource": "Shop.Order",
      "action": "List"
    },
    {
      "resource": "Shop.Order.Invoice",
      "action": "Get"
    },
    {
      "resource": "Shop.Order.Item.Artifact",
      "action": "Get"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

**`Procurement`**

```csharp Procurement
using RestSharp;

var client = new RestClient("https://cdn.emnify.net/api/v1/organisation/:orgId/role");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Procurement\",\n  \"description\": \"Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"SimBatch.Bic\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Shop.Order.Calculation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Product\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ShippingOption.Country\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Contact\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Shop.Order.Invoice\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Shop.Order.Item.Artifact\",\n      \"action\": \"Get\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Procurement`**

```swift Procurement
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Procurement",
  "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
  "permissions": [
    [
      "resource": "Sim",
      "action": "List"
    ],
    [
      "resource": "Sim.Event",
      "action": "List"
    ],
    [
      "resource": "Event.Type",
      "action": "List"
    ],
    [
      "resource": "Operator",
      "action": "List"
    ],
    [
      "resource": "SimBatch.Bic",
      "action": "Get"
    ],
    [
      "resource": "SimBatch.Bic",
      "action": "Add"
    ],
    [
      "resource": "Endpoint",
      "action": "Create"
    ],
    [
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    ],
    [
      "resource": "TariffProfile",
      "action": "List"
    ],
    [
      "resource": "ServiceProfile",
      "action": "List"
    ],
    [
      "resource": "IpAddressSpace",
      "action": "List"
    ],
    [
      "resource": "Tag",
      "action": "List"
    ],
    [
      "resource": "Shop.Order",
      "action": "Create"
    ],
    [
      "resource": "Shop.Order.Calculation",
      "action": "Get"
    ],
    [
      "resource": "Shop.Product",
      "action": "List"
    ],
    [
      "resource": "PaymentOption",
      "action": "List"
    ],
    [
      "resource": "ShippingOption.Country",
      "action": "List"
    ],
    [
      "resource": "Organisation.Contact",
      "action": "List"
    ],
    [
      "resource": "Shop.Order",
      "action": "List"
    ],
    [
      "resource": "Shop.Order.Invoice",
      "action": "Get"
    ],
    [
      "resource": "Shop.Order.Item.Artifact",
      "action": "Get"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://cdn.emnify.net/api/v1/organisation/:orgId/role")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

#### procurement.json (21 permissions)

```json
{
  "name": "Procurement",
  "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
  "permissions": [
    { "resource": "Sim", "action": "List" },
    { "resource": "Sim.Event", "action": "List" },
    { "resource": "Event.Type", "action": "List" },
    { "resource": "Operator", "action": "List" },
    { "resource": "SimBatch.Bic", "action": "Get" },
    { "resource": "SimBatch.Bic", "action": "Add" },
    { "resource": "Endpoint", "action": "Create" },
    { "resource": "Organisation.Billing.Settings", "action": "Get" },
    { "resource": "TariffProfile", "action": "List" },
    { "resource": "ServiceProfile", "action": "List" },
    { "resource": "IpAddressSpace", "action": "List" },
    { "resource": "Tag", "action": "List" },
    { "resource": "Shop.Order", "action": "Create" },
    { "resource": "Shop.Order.Calculation", "action": "Get" },
    { "resource": "Shop.Product", "action": "List" },
    { "resource": "PaymentOption", "action": "List" },
    { "resource": "ShippingOption.Country", "action": "List" },
    { "resource": "Organisation.Contact", "action": "List" },
    { "resource": "Shop.Order", "action": "List" },
    { "resource": "Shop.Order.Invoice", "action": "Get" },
    { "resource": "Shop.Order.Item.Artifact", "action": "Get" }
  ]
}
```

> **Tip**
>
> To let this role save invoice and shipping details back to the Workspace, add `Organisation.Contact` with `Create`, `Update`, and `Delete`, and `Organisation.BillingConfig` with `Update`.
> Orders go through without them.

## Device Manager

Handles day-to-day device and SIM work, with no access to cost data.

This role can:

* Manage devices end to end: create them, assign and release SIMs, rename them, set IMEI and IMEI lock, turn them on and off, and change their coverage and service policies.
* Manage tags, operator blacklists, data and SMS quotas, traffic limit extensions, and eSIM profiles.
* Send SMS, reset connectivity, and view events, location, and Flow Logs.
* Deactivate SIMs from **SIM Inventory**.

This role can't:

* See usage statistics anywhere: no usage columns, **Stats** tabs, or usage charts.
* Delete devices, or delete or transfer SIMs.
* Register or order SIMs, which stay with Procurement.
* Create or edit policies, since the policy lists are read-only.
* See coverage policy cost details, such as tariffs and rates.
* Open **Reports**, **Dashboard**, **Integrations**, **Automations**, or **Billing**.

### Request

POST [https://cdn.emnify.net/api/v1/organisation/\{orgId}/role](https://cdn.emnify.net/api/v1/organisation/\{orgId}/role)

**`Device Manager`**

```curl Device Manager
curl -X POST https://cdn.emnify.net/api/v1/organisation/orgId/role \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "Device Manager",
  "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
  "permissions": [
    {
      "resource": "Endpoint",
      "action": "List"
    },
    {
      "resource": "Endpoint",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "List"
    },
    {
      "resource": "TariffProfile",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "List"
    },
    {
      "resource": "Euicc.Unlinked",
      "action": "List"
    },
    {
      "resource": "Sim.Operation",
      "action": "Get"
    },
    {
      "resource": "Sim.Product.Unlinked",
      "action": "List"
    },
    {
      "resource": "Endpoint",
      "action": "Create"
    },
    {
      "resource": "Sim",
      "action": "List"
    },
    {
      "resource": "Sim",
      "action": "Update"
    },
    {
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    },
    {
      "resource": "IpAddressSpace",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "Create"
    },
    {
      "resource": "Sim",
      "action": "Get"
    },
    {
      "resource": "Endpoint",
      "action": "Update"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "Update"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "Get"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "List"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Add"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Delete"
    },
    {
      "resource": "Operator",
      "action": "List"
    },
    {
      "resource": "Endpoint.Tag",
      "action": "Add"
    },
    {
      "resource": "Endpoint.Tag",
      "action": "Remove"
    },
    {
      "resource": "Tag",
      "action": "Get"
    },
    {
      "resource": "Tag",
      "action": "Update"
    },
    {
      "resource": "Tag",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "Create"
    },
    {
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "List"
    },
    {
      "resource": "ServiceProfile.TrafficLimit",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Event",
      "action": "List"
    },
    {
      "resource": "Event.Type",
      "action": "List"
    },
    {
      "resource": "Event.Custom.Template",
      "action": "List"
    },
    {
      "resource": "Endpoint.Location",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.FlowLogs.Destination",
      "action": "List"
    },
    {
      "resource": "Endpoint.FlowLogs.Detail",
      "action": "List"
    },
    {
      "resource": "Euicc",
      "action": "List"
    },
    {
      "resource": "Euicc.Operation",
      "action": "List"
    },
    {
      "resource": "Sim.Operation",
      "action": "Create"
    },
    {
      "resource": "Euicc.Operation",
      "action": "Create"
    },
    {
      "resource": "Euicc.Profile.ActivationCode",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "List"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Cancel"
    },
    {
      "resource": "Sim.Event",
      "action": "List"
    }
  ]
}'
```

**`Device Manager`**

```python Device Manager
import requests

url = "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

payload = {
    "name": "Device Manager",
    "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
    "permissions": [
        {
            "resource": "Endpoint",
            "action": "List"
        },
        {
            "resource": "Endpoint",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Connectivity",
            "action": "List"
        },
        {
            "resource": "Tag",
            "action": "List"
        },
        {
            "resource": "TariffProfile",
            "action": "List"
        },
        {
            "resource": "ServiceProfile",
            "action": "List"
        },
        {
            "resource": "Euicc.Unlinked",
            "action": "List"
        },
        {
            "resource": "Sim.Operation",
            "action": "Get"
        },
        {
            "resource": "Sim.Product.Unlinked",
            "action": "List"
        },
        {
            "resource": "Endpoint",
            "action": "Create"
        },
        {
            "resource": "Sim",
            "action": "List"
        },
        {
            "resource": "Sim",
            "action": "Update"
        },
        {
            "resource": "Organisation.Billing.Settings",
            "action": "Get"
        },
        {
            "resource": "IpAddressSpace",
            "action": "List"
        },
        {
            "resource": "Tag",
            "action": "Create"
        },
        {
            "resource": "Sim",
            "action": "Get"
        },
        {
            "resource": "Endpoint",
            "action": "Update"
        },
        {
            "resource": "Endpoint.Connectivity",
            "action": "Update"
        },
        {
            "resource": "Endpoint.Connectivity",
            "action": "Get"
        },
        {
            "resource": "Endpoint.OperatorBlacklist",
            "action": "List"
        },
        {
            "resource": "Endpoint.OperatorBlacklist",
            "action": "Add"
        },
        {
            "resource": "Endpoint.OperatorBlacklist",
            "action": "Delete"
        },
        {
            "resource": "Operator",
            "action": "List"
        },
        {
            "resource": "Endpoint.Tag",
            "action": "Add"
        },
        {
            "resource": "Endpoint.Tag",
            "action": "Remove"
        },
        {
            "resource": "Tag",
            "action": "Get"
        },
        {
            "resource": "Tag",
            "action": "Update"
        },
        {
            "resource": "Tag",
            "action": "Delete"
        },
        {
            "resource": "Endpoint.TrafficLimitExtension",
            "action": "Create"
        },
        {
            "resource": "Endpoint.TrafficLimitExtension",
            "action": "List"
        },
        {
            "resource": "ServiceProfile.TrafficLimit",
            "action": "List"
        },
        {
            "resource": "ServiceProfile",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Event",
            "action": "List"
        },
        {
            "resource": "Event.Type",
            "action": "List"
        },
        {
            "resource": "Event.Custom.Template",
            "action": "List"
        },
        {
            "resource": "Endpoint.Location",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Quota.Data",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Quota.Sms",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Quota.Data",
            "action": "Create"
        },
        {
            "resource": "Endpoint.Quota.Sms",
            "action": "Create"
        },
        {
            "resource": "Endpoint.Quota.Data",
            "action": "Delete"
        },
        {
            "resource": "Endpoint.Quota.Sms",
            "action": "Delete"
        },
        {
            "resource": "Endpoint.FlowLogs.Destination",
            "action": "List"
        },
        {
            "resource": "Endpoint.FlowLogs.Detail",
            "action": "List"
        },
        {
            "resource": "Euicc",
            "action": "List"
        },
        {
            "resource": "Euicc.Operation",
            "action": "List"
        },
        {
            "resource": "Sim.Operation",
            "action": "Create"
        },
        {
            "resource": "Euicc.Operation",
            "action": "Create"
        },
        {
            "resource": "Euicc.Profile.ActivationCode",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Sms",
            "action": "List"
        },
        {
            "resource": "Endpoint.Sms",
            "action": "Create"
        },
        {
            "resource": "Endpoint.Sms",
            "action": "Get"
        },
        {
            "resource": "Endpoint.Sms",
            "action": "Cancel"
        },
        {
            "resource": "Sim.Event",
            "action": "List"
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`Device Manager`**

```javascript Device Manager
const url = 'https://cdn.emnify.net/api/v1/organisation/:orgId/role';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"Device Manager","description":"Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.","permissions":[{"resource":"Endpoint","action":"List"},{"resource":"Endpoint","action":"Get"},{"resource":"Endpoint.Connectivity","action":"List"},{"resource":"Tag","action":"List"},{"resource":"TariffProfile","action":"List"},{"resource":"ServiceProfile","action":"List"},{"resource":"Euicc.Unlinked","action":"List"},{"resource":"Sim.Operation","action":"Get"},{"resource":"Sim.Product.Unlinked","action":"List"},{"resource":"Endpoint","action":"Create"},{"resource":"Sim","action":"List"},{"resource":"Sim","action":"Update"},{"resource":"Organisation.Billing.Settings","action":"Get"},{"resource":"IpAddressSpace","action":"List"},{"resource":"Tag","action":"Create"},{"resource":"Sim","action":"Get"},{"resource":"Endpoint","action":"Update"},{"resource":"Endpoint.Connectivity","action":"Update"},{"resource":"Endpoint.Connectivity","action":"Get"},{"resource":"Endpoint.OperatorBlacklist","action":"List"},{"resource":"Endpoint.OperatorBlacklist","action":"Add"},{"resource":"Endpoint.OperatorBlacklist","action":"Delete"},{"resource":"Operator","action":"List"},{"resource":"Endpoint.Tag","action":"Add"},{"resource":"Endpoint.Tag","action":"Remove"},{"resource":"Tag","action":"Get"},{"resource":"Tag","action":"Update"},{"resource":"Tag","action":"Delete"},{"resource":"Endpoint.TrafficLimitExtension","action":"Create"},{"resource":"Endpoint.TrafficLimitExtension","action":"List"},{"resource":"ServiceProfile.TrafficLimit","action":"List"},{"resource":"ServiceProfile","action":"Get"},{"resource":"Endpoint.Event","action":"List"},{"resource":"Event.Type","action":"List"},{"resource":"Event.Custom.Template","action":"List"},{"resource":"Endpoint.Location","action":"Get"},{"resource":"Endpoint.Quota.Data","action":"Get"},{"resource":"Endpoint.Quota.Sms","action":"Get"},{"resource":"Endpoint.Quota.Data","action":"Create"},{"resource":"Endpoint.Quota.Sms","action":"Create"},{"resource":"Endpoint.Quota.Data","action":"Delete"},{"resource":"Endpoint.Quota.Sms","action":"Delete"},{"resource":"Endpoint.FlowLogs.Destination","action":"List"},{"resource":"Endpoint.FlowLogs.Detail","action":"List"},{"resource":"Euicc","action":"List"},{"resource":"Euicc.Operation","action":"List"},{"resource":"Sim.Operation","action":"Create"},{"resource":"Euicc.Operation","action":"Create"},{"resource":"Euicc.Profile.ActivationCode","action":"Get"},{"resource":"Endpoint.Sms","action":"List"},{"resource":"Endpoint.Sms","action":"Create"},{"resource":"Endpoint.Sms","action":"Get"},{"resource":"Endpoint.Sms","action":"Cancel"},{"resource":"Sim.Event","action":"List"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Device Manager`**

```go Device Manager
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

	payload := strings.NewReader("{\n  \"name\": \"Device Manager\",\n  \"description\": \"Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Sim.Product.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Remove\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile.TrafficLimit\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Custom.Template\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Location\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Destination\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Detail\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Profile.ActivationCode\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Cancel\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Device Manager`**

```ruby Device Manager
require 'uri'
require 'net/http'

url = URI("https://cdn.emnify.net/api/v1/organisation/:orgId/role")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Device Manager\",\n  \"description\": \"Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Sim.Product.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Remove\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile.TrafficLimit\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Custom.Template\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Location\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Destination\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Detail\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Profile.ActivationCode\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Cancel\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

**`Device Manager`**

```java Device Manager
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://cdn.emnify.net/api/v1/organisation/:orgId/role")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Device Manager\",\n  \"description\": \"Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Sim.Product.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Remove\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile.TrafficLimit\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Custom.Template\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Location\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Destination\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Detail\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Profile.ActivationCode\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Cancel\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    }\n  ]\n}")
  .asString();
```

**`Device Manager`**

```php Device Manager
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://cdn.emnify.net/api/v1/organisation/:orgId/role', [
  'body' => '{
  "name": "Device Manager",
  "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
  "permissions": [
    {
      "resource": "Endpoint",
      "action": "List"
    },
    {
      "resource": "Endpoint",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "List"
    },
    {
      "resource": "TariffProfile",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "List"
    },
    {
      "resource": "Euicc.Unlinked",
      "action": "List"
    },
    {
      "resource": "Sim.Operation",
      "action": "Get"
    },
    {
      "resource": "Sim.Product.Unlinked",
      "action": "List"
    },
    {
      "resource": "Endpoint",
      "action": "Create"
    },
    {
      "resource": "Sim",
      "action": "List"
    },
    {
      "resource": "Sim",
      "action": "Update"
    },
    {
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    },
    {
      "resource": "IpAddressSpace",
      "action": "List"
    },
    {
      "resource": "Tag",
      "action": "Create"
    },
    {
      "resource": "Sim",
      "action": "Get"
    },
    {
      "resource": "Endpoint",
      "action": "Update"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "Update"
    },
    {
      "resource": "Endpoint.Connectivity",
      "action": "Get"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "List"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Add"
    },
    {
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Delete"
    },
    {
      "resource": "Operator",
      "action": "List"
    },
    {
      "resource": "Endpoint.Tag",
      "action": "Add"
    },
    {
      "resource": "Endpoint.Tag",
      "action": "Remove"
    },
    {
      "resource": "Tag",
      "action": "Get"
    },
    {
      "resource": "Tag",
      "action": "Update"
    },
    {
      "resource": "Tag",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "Create"
    },
    {
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "List"
    },
    {
      "resource": "ServiceProfile.TrafficLimit",
      "action": "List"
    },
    {
      "resource": "ServiceProfile",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Event",
      "action": "List"
    },
    {
      "resource": "Event.Type",
      "action": "List"
    },
    {
      "resource": "Event.Custom.Template",
      "action": "List"
    },
    {
      "resource": "Endpoint.Location",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Quota.Data",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.Quota.Sms",
      "action": "Delete"
    },
    {
      "resource": "Endpoint.FlowLogs.Destination",
      "action": "List"
    },
    {
      "resource": "Endpoint.FlowLogs.Detail",
      "action": "List"
    },
    {
      "resource": "Euicc",
      "action": "List"
    },
    {
      "resource": "Euicc.Operation",
      "action": "List"
    },
    {
      "resource": "Sim.Operation",
      "action": "Create"
    },
    {
      "resource": "Euicc.Operation",
      "action": "Create"
    },
    {
      "resource": "Euicc.Profile.ActivationCode",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "List"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Create"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Get"
    },
    {
      "resource": "Endpoint.Sms",
      "action": "Cancel"
    },
    {
      "resource": "Sim.Event",
      "action": "List"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

**`Device Manager`**

```csharp Device Manager
using RestSharp;

var client = new RestClient("https://cdn.emnify.net/api/v1/organisation/:orgId/role");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Device Manager\",\n  \"description\": \"Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"TariffProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Sim.Product.Unlinked\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing.Settings\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"IpAddressSpace\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Sim\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Endpoint.Connectivity\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.OperatorBlacklist\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Operator\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Add\"\n    },\n    {\n      \"resource\": \"Endpoint.Tag\",\n      \"action\": \"Remove\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Tag\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.TrafficLimitExtension\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile.TrafficLimit\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"ServiceProfile\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Event\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Type\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Event.Custom.Template\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Location\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Data\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.Quota.Sms\",\n      \"action\": \"Delete\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Destination\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.FlowLogs.Detail\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Sim.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Operation\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Euicc.Profile.ActivationCode\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Endpoint.Sms\",\n      \"action\": \"Cancel\"\n    },\n    {\n      \"resource\": \"Sim.Event\",\n      \"action\": \"List\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Device Manager`**

```swift Device Manager
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Device Manager",
  "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
  "permissions": [
    [
      "resource": "Endpoint",
      "action": "List"
    ],
    [
      "resource": "Endpoint",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Connectivity",
      "action": "List"
    ],
    [
      "resource": "Tag",
      "action": "List"
    ],
    [
      "resource": "TariffProfile",
      "action": "List"
    ],
    [
      "resource": "ServiceProfile",
      "action": "List"
    ],
    [
      "resource": "Euicc.Unlinked",
      "action": "List"
    ],
    [
      "resource": "Sim.Operation",
      "action": "Get"
    ],
    [
      "resource": "Sim.Product.Unlinked",
      "action": "List"
    ],
    [
      "resource": "Endpoint",
      "action": "Create"
    ],
    [
      "resource": "Sim",
      "action": "List"
    ],
    [
      "resource": "Sim",
      "action": "Update"
    ],
    [
      "resource": "Organisation.Billing.Settings",
      "action": "Get"
    ],
    [
      "resource": "IpAddressSpace",
      "action": "List"
    ],
    [
      "resource": "Tag",
      "action": "Create"
    ],
    [
      "resource": "Sim",
      "action": "Get"
    ],
    [
      "resource": "Endpoint",
      "action": "Update"
    ],
    [
      "resource": "Endpoint.Connectivity",
      "action": "Update"
    ],
    [
      "resource": "Endpoint.Connectivity",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.OperatorBlacklist",
      "action": "List"
    ],
    [
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Add"
    ],
    [
      "resource": "Endpoint.OperatorBlacklist",
      "action": "Delete"
    ],
    [
      "resource": "Operator",
      "action": "List"
    ],
    [
      "resource": "Endpoint.Tag",
      "action": "Add"
    ],
    [
      "resource": "Endpoint.Tag",
      "action": "Remove"
    ],
    [
      "resource": "Tag",
      "action": "Get"
    ],
    [
      "resource": "Tag",
      "action": "Update"
    ],
    [
      "resource": "Tag",
      "action": "Delete"
    ],
    [
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "Create"
    ],
    [
      "resource": "Endpoint.TrafficLimitExtension",
      "action": "List"
    ],
    [
      "resource": "ServiceProfile.TrafficLimit",
      "action": "List"
    ],
    [
      "resource": "ServiceProfile",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Event",
      "action": "List"
    ],
    [
      "resource": "Event.Type",
      "action": "List"
    ],
    [
      "resource": "Event.Custom.Template",
      "action": "List"
    ],
    [
      "resource": "Endpoint.Location",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Quota.Data",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Quota.Sms",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Quota.Data",
      "action": "Create"
    ],
    [
      "resource": "Endpoint.Quota.Sms",
      "action": "Create"
    ],
    [
      "resource": "Endpoint.Quota.Data",
      "action": "Delete"
    ],
    [
      "resource": "Endpoint.Quota.Sms",
      "action": "Delete"
    ],
    [
      "resource": "Endpoint.FlowLogs.Destination",
      "action": "List"
    ],
    [
      "resource": "Endpoint.FlowLogs.Detail",
      "action": "List"
    ],
    [
      "resource": "Euicc",
      "action": "List"
    ],
    [
      "resource": "Euicc.Operation",
      "action": "List"
    ],
    [
      "resource": "Sim.Operation",
      "action": "Create"
    ],
    [
      "resource": "Euicc.Operation",
      "action": "Create"
    ],
    [
      "resource": "Euicc.Profile.ActivationCode",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Sms",
      "action": "List"
    ],
    [
      "resource": "Endpoint.Sms",
      "action": "Create"
    ],
    [
      "resource": "Endpoint.Sms",
      "action": "Get"
    ],
    [
      "resource": "Endpoint.Sms",
      "action": "Cancel"
    ],
    [
      "resource": "Sim.Event",
      "action": "List"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://cdn.emnify.net/api/v1/organisation/:orgId/role")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

#### device-manager.json (54 permissions)

```json
{
  "name": "Device Manager",
  "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
  "permissions": [
    { "resource": "Endpoint", "action": "List" },
    { "resource": "Endpoint", "action": "Get" },
    { "resource": "Endpoint.Connectivity", "action": "List" },
    { "resource": "Tag", "action": "List" },
    { "resource": "TariffProfile", "action": "List" },
    { "resource": "ServiceProfile", "action": "List" },
    { "resource": "Euicc.Unlinked", "action": "List" },
    { "resource": "Sim.Operation", "action": "Get" },
    { "resource": "Sim.Product.Unlinked", "action": "List" },
    { "resource": "Endpoint", "action": "Create" },
    { "resource": "Sim", "action": "List" },
    { "resource": "Sim", "action": "Update" },
    { "resource": "Organisation.Billing.Settings", "action": "Get" },
    { "resource": "IpAddressSpace", "action": "List" },
    { "resource": "Tag", "action": "Create" },
    { "resource": "Sim", "action": "Get" },
    { "resource": "Endpoint", "action": "Update" },
    { "resource": "Endpoint.Connectivity", "action": "Update" },
    { "resource": "Endpoint.Connectivity", "action": "Get" },
    { "resource": "Endpoint.OperatorBlacklist", "action": "List" },
    { "resource": "Endpoint.OperatorBlacklist", "action": "Add" },
    { "resource": "Endpoint.OperatorBlacklist", "action": "Delete" },
    { "resource": "Operator", "action": "List" },
    { "resource": "Endpoint.Tag", "action": "Add" },
    { "resource": "Endpoint.Tag", "action": "Remove" },
    { "resource": "Tag", "action": "Get" },
    { "resource": "Tag", "action": "Update" },
    { "resource": "Tag", "action": "Delete" },
    { "resource": "Endpoint.TrafficLimitExtension", "action": "Create" },
    { "resource": "Endpoint.TrafficLimitExtension", "action": "List" },
    { "resource": "ServiceProfile.TrafficLimit", "action": "List" },
    { "resource": "ServiceProfile", "action": "Get" },
    { "resource": "Endpoint.Event", "action": "List" },
    { "resource": "Event.Type", "action": "List" },
    { "resource": "Event.Custom.Template", "action": "List" },
    { "resource": "Endpoint.Location", "action": "Get" },
    { "resource": "Endpoint.Quota.Data", "action": "Get" },
    { "resource": "Endpoint.Quota.Sms", "action": "Get" },
    { "resource": "Endpoint.Quota.Data", "action": "Create" },
    { "resource": "Endpoint.Quota.Sms", "action": "Create" },
    { "resource": "Endpoint.Quota.Data", "action": "Delete" },
    { "resource": "Endpoint.Quota.Sms", "action": "Delete" },
    { "resource": "Endpoint.FlowLogs.Destination", "action": "List" },
    { "resource": "Endpoint.FlowLogs.Detail", "action": "List" },
    { "resource": "Euicc", "action": "List" },
    { "resource": "Euicc.Operation", "action": "List" },
    { "resource": "Sim.Operation", "action": "Create" },
    { "resource": "Euicc.Operation", "action": "Create" },
    { "resource": "Euicc.Profile.ActivationCode", "action": "Get" },
    { "resource": "Endpoint.Sms", "action": "List" },
    { "resource": "Endpoint.Sms", "action": "Create" },
    { "resource": "Endpoint.Sms", "action": "Get" },
    { "resource": "Endpoint.Sms", "action": "Cancel" },
    { "resource": "Sim.Event", "action": "List" }
  ]
}
```

## Finance

Handles billing and reporting.

This role can:

* Open **Reports**, including Daily Usage and the dashboard report tabs.
* View and change the payment method, and change the Workspace currency.
* Edit the VAT number, and view the prepaid balance on prepaid Workspaces.
* View monthly cost details, and view and pay invoices.

This role can't:

* Open device or SIM pages, **Orders**, **Device Policies**, **Dashboard**, **Integrations**, or **Automations**.
* Open Workspace and organization data.

### Request

POST [https://cdn.emnify.net/api/v1/organisation/\{orgId}/role](https://cdn.emnify.net/api/v1/organisation/\{orgId}/role)

**`Finance`**

```curl Finance
curl -X POST https://cdn.emnify.net/api/v1/organisation/orgId/role \
     -H "Authorization: Bearer <token>" \
     -H "Content-Type: application/json" \
     -d '{
  "name": "Finance",
  "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
  "permissions": [
    {
      "resource": "Organisation.Stats",
      "action": "Get"
    },
    {
      "resource": "Stats.Dashboard",
      "action": "Get"
    },
    {
      "resource": "PaymentOption",
      "action": "List"
    },
    {
      "resource": "Organisation.Balance",
      "action": "Get"
    },
    {
      "resource": "PaymentOption",
      "action": "Create"
    },
    {
      "resource": "Organisation.BillingConfig",
      "action": "Update"
    },
    {
      "resource": "Organisation.My.Currency",
      "action": "Update"
    },
    {
      "resource": "Organisation.Billing",
      "action": "Get"
    },
    {
      "resource": "Organisation.Invoice",
      "action": "List"
    },
    {
      "resource": "Organisation.Invoice.Payment",
      "action": "Create"
    }
  ]
}'
```

**`Finance`**

```python Finance
import requests

url = "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

payload = {
    "name": "Finance",
    "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
    "permissions": [
        {
            "resource": "Organisation.Stats",
            "action": "Get"
        },
        {
            "resource": "Stats.Dashboard",
            "action": "Get"
        },
        {
            "resource": "PaymentOption",
            "action": "List"
        },
        {
            "resource": "Organisation.Balance",
            "action": "Get"
        },
        {
            "resource": "PaymentOption",
            "action": "Create"
        },
        {
            "resource": "Organisation.BillingConfig",
            "action": "Update"
        },
        {
            "resource": "Organisation.My.Currency",
            "action": "Update"
        },
        {
            "resource": "Organisation.Billing",
            "action": "Get"
        },
        {
            "resource": "Organisation.Invoice",
            "action": "List"
        },
        {
            "resource": "Organisation.Invoice.Payment",
            "action": "Create"
        }
    ]
}
headers = {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

**`Finance`**

```javascript Finance
const url = 'https://cdn.emnify.net/api/v1/organisation/:orgId/role';
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: '{"name":"Finance","description":"Billing and reports, including payment methods and invoices. No device or SIM operations.","permissions":[{"resource":"Organisation.Stats","action":"Get"},{"resource":"Stats.Dashboard","action":"Get"},{"resource":"PaymentOption","action":"List"},{"resource":"Organisation.Balance","action":"Get"},{"resource":"PaymentOption","action":"Create"},{"resource":"Organisation.BillingConfig","action":"Update"},{"resource":"Organisation.My.Currency","action":"Update"},{"resource":"Organisation.Billing","action":"Get"},{"resource":"Organisation.Invoice","action":"List"},{"resource":"Organisation.Invoice.Payment","action":"Create"}]}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

**`Finance`**

```go Finance
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://cdn.emnify.net/api/v1/organisation/:orgId/role"

	payload := strings.NewReader("{\n  \"name\": \"Finance\",\n  \"description\": \"Billing and reports, including payment methods and invoices. No device or SIM operations.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Organisation.Stats\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Stats.Dashboard\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Balance\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.BillingConfig\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.My.Currency\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice.Payment\",\n      \"action\": \"Create\"\n    }\n  ]\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Authorization", "Bearer <token>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

**`Finance`**

```ruby Finance
require 'uri'
require 'net/http'

url = URI("https://cdn.emnify.net/api/v1/organisation/:orgId/role")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"name\": \"Finance\",\n  \"description\": \"Billing and reports, including payment methods and invoices. No device or SIM operations.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Organisation.Stats\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Stats.Dashboard\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Balance\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.BillingConfig\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.My.Currency\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice.Payment\",\n      \"action\": \"Create\"\n    }\n  ]\n}"

response = http.request(request)
puts response.read_body
```

**`Finance`**

```java Finance
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.post("https://cdn.emnify.net/api/v1/organisation/:orgId/role")
  .header("Authorization", "Bearer <token>")
  .header("Content-Type", "application/json")
  .body("{\n  \"name\": \"Finance\",\n  \"description\": \"Billing and reports, including payment methods and invoices. No device or SIM operations.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Organisation.Stats\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Stats.Dashboard\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Balance\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.BillingConfig\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.My.Currency\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice.Payment\",\n      \"action\": \"Create\"\n    }\n  ]\n}")
  .asString();
```

**`Finance`**

```php Finance
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://cdn.emnify.net/api/v1/organisation/:orgId/role', [
  'body' => '{
  "name": "Finance",
  "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
  "permissions": [
    {
      "resource": "Organisation.Stats",
      "action": "Get"
    },
    {
      "resource": "Stats.Dashboard",
      "action": "Get"
    },
    {
      "resource": "PaymentOption",
      "action": "List"
    },
    {
      "resource": "Organisation.Balance",
      "action": "Get"
    },
    {
      "resource": "PaymentOption",
      "action": "Create"
    },
    {
      "resource": "Organisation.BillingConfig",
      "action": "Update"
    },
    {
      "resource": "Organisation.My.Currency",
      "action": "Update"
    },
    {
      "resource": "Organisation.Billing",
      "action": "Get"
    },
    {
      "resource": "Organisation.Invoice",
      "action": "List"
    },
    {
      "resource": "Organisation.Invoice.Payment",
      "action": "Create"
    }
  ]
}',
  'headers' => [
    'Authorization' => 'Bearer <token>',
    'Content-Type' => 'application/json',
  ],
]);

echo $response->getBody();
```

**`Finance`**

```csharp Finance
using RestSharp;

var client = new RestClient("https://cdn.emnify.net/api/v1/organisation/:orgId/role");
var request = new RestRequest(Method.POST);
request.AddHeader("Authorization", "Bearer <token>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"name\": \"Finance\",\n  \"description\": \"Billing and reports, including payment methods and invoices. No device or SIM operations.\",\n  \"permissions\": [\n    {\n      \"resource\": \"Organisation.Stats\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Stats.Dashboard\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Balance\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"PaymentOption\",\n      \"action\": \"Create\"\n    },\n    {\n      \"resource\": \"Organisation.BillingConfig\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.My.Currency\",\n      \"action\": \"Update\"\n    },\n    {\n      \"resource\": \"Organisation.Billing\",\n      \"action\": \"Get\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice\",\n      \"action\": \"List\"\n    },\n    {\n      \"resource\": \"Organisation.Invoice.Payment\",\n      \"action\": \"Create\"\n    }\n  ]\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

**`Finance`**

```swift Finance
import Foundation

let headers = [
  "Authorization": "Bearer <token>",
  "Content-Type": "application/json"
]
let parameters = [
  "name": "Finance",
  "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
  "permissions": [
    [
      "resource": "Organisation.Stats",
      "action": "Get"
    ],
    [
      "resource": "Stats.Dashboard",
      "action": "Get"
    ],
    [
      "resource": "PaymentOption",
      "action": "List"
    ],
    [
      "resource": "Organisation.Balance",
      "action": "Get"
    ],
    [
      "resource": "PaymentOption",
      "action": "Create"
    ],
    [
      "resource": "Organisation.BillingConfig",
      "action": "Update"
    ],
    [
      "resource": "Organisation.My.Currency",
      "action": "Update"
    ],
    [
      "resource": "Organisation.Billing",
      "action": "Get"
    ],
    [
      "resource": "Organisation.Invoice",
      "action": "List"
    ],
    [
      "resource": "Organisation.Invoice.Payment",
      "action": "Create"
    ]
  ]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://cdn.emnify.net/api/v1/organisation/:orgId/role")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

#### finance.json (10 permissions)

```json
{
  "name": "Finance",
  "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
  "permissions": [
    { "resource": "Organisation.Stats", "action": "Get" },
    { "resource": "Stats.Dashboard", "action": "Get" },
    { "resource": "PaymentOption", "action": "List" },
    { "resource": "Organisation.Balance", "action": "Get" },
    { "resource": "PaymentOption", "action": "Create" },
    { "resource": "Organisation.BillingConfig", "action": "Update" },
    { "resource": "Organisation.My.Currency", "action": "Update" },
    { "resource": "Organisation.Billing", "action": "Get" },
    { "resource": "Organisation.Invoice", "action": "List" },
    { "resource": "Organisation.Invoice.Payment", "action": "Create" }
  ]
}
```

> **Note**
>
> The credit limit appears on **Billing** without an extra permission, on postpaid Workspaces that have a monthly cost limit set.

## Actions that share a permission

Two actions stay available to Device Manager even though the template aims to withhold them.
Both are guarded by the same permissions the role needs for everyday work, so the permission model can't separate them:

* **Edit IP** on device details shares `Endpoint` + `Update` and `IpAddressSpace` + `List`.
* **Release SIM** shares `Endpoint` + `Update`, `Sim` + `Update`, and `Endpoint` + `Get`.

Removing those write permissions does block both actions, but it also stops the role from creating devices and assigning SIMs.

## Verify what a role grants

To review a template after you create it, [list your roles](/developers/api-guidelines/manage-permissions#assign-a-role-to-a-user).
To check the result from a user's side, sign in as someone holding the role and [check your own permissions](/developers/api-guidelines/manage-permissions#check-your-own-permissions).

For how permissions work, see [Permissions](/developers/api-guidelines/permissions).
For the full create, update, and assign reference, see [Manage roles and permissions](/developers/api-guidelines/manage-permissions).