Skip to main content
POST
/
v1
/
organizations
/
{organizationId}
/
roles
Create Role
curl --request POST \
  --url https://api.example.com/v1/organizations/{organizationId}/roles \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "description": "<string>",
  "permissions": {}
}
'

Path Parameters

organizationId
string
required
Organization ID

Request Body

name
string
required
Role name (must be unique within organization)
description
string
Role description
permissions
object
required
Permission settings for each resource type

Example Request

{
  "name": "content-writer",
  "description": "Can create and edit content drafts without publishing",
  "permissions": {
    "organizations": {
      "read": true,
      "update": false,
      "delete": false
    },
    "projects": {
      "create": false,
      "read": true,
      "update": false,
      "delete": false
    },
    "users": {
      "create": false,
      "read": false,
      "update": false,
      "delete": false
    },
    "roles": {
      "create": false,
      "read": false,
      "update": false,
      "delete": false
    },
    "apiKeys": {
      "create": false,
      "read": false,
      "update": false,
      "delete": false
    },
    "components": {
      "create": false,
      "read": true,
      "update": false,
      "delete": false
    },
    "packages": {
      "create": false,
      "read": true,
      "update": false,
      "delete": false
    },
    "contentTypes": {
      "create": false,
      "read": true,
      "update": false,
      "publish": false,
      "delete": false
    },
    "content": {
      "create": true,
      "read": true,
      "update": true,
      "publish": false,
      "delete": false
    },
    "assets": {
      "create": true,
      "read": true,
      "update": false,
      "delete": false
    }
  }
}

Response

Returns the created Role object.
{
  "id": "role789",
  "name": "content-writer",
  "description": "Can create and edit content drafts without publishing",
  "permissions": {
    "organizations": { "read": true, "update": false, "delete": false },
    "content": { "create": true, "read": true, "update": true, "publish": false, "delete": false }
  },
  "createdAt": "2024-03-22T10:00:00Z",
  "updatedAt": "2024-03-22T10:00:00Z"
}

Error Responses

Role Name Already Exists

{
  "error": {
    "code": "ROLE_NAME_EXISTS",
    "message": "A role with this name already exists",
    "details": {
      "name": "content-writer"
    }
  }
}

Code Examples

curl -X POST "https://api.metabind.ai/v1/organizations/org123/roles" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "content-writer",
    "description": "Can create and edit content",
    "permissions": {
      "organizations": { "read": true, "update": false, "delete": false },
      "projects": { "create": false, "read": true, "update": false, "delete": false },
      "content": { "create": true, "read": true, "update": true, "publish": false, "delete": false },
      "assets": { "create": true, "read": true, "update": false, "delete": false }
    }
  }'