openapi: 3.1.0 info: title: Magento REST Authentication Products API description: 'The Adobe Commerce (Magento) REST API provides a comprehensive set of endpoints for interacting with all major aspects of an e-commerce store, including catalog management, orders, customers, inventory, shipping, and payments. It supports three authentication mechanisms: OAuth 1.0a for third-party integrations, token-based authentication for mobile apps and administrators, and guest access for select public endpoints. The API follows REST conventions and returns JSON responses, enabling developers to build integrations, automate store operations, and power headless commerce storefronts. All endpoints are versioned under the /V1 prefix and support searchCriteria query parameters for filtering, sorting, and paginating collection responses.' version: '2.4' contact: name: Adobe Commerce Developer Support url: https://developer.adobe.com/commerce/webapi/rest/ termsOfService: https://www.adobe.com/legal/terms.html servers: - url: https://{store_domain}/rest/{store_code} description: Production Server variables: store_domain: default: your-store.example.com description: The hostname of your Adobe Commerce store store_code: default: V1 description: Store code followed by API version. Use "all" as store code for admin-scope operations, or the specific store view code for store-scoped operations. The V1 version path segment follows. security: - bearerAuth: [] tags: - name: Products description: Catalog product management including creation, retrieval, update, and deletion of simple, configurable, virtual, bundled, and grouped products. Supports product attributes, media, pricing rules, and cross-sell links. paths: /V1/products: get: operationId: listProducts summary: List products description: Returns a paginated list of products matching the provided search criteria. Supports filtering by any product attribute, sorting by multiple fields, and pagination using currentPage and pageSize parameters within the searchCriteria object. Returns both product data and total count for pagination. tags: - Products parameters: - $ref: '#/components/parameters/searchCriteriaFilterGroups' - $ref: '#/components/parameters/searchCriteriaSortOrders' - $ref: '#/components/parameters/searchCriteriaPageSize' - $ref: '#/components/parameters/searchCriteriaCurrentPage' responses: '200': description: Paginated list of products content: application/json: schema: $ref: '#/components/schemas/ProductSearchResults' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createProduct summary: Create a product description: Creates a new catalog product. The product type is determined by the type_id field in the request body. Supported types include simple, configurable, virtual, downloadable, bundle, and grouped. Custom attributes can be included in the custom_attributes array using attribute codes defined in the catalog. tags: - Products requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProductRequest' responses: '200': description: Product created successfully content: application/json: schema: $ref: '#/components/schemas/Product' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /V1/products/{sku}: get: operationId: getProduct summary: Get product by SKU description: Retrieves a single product by its SKU identifier. Returns the full product object including all attributes, media gallery entries, tier prices, and extension attributes. SKUs containing forward slashes or other special characters must be URL-encoded. tags: - Products parameters: - $ref: '#/components/parameters/sku' responses: '200': description: Product object content: application/json: schema: $ref: '#/components/schemas/Product' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateProduct summary: Update a product description: Updates an existing product identified by its SKU. Only the fields included in the request body are updated; omitted fields retain their existing values. Custom attributes included in the custom_attributes array will overwrite existing attribute values. tags: - Products parameters: - $ref: '#/components/parameters/sku' requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProductRequest' responses: '200': description: Updated product object content: application/json: schema: $ref: '#/components/schemas/Product' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteProduct summary: Delete a product description: Permanently deletes a product from the catalog by its SKU. This operation cannot be undone. Associated product attributes, media, and tier prices are also removed. Products assigned to categories will be unassigned prior to deletion. tags: - Products parameters: - $ref: '#/components/parameters/sku' responses: '200': description: Product deleted successfully content: application/json: schema: type: boolean '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: parameters: searchCriteriaCurrentPage: name: searchCriteria[currentPage] in: query description: Page number to return. First page is 1. required: false schema: type: integer minimum: 1 searchCriteriaFilterGroups: name: searchCriteria[filter_groups][0][filters][0][field] in: query description: Field name to filter on. Multiple filter groups and filters can be specified using indexed array notation. Filters within a group are OR'd; filter groups themselves are AND'd. required: false schema: type: string searchCriteriaSortOrders: name: searchCriteria[sortOrders][0][field] in: query description: Field name to sort results by. Direction is set in the corresponding direction parameter. required: false schema: type: string sku: name: sku in: path description: The product SKU (Stock Keeping Unit) identifier. URL-encode special characters. required: true schema: type: string searchCriteriaPageSize: name: searchCriteria[pageSize] in: query description: Number of records to return per page. Default varies by resource. required: false schema: type: integer minimum: 1 maximum: 300 schemas: Product: type: object description: A catalog product in Adobe Commerce. properties: id: type: integer description: Numeric product entity ID assigned by Commerce. sku: type: string description: Stock Keeping Unit — the unique product identifier. name: type: string description: Display name of the product. attribute_set_id: type: integer description: ID of the attribute set applied to this product. price: type: number format: float description: Base price of the product. status: type: integer description: Product status. 1 = enabled, 2 = disabled. enum: - 1 - 2 visibility: type: integer description: Catalog visibility. 1 = not visible, 2 = catalog only, 3 = search only, 4 = catalog and search. enum: - 1 - 2 - 3 - 4 type_id: type: string description: Product type identifier. enum: - simple - configurable - virtual - downloadable - bundle - grouped created_at: type: string format: date-time description: ISO 8601 timestamp when the product was created. updated_at: type: string format: date-time description: ISO 8601 timestamp when the product was last updated. weight: type: number format: float description: Product weight used for shipping calculations. extension_attributes: type: object description: Extension attributes providing additional module-specific product data. custom_attributes: type: array description: Array of custom EAV attribute values for this product. items: $ref: '#/components/schemas/CustomAttribute' ProductRequest: type: object description: Request body for creating or updating a catalog product. required: - product properties: product: $ref: '#/components/schemas/Product' saveOptions: type: boolean description: Whether to save custom options alongside the product. CustomAttribute: type: object description: A key-value pair representing a custom EAV attribute on a catalog entity. required: - attribute_code - value properties: attribute_code: type: string description: The unique attribute code identifier. value: description: The attribute value. Can be a string, integer, or array depending on the attribute type. ProductSearchResults: type: object description: Paginated search results containing a list of products. properties: items: type: array description: Array of product objects matching the search criteria. items: $ref: '#/components/schemas/Product' search_criteria: type: object description: The search criteria applied to generate these results. total_count: type: integer description: Total number of products matching the search criteria across all pages. Error: type: object description: Standard error response returned for 4xx and 5xx responses. properties: message: type: string description: Human-readable error message. parameters: type: array description: Additional error context parameters. items: type: object responses: Unauthorized: description: Unauthorized — missing or invalid authentication token content: application/json: schema: $ref: '#/components/schemas/Error' BadRequest: description: Bad request — invalid input parameters or request body content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: Not found — the requested resource does not exist content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer description: Bearer token obtained from the /V1/integration/admin/token or /V1/integration/customer/token endpoint. Include in the Authorization header as "Bearer {token}". externalDocs: description: Adobe Commerce REST API Documentation url: https://developer.adobe.com/commerce/webapi/rest/