Novu · Capability

Novu API — Layouts

Notifications — Layouts. 8 operations. Lead operation: Create a Layout. Self-contained Naftiko capability covering one Novu business surface.

Novu API — Layouts is a Naftiko capability published by Novu, one of 16 capabilities the APIs.io network indexes for this provider. It bundles 8 operations across the POST, GET, PUT, and DELETE methods rooted at /v2/layouts.

The capability includes 3 read-only operations and 5 state-changing operations. Lead operation: Novu Create a Layout. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Novu, Notifications, and Layouts.

Run with Naftiko NovuNotificationsLayouts

What You Can Do

POST
Layoutscontroller_create — Novu Create a Layout
/v2/layouts
GET
Layoutscontroller_list — Novu List All Layouts
/v2/layouts
PUT
Layoutscontroller_update — Novu Update a Layout
/v2/layouts/{layoutId}
GET
Layoutscontroller_get — Novu Retrieve a Layout
/v2/layouts/{layoutId}
DELETE
Layoutscontroller__delete — Novu Delete a Layout
/v2/layouts/{layoutId}
POST
Layoutscontroller_duplicate — Novu Duplicate a Layout
/v2/layouts/{layoutId}/duplicate
POST
Layoutscontroller_generatepreview — Novu Generate Layout Preview
/v2/layouts/{layoutId}/preview
GET
Layoutscontroller_getusage — Novu Get Layout Usage
/v2/layouts/{layoutId}/usage

MCP Tools

create-layout

Novu Create a Layout

list-all-layouts

Novu List All Layouts

read-only idempotent
update-layout

Novu Update a Layout

idempotent
retrieve-layout

Novu Retrieve a Layout

read-only idempotent
delete-layout

Novu Delete a Layout

idempotent
duplicate-layout

Novu Duplicate a Layout

generate-layout-preview

Novu Generate Layout Preview

get-layout-usage

Novu Get Layout Usage

read-only idempotent

Capability Spec

novu-layouts.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Novu API — Layouts
  description: 'Notifications — Layouts. 8 operations. Lead operation: Create a Layout. Self-contained Naftiko capability covering one Novu business surface.'
  tags:
  - Novu
  - Notifications
  - Layouts
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    NOVU_API_KEY: NOVU_API_KEY
capability:
  consumes:
  - type: http
    namespace: novu-layouts
    baseUri: https://api.novu.co
    description: Novu REST API — Layouts business capability. Self-contained, no shared references.
    authentication:
      type: apikey
      key: Authorization
      value: '{{env.NOVU_API_KEY}}'
      placement: header
    resources:
    - name: v2-layouts
      path: /v2/layouts
      operations:
      - name: LayoutsController_create
        method: POST
        description: Novu Create a Layout
        inputParameters:
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: LayoutsController_list
        method: GET
        description: Novu List All Layouts
        inputParameters:
        - name: limit
          in: query
          type: number
          required: false
          description: Number of items to return per page
        - name: offset
          in: query
          type: number
          required: false
          description: Number of items to skip before starting to return results
        - name: orderDirection
          in: query
          type: string
          required: false
          description: Direction of sorting
        - name: orderBy
          in: query
          type: string
          required: false
          description: Field to sort the results by
        - name: query
          in: query
          type: string
          required: false
          description: Search query to filter layouts
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v2-layouts-layoutid
      path: /v2/layouts/{layoutId}
      operations:
      - name: LayoutsController_update
        method: PUT
        description: Novu Update a Layout
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: layoutId
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: LayoutsController_get
        method: GET
        description: Novu Retrieve a Layout
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: layoutId
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: LayoutsController__delete
        method: DELETE
        description: Novu Delete a Layout
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: The unique identifier of the layout
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v2-layouts-layoutid-duplicate
      path: /v2/layouts/{layoutId}/duplicate
      operations:
      - name: LayoutsController_duplicate
        method: POST
        description: Novu Duplicate a Layout
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: layoutId
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v2-layouts-layoutid-preview
      path: /v2/layouts/{layoutId}/preview
      operations:
      - name: LayoutsController_generatePreview
        method: POST
        description: Novu Generate Layout Preview
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: layoutId
        - name: body
          in: body
          type: object
          required: true
          description: Request body payload
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: v2-layouts-layoutid-usage
      path: /v2/layouts/{layoutId}/usage
      operations:
      - name: LayoutsController_getUsage
        method: GET
        description: Novu Get Layout Usage
        inputParameters:
        - name: layoutId
          in: path
          type: string
          required: true
          description: layoutId
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    namespace: novu-layouts-rest
    port: 8080
    description: REST adapter for Novu API — Layouts. One Spectral-compliant resource per consumed operation.
    resources:
    - path: /v2/layouts
      name: v2-layouts
      description: REST surface for /v2/layouts.
      operations:
      - method: POST
        name: LayoutsController_create
        description: Novu Create a Layout
        call: novu-layouts.LayoutsController_create
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: LayoutsController_list
        description: Novu List All Layouts
        call: novu-layouts.LayoutsController_list
        with:
          limit: rest.limit
          offset: rest.offset
          orderDirection: rest.orderDirection
          orderBy: rest.orderBy
          query: rest.query
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/layouts/{layoutId}
      name: v2-layouts-layoutid
      description: REST surface for /v2/layouts/{layoutId}.
      operations:
      - method: PUT
        name: LayoutsController_update
        description: Novu Update a Layout
        call: novu-layouts.LayoutsController_update
        with:
          layoutId: rest.layoutId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
      - method: GET
        name: LayoutsController_get
        description: Novu Retrieve a Layout
        call: novu-layouts.LayoutsController_get
        with:
          layoutId: rest.layoutId
        outputParameters:
        - type: object
          mapping: $.
      - method: DELETE
        name: LayoutsController__delete
        description: Novu Delete a Layout
        call: novu-layouts.LayoutsController__delete
        with:
          layoutId: rest.layoutId
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/layouts/{layoutId}/duplicate
      name: v2-layouts-layoutid-duplicate
      description: REST surface for /v2/layouts/{layoutId}/duplicate.
      operations:
      - method: POST
        name: LayoutsController_duplicate
        description: Novu Duplicate a Layout
        call: novu-layouts.LayoutsController_duplicate
        with:
          layoutId: rest.layoutId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/layouts/{layoutId}/preview
      name: v2-layouts-layoutid-preview
      description: REST surface for /v2/layouts/{layoutId}/preview.
      operations:
      - method: POST
        name: LayoutsController_generatePreview
        description: Novu Generate Layout Preview
        call: novu-layouts.LayoutsController_generatePreview
        with:
          layoutId: rest.layoutId
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/layouts/{layoutId}/usage
      name: v2-layouts-layoutid-usage
      description: REST surface for /v2/layouts/{layoutId}/usage.
      operations:
      - method: GET
        name: LayoutsController_getUsage
        description: Novu Get Layout Usage
        call: novu-layouts.LayoutsController_getUsage
        with:
          layoutId: rest.layoutId
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: novu-layouts-mcp
    port: 9090
    transport: http
    description: MCP adapter for Novu API — Layouts. One tool per consumed operation, routed inline through this capability's consumes block.
    tools:
    - name: create-layout
      description: Novu Create a Layout
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: novu-layouts.LayoutsController_create
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: list-all-layouts
      description: Novu List All Layouts
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: novu-layouts.LayoutsController_list
      with:
        limit: tools.limit
        offset: tools.offset
        orderDirection: tools.orderDirection
        orderBy: tools.orderBy
        query: tools.query
      outputParameters:
      - type: object
        mapping: $.
    - name: update-layout
      description: Novu Update a Layout
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: novu-layouts.LayoutsController_update
      with:
        layoutId: tools.layoutId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: retrieve-layout
      description: Novu Retrieve a Layout
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: novu-layouts.LayoutsController_get
      with:
        layoutId: tools.layoutId
      outputParameters:
      - type: object
        mapping: $.
    - name: delete-layout
      description: Novu Delete a Layout
      hints:
        readOnly: false
        destructive: true
        idempotent: true
      call: novu-layouts.LayoutsController__delete
      with:
        layoutId: tools.layoutId
      outputParameters:
      - type: object
        mapping: $.
    - name: duplicate-layout
      description: Novu Duplicate a Layout
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: novu-layouts.LayoutsController_duplicate
      with:
        layoutId: tools.layoutId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: generate-layout-preview
      description: Novu Generate Layout Preview
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: novu-layouts.LayoutsController_generatePreview
      with:
        layoutId: tools.layoutId
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: get-layout-usage
      description: Novu Get Layout Usage
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: novu-layouts.LayoutsController_getUsage
      with:
        layoutId: tools.layoutId
      outputParameters:
      - type: object
        mapping: $.