openapi: 3.1.0 info: title: Shopware Admin Account Product API version: 6.7.9999999-dev description: The Shopware Admin API provides programmatic access to all back-office and administrative operations including product management, order processing, customer data, indexing, and configuration. It uses OAuth 2.0 authentication and covers 658 endpoints across the full Shopware data model. contact: name: Shopware Developer Documentation url: https://developer.shopware.com/docs/concepts/api/admin-api.html license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: https://{shopDomain}/api description: Self-hosted or SaaS Shopware instance Admin API variables: shopDomain: default: your-shop.example.com description: Hostname of the Shopware instance security: - oAuth2: - write:all tags: - name: Product description: Create, read, update, and delete products and variants paths: /product: get: operationId: listProducts summary: List products description: Returns a paginated list of products with basic information. tags: - Product parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Paginated list of products content: application/json: schema: $ref: '#/components/schemas/ProductListResponse' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createProduct summary: Create a product description: Creates a new product resource. tags: - Product requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProductCreate' responses: '200': description: Product created successfully content: application/json: schema: $ref: '#/components/schemas/ProductResponse' '400': $ref: '#/components/responses/BadRequest' '401': $ref: '#/components/responses/Unauthorized' /product/{id}: get: operationId: getProduct summary: Get a product description: Returns a single product by its identifier. tags: - Product parameters: - name: id in: path required: true schema: type: string pattern: ^[0-9a-f]{32}$ description: 32-character hex product ID responses: '200': description: Product detail content: application/json: schema: $ref: '#/components/schemas/ProductResponse' '404': $ref: '#/components/responses/NotFound' patch: operationId: updateProduct summary: Update a product description: Partially updates a product resource. tags: - Product parameters: - name: id in: path required: true schema: type: string pattern: ^[0-9a-f]{32}$ requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/ProductCreate' responses: '200': description: Product updated content: application/json: schema: $ref: '#/components/schemas/ProductResponse' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteProduct summary: Delete a product description: Deletes a product by ID. tags: - Product parameters: - name: id in: path required: true schema: type: string pattern: ^[0-9a-f]{32}$ responses: '204': description: Product deleted '404': $ref: '#/components/responses/NotFound' /search/product: post: operationId: searchProducts summary: Search products description: Full-featured product search with filter, sort, aggregation support. tags: - Product requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SearchCriteria' responses: '200': description: Search results content: application/json: schema: $ref: '#/components/schemas/ProductListResponse' /product/{productId}: get: operationId: getStoreProduct summary: Get a product description: Returns a single product by ID including all variants and media. tags: - Product parameters: - name: productId in: path required: true schema: type: string - $ref: '#/components/parameters/SwContextToken' responses: '200': description: Product detail content: application/json: schema: $ref: '#/components/schemas/ProductDetailResponse' '404': description: Product not found components: schemas: Price: type: object description: Currency-specific price entry required: - currencyId - gross - net - linked properties: currencyId: type: string pattern: ^[0-9a-f]{32}$ gross: type: number format: float description: Gross price (including tax) net: type: number format: float description: Net price (excluding tax) linked: type: boolean description: If true, net price is calculated from gross automatically listPrice: type: object description: Original / strike-through price properties: gross: type: number format: float net: type: number format: float linked: type: boolean SearchCriteria: type: object description: Shopware DAL search criteria properties: page: type: integer default: 1 limit: type: integer default: 25 filter: type: array items: type: object sort: type: array items: type: object properties: field: type: string order: type: string enum: - ASC - DESC aggregations: type: array items: type: object term: type: string description: Full-text search term includes: type: object description: Sparse fieldsets per entity ProductDetailResponse: type: object properties: product: $ref: '#/components/schemas/Product_2' configurator: type: array items: type: object Product_2: type: object properties: id: type: string productNumber: type: string name: type: string description: type: string active: type: boolean cover: type: object properties: id: type: string url: type: string calculatedPrice: $ref: '#/components/schemas/CalculatedPrice' calculatedListingPrice: type: object availableStock: type: integer CalculatedPrice: type: object properties: unitPrice: type: number format: float totalPrice: type: number format: float quantity: type: integer calculatedTaxes: type: array items: type: object properties: tax: type: number taxRate: type: number price: type: number taxRules: type: array items: type: object Product: type: object description: Shopware product entity (since version 6.0.0.0) required: - id - taxId - price - productNumber - stock - name properties: id: type: string pattern: ^[0-9a-f]{32}$ description: Unique identity of the product versionId: type: string pattern: ^[0-9a-f]{32}$ description: Unique identity of the product version parentId: type: string pattern: ^[0-9a-f]{32}$ description: Unique identity of the parent product (for variants) manufacturerId: type: string pattern: ^[0-9a-f]{32}$ description: Unique identity of the manufacturer taxId: type: string pattern: ^[0-9a-f]{32}$ description: Unique identity of tax productNumber: type: string description: SKU / unique product number stock: type: integer format: int64 description: Available stock quantity name: type: string description: Product name (translatable) description: type: string description: Long product description (HTML allowed, translatable) price: type: array items: $ref: '#/components/schemas/Price' description: Currency-specific prices active: type: boolean description: Whether the product is visible in the storefront ean: type: string description: EAN barcode markAsTopseller: type: boolean description: Flag to highlight as a bestseller weight: type: number format: float description: Product weight in kg width: type: number format: float description: Product width in mm height: type: number format: float description: Product height in mm length: type: number format: float description: Product length in mm isCloseout: type: boolean description: If true, product cannot be bought when out of stock createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string status: type: string title: type: string detail: type: string ProductCreate: type: object description: Payload for creating or updating a product required: - taxId - price - productNumber - stock - name properties: taxId: type: string pattern: ^[0-9a-f]{32}$ productNumber: type: string stock: type: integer format: int64 name: type: string description: type: string price: type: array items: $ref: '#/components/schemas/Price' active: type: boolean default: true ProductResponse: type: object properties: data: $ref: '#/components/schemas/Product' ProductListResponse: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/Product' responses: NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' Unauthorized: description: Authentication required or token expired content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' BadRequest: description: Validation errors in the request body content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' parameters: SwContextToken: name: sw-context-token in: header description: Customer session context token schema: type: string limit: name: limit in: query description: Maximum number of resources per page (default 25) schema: type: integer default: 25 maximum: 500 page: name: page in: query description: Page number (1-based) schema: type: integer default: 1 securitySchemes: oAuth2: type: oauth2 flows: clientCredentials: tokenUrl: /api/oauth/token scopes: write:all: Full write access to all Admin API resources password: tokenUrl: /api/oauth/token scopes: write:all: Full write access to all Admin API resources externalDocs: description: Full interactive specification (Stoplight) url: https://shopware.stoplight.io/docs/admin-api