Skip to main content

Overview

The create_organization_role function creates a new custom role for an organization.

Function Signature

pub async fn create_organization_role(
    organization_id: &str,
    request: CreateRoleRequest
) -> Result<OrganizationRole>

Parameters

organization_id
&str
required
The unique identifier of the organization
request
CreateRoleRequest
required
The role data for creation including:
  • name: Role name (required)
  • description: Role description (optional)
  • permissions: List of permissions (required)

Return Value

Returns Result<OrganizationRole> containing the created role details.

Basic Usage

use wacht::api::organizations::*;

let role_request = CreateRoleRequest {
    name: "Editor".to_string(),
    description: Some("Can edit organization content".to_string()),
    permissions: vec![
        "read:organization".to_string(),
        "write:organization".to_string(),
    ],
};

let role = create_organization_role("org_123", role_request).await?;
println!("Created role: {} with {} permissions", role.name, role.permissions.len());

Error Handling

match create_organization_role("org_123", request).await {
    Ok(role) => {
        println!("Successfully created role: {}", role.name);
        println!("Role ID: {}", role.id);
        println!("Permissions: {:?}", role.permissions);
    }
    Err(Error::Api { status, message, .. }) => {
        match status.as_u16() {
            404 => println!("Organization not found"),
            409 => println!("Role name already exists: {}", message),
            403 => println!("Access denied: {}", message),
            _ => println!("API error {}: {}", status, message),
        }
    }
    Err(e) => println!("Request failed: {}", e),
}

Rate Limits

  • Create operations: 20 requests per minute
  • Burst limit: 5 requests per second