> 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.

# Create a custom role

POST https://cdn.emnify.net/api/v1/organisation/{orgId}/role
Content-Type: application/json

Required permissions Beta [Learn more](/developers/api-guidelines/permissions#how-permissions-work)`Organisation.Role` + `Create`Roles: AdministratorCreates a custom role in the Workspace.
A Workspace can hold at most 50 custom roles, and the name must be unique within the Workspace.Supply permissions either as `permission_ids`, using numeric IDs, or as `permissions`, using resource and action pairs, but not both.
Retrieve the valid permissions with `GET /api/v1/organisation/{orgId}/permission`.Use `my` in place of a numeric `orgId` to target the caller's own Workspace.

Reference: https://docs.emnify.com/developers/api/permission-and-role-management/create-custom-role

## Authentication

- `Authorization` header (bearer token, required) — An `auth_token` should be provided to authenticate a session. To obtain an `auth_token`, see the [`/api/v1/authenticate` **POST** request](/developers/api/authentication/authenticate).

## Request

### Path parameters

- `orgId` (ApiV1OrganisationOrgIdRolePostParametersOrgId, required) — Workspace identifier. Either a positive integer organization ID, or the literal string `my` to target the caller's own Workspace.

### Body (application/json)

This endpoint expects a CreateCustomRoleInputDto.

- `name` (string, required) — Unique role name within the Workspace. Use letters, digits, spaces, dashes, underscores, ampersands, apostrophes, and parentheses. Leading and trailing whitespace is trimmed before validation and storage.
- `description` (string, optional, nullable) — Optional free-text description of the role. Omit it or pass `null` to store an empty string. When provided, it must be 2 to 250 characters. Leading and trailing whitespace is trimmed before validation and storage.
- `permission_ids` (list of double, optional, default: []) — IDs of permissions to assign. May be empty, and mutually exclusive with `permissions`. Deprecated or deleted permissions are rejected. Omit the field to send no value, because an explicit `null` is rejected.
- `permissions` (list of PermissionRefInputDto, optional) — Resource and action pairs of permissions to assign, resolved to permission IDs on the server. Mutually exclusive with `permission_ids`. Deprecated or deleted permissions are rejected. Omit the field to send no value, because an explicit `null` is rejected.

## Response

### 201

Successful response.

- `id` (double, required) — Unique role identifier.
- `name` (string, required) — Display name of the role.
- `name_translation_key` (string, required, nullable) — Translation key for the role name. Set for system roles only.
- `description` (string, required) — Human-readable description of the role. An empty string when no description has been set.
- `description_translation_key` (string, required, nullable) — Translation key for the role description. Set for system roles only.
- `user_count` (double, required) — Number of users assigned to this role in the Workspace.
- `type` (enum, required) — Whether this is a system-defined role or an organization's custom role.
  - Allowed values: `system`, `custom`
- `is_system_role` (boolean, required) — True for built-in system roles, which can't be modified or deleted.
- `permissions` (list of RolePermissionOutputDto, optional) — Full list of permissions assigned to this role.

## Errors

### 400 Bad Request Error

Validation error. For example, an invalid name or description, or a referenced permission that isn't available to the Workspace's organization type. Supplying both `permission_ids` and `permissions` in the same request is also rejected, because the two fields are mutually exclusive.

- `status_code` (integer, optional)
- `message` (string, optional)

### 403 Forbidden Error

Custom role creation isn't available for the organization, or the user doesn't have the required permissions.

- `status_code` (integer, optional)
- `message` (string, optional)

### 409 Conflict Error

A role with this name already exists in the Workspace.

- `error_code` (integer, optional)
- `error_token` (string, optional)
- `message` (string, optional)

### 422 Unprocessable Entity Error

Business rule violation. For example, the limit of 50 custom roles is reached, or `permission_ids` or `permissions` references a permission that is unknown, deprecated, deleted, or granted globally.

- `status_code` (integer, optional)
- `message` (string, optional)

## Types

### PermissionRefInputDto

- `resource` (string, required) — Resource the permission applies to.
- `action` (string, required) — Action the permission grants on the resource.

### ApiV1OrganisationOrgIdRolePostParametersOrgId

### RolePermissionOutputDto

- `id` (double, required) — Unique permission identifier.
- `resource` (string, required) — Resource the permission applies to.
- `action` (string, required) — Action the permission grants on the resource.

## Examples

### Procurement

**Request**

```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"
    }
  ]
}
```

**Response**

```json
{
  "id": 102,
  "name": "Procurement",
  "name_translation_key": null,
  "description": "Orders SIMs and registers them into the Workspace. No device operations, reports, or billing.",
  "description_translation_key": null,
  "user_count": 0,
  "type": "custom",
  "is_system_role": false
}
```

**SDK Code**

```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())
```

```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);
}
```

```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))

}
```

```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
```

```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();
```

```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();
```

```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);
```

```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()
```

### Device Manager

**Request**

```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"
    }
  ]
}
```

**Response**

```json
{
  "id": 103,
  "name": "Device Manager",
  "name_translation_key": null,
  "description": "Day-to-day device and SIM management. No cost data, deletion, transfer, or ordering.",
  "description_translation_key": null,
  "user_count": 0,
  "type": "custom",
  "is_system_role": false
}
```

**SDK Code**

```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())
```

```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);
}
```

```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))

}
```

```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
```

```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();
```

```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();
```

```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);
```

```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()
```

### Finance

**Request**

```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"
    }
  ]
}
```

**Response**

```json
{
  "id": 104,
  "name": "Finance",
  "name_translation_key": null,
  "description": "Billing and reports, including payment methods and invoices. No device or SIM operations.",
  "description_translation_key": null,
  "user_count": 0,
  "type": "custom",
  "is_system_role": false
}
```

**SDK Code**

```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())
```

```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);
}
```

```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))

}
```

```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
```

```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();
```

```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();
```

```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);
```

```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()
```