Vendure · Capability

Vendure Admin API — Catalog

Vendure Admin API capability for the catalogue surface: products, variants, options, option groups, collections, facets, and assets. Backed by the Admin GraphQL endpoint (`POST /admin-api`). Requires an administrator with the relevant ReadCatalog/UpdateCatalog permissions.

Vendure Admin API — Catalog is a Naftiko capability published by Vendure, one of 10 capabilities the APIs.io network indexes for this provider. It bundles 10 operations across the POST method rooted at /v1/admin.

The capability includes 4 read-only operations and 6 state-changing operations. Lead operation: List products in the catalog. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Vendure, Admin, Catalog, Products, and Collections.

Run with Naftiko VendureAdminCatalogProductsCollections

What You Can Do

POST
Queryproducts
/v1/admin/products/query
POST
Queryproduct
/v1/admin/product/query
POST
Createproduct
/v1/admin/product/create
POST
Updateproduct
/v1/admin/product/update
POST
Deleteproduct
/v1/admin/product/delete
POST
Createproductvariants
/v1/admin/variants/create
POST
Updateproductvariants
/v1/admin/variants/update
POST
Querycollections
/v1/admin/collections/query
POST
Createcollection
/v1/admin/collection/create
POST
Queryfacets
/v1/admin/facets/query

MCP Tools

vendure-admin-list-products

List products in the catalog.

read-only idempotent
vendure-admin-get-product

Get a product by id or slug.

read-only idempotent
vendure-admin-create-product

Create a product.

vendure-admin-update-product

Update a product.

idempotent
vendure-admin-delete-product

Delete a product.

idempotent
vendure-admin-create-variants

Create product variants.

vendure-admin-update-variants

Update product variants.

idempotent
vendure-admin-list-collections

List collections.

read-only idempotent
vendure-admin-create-collection

Create a collection.

vendure-admin-list-facets

List facets.

read-only idempotent

Capability Spec

admin-catalog.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Vendure Admin API — Catalog
  description: >-
    Vendure Admin API capability for the catalogue surface: products,
    variants, options, option groups, collections, facets, and assets.
    Backed by the Admin GraphQL endpoint (`POST /admin-api`). Requires an
    administrator with the relevant ReadCatalog/UpdateCatalog permissions.
  tags:
    - Vendure
    - Admin
    - Catalog
    - Products
    - Collections
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
  - namespace: env
    keys:
      VENDURE_ADMIN_API_URL: VENDURE_ADMIN_API_URL
      VENDURE_ADMIN_TOKEN: VENDURE_ADMIN_TOKEN
      VENDURE_CHANNEL_TOKEN: VENDURE_CHANNEL_TOKEN
capability:
  consumes:
    - type: http
      namespace: admin-catalog
      baseUri: '{{env.VENDURE_ADMIN_API_URL}}'
      description: Vendure Admin GraphQL endpoint for catalogue operations.
      resources:
        - name: admin-graphql
          path: /
          operations:
            - name: queryProducts
              method: POST
              description: List products.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: queryProduct
              method: POST
              description: Get a product by id or slug.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: createProduct
              method: POST
              description: Create a product.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: updateProduct
              method: POST
              description: Update a product.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: deleteProduct
              method: POST
              description: Delete a product.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: createProductVariants
              method: POST
              description: Create product variants.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: updateProductVariants
              method: POST
              description: Update product variants.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: queryCollections
              method: POST
              description: List collections.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: createCollection
              method: POST
              description: Create a collection.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: queryFacets
              method: POST
              description: List facets.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
      authentication:
        type: bearer
        token: '{{env.VENDURE_ADMIN_TOKEN}}'
  exposes:
    - type: rest
      namespace: admin-catalog-rest
      port: 8080
      description: REST adapter exposing Admin catalog operations.
      resources:
        - path: /v1/admin/products/query
          name: products
          operations:
            - { method: POST, name: queryProducts, call: admin-catalog.queryProducts, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/product/query
          name: product
          operations:
            - { method: POST, name: queryProduct, call: admin-catalog.queryProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/product/create
          name: product-create
          operations:
            - { method: POST, name: createProduct, call: admin-catalog.createProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/product/update
          name: product-update
          operations:
            - { method: POST, name: updateProduct, call: admin-catalog.updateProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/product/delete
          name: product-delete
          operations:
            - { method: POST, name: deleteProduct, call: admin-catalog.deleteProduct, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/variants/create
          name: variants-create
          operations:
            - { method: POST, name: createProductVariants, call: admin-catalog.createProductVariants, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/variants/update
          name: variants-update
          operations:
            - { method: POST, name: updateProductVariants, call: admin-catalog.updateProductVariants, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/collections/query
          name: collections
          operations:
            - { method: POST, name: queryCollections, call: admin-catalog.queryCollections, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/collection/create
          name: collection-create
          operations:
            - { method: POST, name: createCollection, call: admin-catalog.createCollection, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - path: /v1/admin/facets/query
          name: facets
          operations:
            - { method: POST, name: queryFacets, call: admin-catalog.queryFacets, with: { body: rest.body }, outputParameters: [ { type: object, mapping: $. } ] }
    - type: mcp
      namespace: admin-catalog-mcp
      port: 9090
      transport: http
      description: MCP adapter — one tool per Admin catalog operation.
      tools:
        - { name: vendure-admin-list-products, description: List products in the catalog., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryProducts, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-get-product, description: Get a product by id or slug., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-create-product, description: Create a product., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-update-product, description: Update a product., hints: { readOnly: false, destructive: false, idempotent: true }, call: admin-catalog.updateProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-delete-product, description: Delete a product., hints: { readOnly: false, destructive: true, idempotent: true }, call: admin-catalog.deleteProduct, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-create-variants, description: Create product variants., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createProductVariants, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-update-variants, description: Update product variants., hints: { readOnly: false, destructive: false, idempotent: true }, call: admin-catalog.updateProductVariants, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-list-collections, description: List collections., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryCollections, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-create-collection, description: Create a collection., hints: { readOnly: false, destructive: false, idempotent: false }, call: admin-catalog.createCollection, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }
        - { name: vendure-admin-list-facets, description: List facets., hints: { readOnly: true, destructive: false, idempotent: true }, call: admin-catalog.queryFacets, with: { body: tools.body }, outputParameters: [ { type: object, mapping: $. } ] }