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: $. } ] }