Skip to content
Back to skills

Magento Api

ASecurity

Build Magento 2 REST and GraphQL APIs — webapi.xml, schema.graphqls, resolvers, authentication, and ACL. Use when creating custom API endpoints, extending the GraphQL schema, or integrating external systems.

  • 39 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 22, 2026
ai-agentsphpbashapiperformance

Works with

  • api

Security analysis

A100/100

Scanned September 22, 2026

npx -y skills add OrcaQubits/agentic-commerce-skills-plugins --skill magento-api --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Magento Api?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Magento Api
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/orcaqubits-magento-api-agentic-commerce-skills-plugin/badge)](https://www.skillsdirectory.com/skills/orcaqubits-magento-api-agentic-commerce-skills-plugin)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: magento-api
description: Build Magento 2 REST and GraphQL APIs — webapi.xml, schema.graphqls, resolvers, authentication, and ACL. Use when creating custom API endpoints, extending the GraphQL schema, or integrating external systems.
allowed-tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch, WebFetch
---

# Magento 2 REST & GraphQL API Development

## Before writing code

**Fetch live docs**:
1. Fetch `https://developer.adobe.com/commerce/webapi/` for Web API overview
2. Fetch `https://developer.adobe.com/commerce/webapi/graphql/develop/` for GraphQL development guide
3. Fetch `https://developer.adobe.com/commerce/webapi/get-started/` for authentication
4. Web-search `site:developer.adobe.com commerce php development components web-api` for webapi.xml reference

## REST API

### How It Works

REST endpoints map HTTP methods + URL paths to service contract methods. Defined in `etc/webapi.xml`.

### webapi.xml Structure

Each route defines:
- `url` — endpoint path (e.g., `/V1/custom/items/:id`)
- `method` — HTTP method (GET, POST, PUT, DELETE)
- `service` — class + method implementing the endpoint
- `resource` — ACL resource for authorization

Path parameters (`:id`) map to method parameters by name.

### Authentication Types

| Type | Header | Use Case |
|------|--------|----------|
| **Admin Token** | `Authorization: Bearer <token>` | Back-office integrations |
| **Customer Token** | `Authorization: Bearer <token>` | Customer-facing apps |
| **OAuth 1.0a** | OAuth headers | Third-party integrations |
| **Session** | PHP session cookie | Storefront JS widgets |
| **Anonymous** | `resource="anonymous"` | Public endpoints |

### Swagger/OpenAPI

Available at `/rest/<store>/schema` — auto-generated from webapi.xml and service contracts.

## GraphQL API

### How It Works

GraphQL uses a single endpoint (`/graphql`) with schema files and resolver classes.

### Schema Files (schema.graphqls)

Define types, queries, and mutations in `etc/schema.graphqls`:
- Custom types with fields
- Query definitions mapping to resolver classes
- Mutation definitions with input/output types
- Extend existing types with new fields

### Resolver Classes

Implement `Magento\Framework\GraphQl\Query\ResolverInterface`:
- `resolve(Field $field, $context, ResolveInfo $info, array $value = null, array $args = null)`
- Return arrays matching the GraphQL type definition
- Context provides store, customer, and extension attributes

### Identity for Cache

Implement `Magento\Framework\GraphQl\Query\Resolver\IdentityInterface` for full-page cache invalidation of GraphQL responses.

### GraphQL Authorization

- Customer context via `Authorization: Bearer <customer-token>` header
- Admin context not supported in GraphQL (by design — GraphQL is storefront-facing)
- Use `$context->getExtensionAttributes()->getIsCustomer()` for auth checks

## ACL (Access Control List)

### acl.xml

Defines the resource tree for authorization:
- Nested `<resource>` elements form a hierarchy
- Referenced in `webapi.xml` via `<resource ref="Vendor_Module::resource_name"/>`
- Special values: `anonymous` (no auth), `self` (customer's own data)

## Best Practices

- Always define service contract interfaces first, then expose via webapi.xml
- Use ACL resources for all non-public endpoints
- Prefer GraphQL for storefront/headless, REST for integrations
- Return proper HTTP status codes (200, 201, 400, 401, 403, 404)
- Use SearchCriteria for list endpoints
- Add cache identity classes for GraphQL resolver performance

Fetch the Web API and GraphQL development docs for exact XML schema, resolver signatures, and authentication patterns before implementing.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…