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

# Create a Role

> Creates a custom Role.



## OpenAPI

````yaml /en/openapi/v3-current/AM-identity.yaml post /v1/roles
openapi: 3.0.1
info:
  contact: {}
  description: This is a swagger documentation for the Identity API
  termsOfService: http://swagger.io/terms/
  title: Identity API
  version: 1.0.0
servers:
  - url: //localhost:4001/
security: []
paths:
  /v1/roles:
    post:
      tags:
        - Roles
      summary: Create a Role
      description: Creates a custom Role.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RoleInput'
        description: Role Input
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RoleResponse'
          description: Created
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pkg.HTTPError'
          description: Bad Request
        '409':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pkg.HTTPError'
          description: Conflict
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/pkg.HTTPError'
          description: Internal Server Error
      security:
        - BearerAuth: []
components:
  schemas:
    RoleInput:
      description: RoleInput payload
      example:
        displayName: Custom Editor
        name: custom-editor
        description: A custom editor role
      properties:
        description:
          description: Role's description.
          example: A custom editor role
          type: string
        displayName:
          description: Role's display name.
          example: Custom Editor
          type: string
        name:
          description: Role's unique identifier name.
          example: custom-editor
          type: string
      required:
        - displayName
        - name
      type: object
    RoleResponse:
      description: RoleResponse payload
      example:
        isSystem: false
        createdAt: '2026-06-24T10:00:00.000Z'
        isEnabled: true
        roles:
          - roles
          - roles
        name: Custom Editor
        description: A custom editor role
        groups:
          - groups
          - groups
        id: custom-editor
        users:
          - users
          - users
      properties:
        createdAt:
          example: '2026-06-24T10:00:00.000Z'
          type: string
        description:
          example: A custom editor role
          type: string
        groups:
          items:
            type: string
          type: array
        id:
          example: custom-editor
          type: string
        isEnabled:
          example: true
          type: boolean
        isSystem:
          description: >-
            Whether the role is a platform-managed system role, immutable
            through this API.

            Never omitempty: false must travel so a consumer does not read a
            missing key

            as "not a system role".
          example: false
          type: boolean
        name:
          example: Custom Editor
          type: string
        roles:
          items:
            type: string
          type: array
        users:
          items:
            type: string
          type: array
      type: object
    pkg.HTTPError:
      properties:
        code:
          type: string
        entityType:
          type: string
        err:
          type: object
        message:
          type: string
        title:
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      description: 'Bearer authentication. Send Authorization: Bearer <token>.'
      in: header
      name: Authorization
      type: apiKey

````