openapi: 3.1.1 info: title: IKEA After Purchase Ordering API summary: Unofficial IKEA API for After Purchase Ordering (APO) of spare parts description: | This is an **unofficial** OpenAPI specification for the IKEA After Purchase Ordering (APO) API. ## FAQ **Q: Why is this API called After Purchase Ordering?** **A:** The URL(s) used have `apo` in the name. We are also dealing with after purchase replacement parts. A common term for this is After Purchase Ordering (APO). ## Swagger UI This API can be tested using swagger-ui at [./swagger-ui.html](swagger-ui.html) as long as the CORS header `Access-Control-Allow-Origin` are configured as `*`. At the moment of writing this is only the case for the [IKEA Search API](../search/index.html). ## Other APIs * [IKEA Product Catalog API](../product-catalog/index.html) * [IKEA Search API](../search/index.html) * [IKEA Sales Item API](../sales-item/index.html) * [IKEA After Purchase Ordering API](../after-purchase-ordering/index.html) ## ⚠️ Disclaimer * This project is based on publicly available information and analysis of network requests. * It is not affiliated with, endorsed by, or supported by IKEA. * Endpoints, schemas, and behaviors may change at any time and may not reflect official or supported APIs. * Use this specification at your own risk. ### See also This section lists resources used during the creation of these APIs to exent and check validity of the API. These are not in any special order but useful as references. * [OpenAPI Spec for api.salesitem.ingka.com](https://github.com/shrabdut123/cart-multi-agent/blob/a10dc96ac7a1fd98701afebe2cde585e6d9a6a08/service_coordinator_agent/salesitem_api.yaml#L13) - Very verbose OpenAPI Spec with detailed resources referring to inside IKEA knowledge. * [DavisChappins/ikeaStockChecker](https://github.com/DavisChappins/ikeaStockChecker/blob/45fa92f26ac2b37d03c37eb34e0c618c4a8477e8/ikea_stock_scanner.py#L11) - Use of `api.salesitem.ingka.com` endpoint. * [Mirzaei81/ikeaScraper](https://github.com/Mirzaei81/ikeaScraper/blob/cdeef5c9fb76660b18a8e569d7213828ffe5f9d2/app.py#L74) - Use of `api.salesitem.ingka.com` endpoint. * [Ephigenia/ikea-availability-checker/postman/schemas/ikea-ingka-api.yaml](https://github.com/Ephigenia/ikea-availability-checker/blob/c7fe2f9bc8306c01783f8d22329d34ed76a582c9/postman/schemas/ikea-ingka-api.yaml) - This contains resources related to the `api.salesitem.ingka.com` (Sales Item API) * [vrslev/ikea-api-client/src/ikea_api/endpoints/search.py](https://github.com/vrslev/ikea-api-client/blob/ce70c8d743302a465931bdb6a9f7b0bc5c1d882f/src/ikea_api/endpoints/search.py#L14C1-L14C117) - Use of the Search API and some other endpoints. version: 0.1.0 license: name: MIT License url: https://opensource.org/licenses/MIT contact: name: Unofficial IKEA OpenAPI Maintainer url: https://github.com/idelsink/ikea-openapi servers: - url: https://api.prod.apo.ingka.com description: Production (Cloudflare) - url: https://origin-api.prod.apo.ingka.com description: Production (Google Frontend) - url: https://api.test.apo.ingka.com description: Testing (Cloudflare) - url: https://origin-api.test.apo.ingka.com description: Testing (Google Frontend) tags: - name: Parts description: Everything about Parts paths: /part/{partId}: get: summary: IKEA Find Part by Id description: Returns a single replacement part operationId: getPartById tags: - Parts parameters: - $ref: '#/components/parameters/Accept-Language' - $ref: '#/components/parameters/partId' responses: '202': description: Part details content: application/json: schema: $ref: '#/components/schemas/Part' examples: GetPartById202Example: summary: Default getPartById 202 response value: itemId: '100001' partName: KEY HEXAGON 4MM SSH L48 ZN partDescription: S-SHAPE, WIDTH=20, LENGTH=48, HARDENED HRC 52 +5/-10 categoryId: P1201 subCategoryId: '12101' replacementId: '100001' stock: 352 status: AVAILABLE x-microcks-default: true '400': description: Bad Request for part '404': description: Part not Found x-microcks-operation: delay: 0 dispatcher: FALLBACK /search/{partialPartId}: get: summary: IKEA Find Parts description: Returns multiple parts matching the provided id operationId: searchParts tags: - Parts parameters: - $ref: '#/components/parameters/Accept-Language' - $ref: '#/components/parameters/partialPartId' responses: '202': description: Found Parts content: application/json: schema: type: array items: $ref: '#/components/schemas/SearchPart' examples: SearchParts202Example: summary: Default searchParts 202 response value: - itemId: '100001' partName: KEY HEXAGON 4MM SSH L48 ZN partDescription: S-SHAPE, WIDTH=20, LENGTH=48, HARDENED HRC 52 +5/-10 categoryId: P1201 subCategoryId: '12101' stock: 352 status: AVAILABLE partColor: Grey x-microcks-default: true '400': description: Bad search request '404': description: Part(s) not found x-microcks-operation: delay: 0 dispatcher: FALLBACK /products: get: summary: IKEA Find Parts for Product(s) description: Returns replacement parts information for one or more products operationId: getProductParts tags: - Parts parameters: - $ref: '#/components/parameters/Accept-Language' - $ref: '#/components/parameters/productIds' responses: '202': description: Product parts information content: application/json: schema: type: array items: $ref: '#/components/schemas/ProductParts' examples: GetProductParts202Example: summary: Default getProductParts 202 response value: - id: '00263850' productDesc: BILLY imageUrl: https://www.ikea.com/gb/en/images/products/billy-bookcase-white__0625599_pe692385_s2.jpg type: bookcase items: - itemId: example partName: example partDescription: example categoryId: example subCategoryId: example replacementId: example stock: example status: example x-microcks-default: true '400': description: Bad request for product(s) x-microcks-operation: delay: 0 dispatcher: FALLBACK components: parameters: Accept-Language: name: Accept-Language in: header description: Country and Language selection of returned data. in format of language-COUNTRY. required: true schema: type: string example: en-GB partId: name: partId in: path required: true description: What item to find schema: allOf: - $ref: '#/components/schemas/itemId' - type: string pattern: ^[^%]*$ examples: simple: $ref: '#/components/examples/itemIdSimple' discontinued: $ref: '#/components/examples/itemIdDiscontinued' replacement: $ref: '#/components/examples/itemIdReplacement' jimmyTestPart: $ref: '#/components/examples/itemIdJimmysTestPart' partialPartId: name: partialPartId in: path required: true description: | Partial Part identifier. A Part ID is typically 5-8 digit number, may include suffix like `/1` or `-1` Accepts any URL-encoded byte sequence, including invalid UTF-8 schema: type: string format: byte example: '1' examples: partial: summary: Simple example that will match multiple parts value: '10000' simple: $ref: '#/components/examples/itemIdSimple' discontinued: $ref: '#/components/examples/itemIdDiscontinued' replacement: $ref: '#/components/examples/itemIdReplacement' jimmyTestPart: $ref: '#/components/examples/itemIdJimmysTestPart' productIds: name: ids in: query required: true description: Find parts for the following productIds schema: type: array items: $ref: '#/components/schemas/productId' minItems: 0 style: form explode: false allowEmptyValue: true examples: singleWithParts: summary: Single Product (HJÄLPA) with parts value: - '60505511' singleWithoutPart: summary: Single Product (PLATSA) without parts value: - '39424871' multipleIds: summary: Multiple Product IDs (Kallax, Billy) value: - '00324518' - '39424871' schemas: itemId: type: string description: Part identifier - typically 5-8 digit number, may include suffix like `/1` or `-1` example: '100001' partName: type: string description: Part name example: KEY HEXAGON 4MM SSH L48 ZN partDescription: type: string description: Part description example: S-SHAPE, WIDTH=20, LENGTH=48, HARDENED HRC 52 +5/-10 categoryId: type: string description: Category identifier example: P1201 subCategoryId: type: string description: Subcategory identifier example: '12101' stock: type: integer description: Stock status example: 352 status: type: string enum: - AVAILABLE - NOT_AVAILABLE - ORDER_AT_CSC - OUT_OF_STOCK - DISCONTINUED_WITH_REPLACEMENTID description: | Part Status: * `AVAILABLE` - Part is available * `NOT_AVAILABLE` - Part is not available * `ORDER_AT_CSC` - Order at the Customer Service Center * `OUT_OF_STOCK` - Part is out of stock * `DISCONTINUED_WITH_REPLACEMENTID` - Part is discontinued and replaced by provided id. example: AVAILABLE Part: type: object description: Replacement part required: - itemId - partName - categoryId - subCategoryId - replacementId - status properties: itemId: $ref: '#/components/schemas/itemId' partName: $ref: '#/components/schemas/partName' partDescription: $ref: '#/components/schemas/partDescription' categoryId: $ref: '#/components/schemas/categoryId' subCategoryId: $ref: '#/components/schemas/subCategoryId' replacementId: $ref: '#/components/schemas/itemId' stock: $ref: '#/components/schemas/stock' status: $ref: '#/components/schemas/status' partColor: type: string description: Part Color example: Grey SearchPart: type: object description: Replacement part (returned in search results) required: - itemId - partName - categoryId - subCategoryId - stock - status - partColor - partReplaceId properties: itemId: $ref: '#/components/schemas/itemId' partName: $ref: '#/components/schemas/partName' partDescription: $ref: '#/components/schemas/partDescription' categoryId: $ref: '#/components/schemas/categoryId' subCategoryId: $ref: '#/components/schemas/subCategoryId' stock: $ref: '#/components/schemas/stock' status: $ref: '#/components/schemas/status' partColor: $ref: '#/components/schemas/partColor' partReplaceId: $ref: '#/components/schemas/itemId' productId: type: string description: Product identifier example: '00263850' ProductParts: type: object description: Parts in product required: - id - productDesc - imageUrl - type properties: id: $ref: '#/components/schemas/productId' productDesc: type: string description: Product description example: BILLY imageUrl: type: string description: Image URL format: uri example: https://www.ikea.com/gb/en/images/products/billy-bookcase-white__0625599_pe692385_s2.jpg type: type: string description: Product type example: bookcase items: type: array description: List pf parts items: $ref: '#/components/schemas/Part' examples: itemIdSimple: summary: Match single part 'Key Hexagon' description: Simple example for simple part. value: '100001' itemIdDiscontinued: summary: Discontinued item with replacement item provided description: Example of discontinued item with replacement item provided - replacement ID is `10032311/1` value: '10032311' itemIdReplacement: summary: Replacement part for 10032311 description: Example of replacement part for part `10032311`. value: 10032311/1 itemIdJimmysTestPart: summary: Jimmy test part in production description: | Example of one of the "test" parts in the database. Others include (partID, Part Name, Part Description): * `10002250` - `Jimmy test part in production` * `10050287` - `Test M3 upgrade` - `Testar radbrytsom dennahär` * `10067568` - `Test M3 upgrade copied` - `Testar radbrytsom dennahär` * `10066501` - `ALAS TEST` - `Testar description för att se om det rtar bort radbrytningar` * `10092540` - `TestUpgrade` * `10119359` - `test` * `10117240` - `Test Edgeband` value: '10002250'