Vendure · Capability

Vendure Shop API — Customer

Vendure Shop API capability for customer registration, login, account management, and addresses. Backed by the Shop GraphQL endpoint.

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

The capability includes 1 read-only operation and 8 state-changing operations. Lead operation: Register a new customer account. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include Vendure, Shop, Customer, and Account.

Run with Naftiko VendureShopCustomerAccount

What You Can Do

POST
Registercustomeraccount
/v1/customer/register
POST
Login
/v1/customer/login
POST
Logout
/v1/customer/logout
POST
Queryactivecustomer
/v1/customer/me
POST
Updatecustomer
/v1/customer/update
POST
Requestpasswordreset
/v1/customer/password/reset-request
POST
Resetpassword
/v1/customer/password/reset
POST
Createcustomeraddress
/v1/customer/address
POST
Updatecustomeraddress
/v1/customer/address-update

MCP Tools

vendure-shop-register-customer

Register a new customer account.

vendure-shop-login

Log in a customer.

vendure-shop-logout

Log out the current customer.

idempotent
vendure-shop-get-active-customer

Read the authenticated customer profile.

read-only idempotent
vendure-shop-update-customer

Update the authenticated customer profile.

idempotent
vendure-shop-request-password-reset

Request a password reset by email.

vendure-shop-reset-password

Reset the customer password using a token.

vendure-shop-create-address

Create a customer address.

vendure-shop-update-address

Update a customer address.

idempotent

Capability Spec

shop-customer.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: Vendure Shop API — Customer
  description: >-
    Vendure Shop API capability for customer registration, login, account
    management, and addresses. Backed by the Shop GraphQL endpoint.
  tags:
    - Vendure
    - Shop
    - Customer
    - Account
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
  - namespace: env
    keys:
      VENDURE_SHOP_API_URL: VENDURE_SHOP_API_URL
      VENDURE_AUTH_TOKEN: VENDURE_AUTH_TOKEN
capability:
  consumes:
    - type: http
      namespace: shop-customer
      baseUri: '{{env.VENDURE_SHOP_API_URL}}'
      description: Vendure Shop GraphQL endpoint for customer operations.
      resources:
        - name: shop-graphql
          path: /
          operations:
            - name: registerCustomerAccount
              method: POST
              description: Register a new customer account.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: login
              method: POST
              description: Authenticate a customer via the NATIVE auth strategy.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: logout
              method: POST
              description: Terminate the current customer session.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: queryActiveCustomer
              method: POST
              description: Read the authenticated customer profile.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: updateCustomer
              method: POST
              description: Update the authenticated customer profile.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: requestPasswordReset
              method: POST
              description: Request a password reset token by email.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: resetPassword
              method: POST
              description: Reset the customer password using a token.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: createCustomerAddress
              method: POST
              description: Add an address to the customer account.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
            - name: updateCustomerAddress
              method: POST
              description: Update an address on the customer account.
              outputRawFormat: json
              outputParameters: [ { name: result, type: object, value: $. } ]
              inputParameters: [ { name: body, in: body, type: object, required: true } ]
      authentication:
        type: bearer
        token: '{{env.VENDURE_AUTH_TOKEN}}'
  exposes:
    - type: rest
      namespace: shop-customer-rest
      port: 8080
      description: REST adapter exposing customer operations.
      resources:
        - path: /v1/customer/register
          name: register
          operations:
            - method: POST
              name: registerCustomerAccount
              call: shop-customer.registerCustomerAccount
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/login
          name: login
          operations:
            - method: POST
              name: login
              call: shop-customer.login
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/logout
          name: logout
          operations:
            - method: POST
              name: logout
              call: shop-customer.logout
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/me
          name: me
          operations:
            - method: POST
              name: queryActiveCustomer
              call: shop-customer.queryActiveCustomer
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/update
          name: update
          operations:
            - method: POST
              name: updateCustomer
              call: shop-customer.updateCustomer
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/password/reset-request
          name: password-reset-request
          operations:
            - method: POST
              name: requestPasswordReset
              call: shop-customer.requestPasswordReset
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/password/reset
          name: password-reset
          operations:
            - method: POST
              name: resetPassword
              call: shop-customer.resetPassword
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/address
          name: address
          operations:
            - method: POST
              name: createCustomerAddress
              call: shop-customer.createCustomerAddress
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
        - path: /v1/customer/address-update
          name: address-update
          operations:
            - method: POST
              name: updateCustomerAddress
              call: shop-customer.updateCustomerAddress
              with: { body: rest.body }
              outputParameters: [ { type: object, mapping: $. } ]
    - type: mcp
      namespace: shop-customer-mcp
      port: 9090
      transport: http
      description: MCP adapter — one tool per customer operation.
      tools:
        - name: vendure-shop-register-customer
          description: Register a new customer account.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: shop-customer.registerCustomerAccount
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-login
          description: Log in a customer.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: shop-customer.login
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-logout
          description: Log out the current customer.
          hints: { readOnly: false, destructive: false, idempotent: true }
          call: shop-customer.logout
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-get-active-customer
          description: Read the authenticated customer profile.
          hints: { readOnly: true, destructive: false, idempotent: true }
          call: shop-customer.queryActiveCustomer
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-update-customer
          description: Update the authenticated customer profile.
          hints: { readOnly: false, destructive: false, idempotent: true }
          call: shop-customer.updateCustomer
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-request-password-reset
          description: Request a password reset by email.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: shop-customer.requestPasswordReset
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-reset-password
          description: Reset the customer password using a token.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: shop-customer.resetPassword
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-create-address
          description: Create a customer address.
          hints: { readOnly: false, destructive: false, idempotent: false }
          call: shop-customer.createCustomerAddress
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]
        - name: vendure-shop-update-address
          description: Update a customer address.
          hints: { readOnly: false, destructive: false, idempotent: true }
          call: shop-customer.updateCustomerAddress
          with: { body: tools.body }
          outputParameters: [ { type: object, mapping: $. } ]