Search code examples
magentomagento-2.0

Create Products using Rest API : Magento V2.0


I have been trying to create a product using Rest API for Magento Version 2.0.

I am using Postman to test the rest api.

URL : http://13.91../rest/V1/products

I have added the following headers to the request. Authorization : Bearer ********************** Content-Type : application/json

JSON BODY

{
"sku":"10090-White-XL",
"store_view_code":"",
"attribute_set_code":"ColorSize",
"product_type":"virtual",
"categories":"Menswear/Tops",
"product_websites":"base",
"name":"10090-White-XL",
"description":"<p>Precise Long-Sleeve Shirt in Black, Denim, or White.</p>",
"short_description":"",
"weight":"",
"product_online":1,
"tax_class_name":"Taxable Goods",
"visibility":"Not Visible Individually",
"price":119,
"special_price":"",
"special_price_from_date":"",
"special_price_to_date":"",
"url_key":"10090-white-xl",
"meta_title":"Precise Long-Sleeve Shirt",
"meta_keywords":"Precise Long-Sleeve Shirt",
"meta_description":"Precise Long-Sleeve Shirt <p>Precise Long-Sleeve Shirt in Black, Denim, or White.</p>",
"base_image":"",
"base_image_label":"",
"small_image":"",
"small_image_label":"",
"thumbnail_image":"",
"thumbnail_image_label":"",
"swatch_image":"",
"swatch_image_label":"",
"created_at":"3/23/16, 2:15 PM",
"updated_at":"3/23/16, 2:15 PM",
"new_from_date":"",
"new_to_date":"",
"display_product_options_in":"Block after Info Column",
"map_price":"",
"msrp_price":"",
"map_enabled":"",
"gift_message_available":"",
"custom_design":"",
"custom_design_from":"",
"custom_design_to":"",
"custom_layout_update":"",
"page_layout":"",
"product_options_container":"",
"msrp_display_actual_price_type":"",
"country_of_manufacture":"",
"additional_attributes":"color=White,size=XL",
"qty":null,
"out_of_stock_qty":0,
"use_config_min_qty":1,
"is_qty_decimal":0,
"allow_backorders":0,
"use_config_backorders":1,
"min_cart_qty":1,
"use_config_min_sale_qty":1,
"max_cart_qty":10000,
"use_config_max_sale_qty":1,
"is_in_stock":0,
"notify_on_stock_below":1,
"use_config_notify_stock_qty":1,
"manage_stock":0,
"use_config_manage_stock":0,
"use_config_qty_increments":1,
"qty_increments":0,
"use_config_enable_qty_inc":0,
"enable_qty_increments":0,
"is_decimal_divided":0,
"website_id":1,
"related_skus":"",
"crosssell_skus":"",
"upsell_skus":"",
"additional_images":"",
"additional_image_labels":"",
"hide_from_product_page":"",
"bundle_price_type":"",
"bundle_sku_type":"",
"bundle_price_view":"",
"bundle_weight_type":"",
"bundle_values":"",
"configurable_variations":"",
"configurable_variation_labels":"",
"associated_skus":""

}

The error that I get is {"message":"%fieldName is a required field.","parameters":{"fieldName":"product"}}

It will be great if someone could let me know how I could add a product. I have checked all the documents and but could not find an answer.


Solution

  • I have found the answer to my question. The json structure need to be in this format:

    {
        "product":{
          "id": 12345,
          "sku": "10090-White-XL",
          "name": "10090-White-XL",
          "attribute_set_id": 9,
          "price": 119,
          "status": 1,
          "visibility": 1,
          "type_id": "virtual",
          "created_at": "2016-04-05 23:04:09",
          "updated_at": "2016-04-05 23:04:09",
          "product_links": [],
          "options": [],
          "tier_prices": [],
          "custom_attributes": [
            {
              "attribute_code": "description",
              "value": "<p>Precise Long-Sleeve Shirt in Black, Denim, or White.</p>"
            },
            {
              "attribute_code": "meta_title",
              "value": "Precise Long-Sleeve Shirt"
            },
            {
              "attribute_code": "meta_keyword",
              "value": "Precise Long-Sleeve Shirt"
            },
            {
              "attribute_code": "meta_description",
              "value": "Precise Long-Sleeve Shirt <p>Precise Long-Sleeve Shirt in Black, Denim, or White.</p>"
            },
            {
              "attribute_code": "color",
              "value": "11"
            },
            {
              "attribute_code": "options_container",
              "value": "container2"
            },
            {
              "attribute_code": "required_options",
              "value": "0"
            },
            {
              "attribute_code": "has_options",
              "value": "0"
            },
            {
              "attribute_code": "url_key",
              "value": "10090-white-xl"
            },
            {
              "attribute_code": "msrp_display_actual_price_type",
              "value": "0"
            },
            {
              "attribute_code": "tax_class_id",
              "value": "2"
            },
            {
              "attribute_code": "size",
              "value": "8"
            }
          ]
        },"saveOptions": true
     }
    

    The important thing to note is the product tag in the json.The swagger document help to idenity it. Here is the link to it: http://devdocs.magento.com/swagger/#!/catalogProductRepositoryV1/catalogProductRepositoryV1SavePost