IKEA Parts API

Everything about Parts

OpenAPI Specification

ikea-parts-api-openapi.yml Raw ↑
openapi: 3.1.1
info:
  title: IKEA After Purchase Ordering Availability Parts 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:
  examples:
    itemIdJimmysTestPart:
      summary: Jimmy test part in production
      description: "Example of one of the \"test\" parts in the database.\nOthers include (partID, Part Name, Part Description):\n  * `10002250` - `Jimmy test part in production`\n  * `10050287` - `Test M3 upgrade` - `Testar radbrytsom dennahär`\n  * `10067568` - `Test M3 upgrade copied` - `Testar radbrytsom dennahär`\n  * `10066501` - `ALAS TEST` - `Testar description för att se om det rtar bort radbrytningar`\n  * `10092540` - `TestUpgrade`\n  * `10119359` - `test`\n  * `10117240` - `Test Edgeband`\n"
      value: '10002250'
    itemIdReplacement:
      summary: Replacement part for 10032311
      description: Example of replacement part for part `10032311`.
      value: 10032311/1
    itemIdDiscontinued:
      summary: Discontinued item with replacement item provided
      description: Example of discontinued item with replacement item provided - replacement ID is `10032311/1`
      value: '10032311'
    itemIdSimple:
      summary: Match single part 'Key Hexagon'
      description: Simple example for simple part.
      value: '100001'
  parameters:
    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'
    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'
    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'
    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
  schemas:
    subCategoryId:
      type: string
      description: Subcategory identifier
      example: '12101'
    status:
      type: string
      enum:
      - AVAILABLE
      - NOT_AVAILABLE
      - ORDER_AT_CSC
      - OUT_OF_STOCK
      - DISCONTINUED_WITH_REPLACEMENTID
      description: "Part Status:\n  * `AVAILABLE` - Part is available\n  * `NOT_AVAILABLE` - Part is not available\n  * `ORDER_AT_CSC` - Order at the Customer Service Center\n  * `OUT_OF_STOCK` - Part is out of stock\n  * `DISCONTINUED_WITH_REPLACEMENTID` - Part is discontinued and replaced by provided id.\n"
      example: AVAILABLE
    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'
    partColor:
      type: string
      description: Part Color
      example: Grey
    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
    stock:
      type: integer
      description: Stock status
      example: 352
    itemId:
      type: string
      description: Part identifier - typically 5-8 digit number, may include suffix like `/1` or `-1`
      example: '100001'
    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'
    categoryId:
      type: string
      description: Category identifier
      example: P1201
    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'