> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corebanq.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Create role

> Create a new role



## OpenAPI

````yaml post /v1/roles
openapi: 3.0.0
info:
  title: Roles API
  version: 1.0.0
  description: API for role-based access control (RBAC)
servers: []
security:
  - bearerAuth: []
tags:
  - name: Roles
    description: Role management operations
  - name: User Roles
    description: User-role management operations
paths:
  /v1/roles:
    post:
      tags:
        - Roles
      summary: Create role
      description: Create a new role
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRoleRequest'
      responses:
        '201':
          description: Role created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Role'
        '400':
          $ref: '#/components/responses/ValidationError'
        '409':
          $ref: '#/components/responses/DuplicateRole'
components:
  schemas:
    CreateRoleRequest:
      type: object
      required:
        - name
      properties:
        name:
          type: string
          minLength: 3
          maxLength: 50
          pattern: ^[a-zA-Z0-9_-]+$
        description:
          type: string
        active:
          type: boolean
          default: true
    Role:
      type: object
      required:
        - id
        - name
        - active
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        description:
          type: string
        active:
          type: boolean
        system:
          type: boolean
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
  responses:
    ValidationError:
      description: Invalid input
      content:
        application/json:
          schema:
            $ref: 7355f1ac-435b-4f39-bfee-138ac8037fb0
          example:
            code: roles.invalid_role_name
            message: Invalid role name
    DuplicateRole:
      description: Role already exists
      content:
        application/json:
          schema:
            $ref: 7355f1ac-435b-4f39-bfee-138ac8037fb0
          example:
            code: roles.duplicate_role
            message: Role already exists

````