openapi: 3.1.0 info: title: Shopware Admin 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 externalDocs: description: Full interactive specification (Stoplight) url: https://shopware.stoplight.io/docs/admin-api 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 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' /order: get: operationId: listOrders summary: List orders description: Returns a paginated list of orders. tags: - Order parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Paginated list of orders content: application/json: schema: $ref: '#/components/schemas/OrderListResponse' '401': $ref: '#/components/responses/Unauthorized' /order/{id}: get: operationId: getOrder summary: Get an order description: Returns a single order by ID. tags: - Order parameters: - name: id in: path required: true schema: type: string pattern: '^[0-9a-f]{32}$' responses: '200': description: Order detail content: application/json: schema: $ref: '#/components/schemas/OrderResponse' '404': $ref: '#/components/responses/NotFound' /customer: get: operationId: listCustomers summary: List customers description: Returns a paginated list of customers. tags: - Customer parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Paginated list of customers content: application/json: schema: $ref: '#/components/schemas/CustomerListResponse' '401': $ref: '#/components/responses/Unauthorized' /category: get: operationId: listCategories summary: List categories description: Returns a paginated list of product categories. tags: - Category parameters: - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Paginated list of categories content: application/json: schema: $ref: '#/components/schemas/CategoryListResponse' '401': $ref: '#/components/responses/Unauthorized' /search/product: post: operationId: searchProducts summary: Search products description: Full-featured product search with filter, sort, aggregation support. tags: - Product - Search requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/SearchCriteria' responses: '200': description: Search results content: application/json: schema: $ref: '#/components/schemas/ProductListResponse' /_action/sync: post: operationId: syncEntities summary: Bulk sync entities description: >- Synchronises multiple entity operations (upsert / delete) in a single request. Ideal for bulk imports. tags: - Bulk requestBody: required: true content: application/json: schema: type: array items: $ref: '#/components/schemas/SyncOperation' responses: '200': description: Sync result summary content: application/json: schema: $ref: '#/components/schemas/SyncResult' '400': $ref: '#/components/responses/BadRequest' components: 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 parameters: 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 responses: 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' NotFound: description: Resource not found content: application/json: schema: $ref: '#/components/schemas/ErrorResponse' schemas: 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 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 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 Order: type: object description: Shopware order entity (since version 6.0.0.0) required: - id - billingAddressId - currencyId - languageId - salesChannelId - orderDateTime - currencyFactor - stateId - itemRounding - totalRounding properties: id: type: string pattern: '^[0-9a-f]{32}$' description: Unique identity of order orderNumber: type: string description: Unique number associated with every order billingAddressId: type: string pattern: '^[0-9a-f]{32}$' currencyId: type: string pattern: '^[0-9a-f]{32}$' salesChannelId: type: string pattern: '^[0-9a-f]{32}$' orderDateTime: type: string format: date-time amountTotal: type: number format: float description: Total order amount including tax amountNet: type: number format: float description: Net order amount positionPrice: type: number format: float stateId: type: string pattern: '^[0-9a-f]{32}$' description: Current workflow state ID createdAt: type: string format: date-time readOnly: true updatedAt: type: string format: date-time readOnly: true Customer: type: object description: Shopware customer entity properties: id: type: string pattern: '^[0-9a-f]{32}$' email: type: string format: email firstName: type: string lastName: type: string customerNumber: type: string active: type: boolean guest: type: boolean createdAt: type: string format: date-time readOnly: true Category: type: object description: Shopware product category entity properties: id: type: string pattern: '^[0-9a-f]{32}$' parentId: type: string pattern: '^[0-9a-f]{32}$' name: type: string active: type: boolean visible: type: boolean type: type: string enum: - page - link - folder level: type: integer path: type: string 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 SyncOperation: type: object description: A single sync payload entry for bulk operations required: - action - entity - payload properties: action: type: string enum: - upsert - delete entity: type: string example: product payload: type: array items: type: object SyncResult: type: object properties: success: type: boolean data: type: object ProductListResponse: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/Product' ProductResponse: type: object properties: data: $ref: '#/components/schemas/Product' OrderListResponse: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/Order' OrderResponse: type: object properties: data: $ref: '#/components/schemas/Order' CustomerListResponse: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/Customer' CategoryListResponse: type: object properties: total: type: integer data: type: array items: $ref: '#/components/schemas/Category' ErrorResponse: type: object properties: errors: type: array items: type: object properties: code: type: string status: type: string title: type: string detail: type: string tags: - name: Product description: Create, read, update, and delete products and variants - name: Order description: Access and manage orders and their line items - name: Customer description: Manage customer accounts and addresses - name: Category description: Manage the product category tree - name: Search description: DAL-powered search with filter, sort, and aggregation - name: Bulk description: High-throughput bulk upsert and delete operations