cancel
Showing results for 
Search instead for 
Did you mean: 

Create a category c# Webapi

Create a category c# Webapi

Hello i am trying to create a category using the Rest Api, but i am getting an error

 

Here is my code

 

Main

 

static void Main(string[] args)
{
       CreateCategory();
}

public static void CreateCategory()
{
var magento = new Magento(ConfigurationManager.AppSettings["userName"], ConfigurationManager.AppSettings["passWord"]);
magento.CreateCategory("Man");
}

Class Function 

 

        private RestRequest CreateRequest(string endPoint, Method method, string token)
{
var request = new RestRequest(endPoint, method);
request.RequestFormat = DataFormat.Json;
request.AddHeader("Authorization", "Bearer " + token);
request.AddHeader("Accept", "application/json");
return request;
}

public void CreateCategory(string name) { var request = CreateRequest("/rest/V1/categories", Method.POST, this.token); var category = new CategoryPost(); var categoryMagento = new CategoryPostMagento(); categoryMagento.name = name; categoryMagento.is_active = true; category.category = categoryMagento; string json = JsonConvert.SerializeObject(category, Formatting.Indented); request.AddParameter("application/json", json, ParameterType.RequestBody); var response = Client.Execute(request); if (response.StatusCode == System.Net.HttpStatusCode.OK) { CategoryPost categories = JsonConvert.DeserializeObject<CategoryPost>(response.Content); //Json cargar a clase } else { } }

My object to hold the category to parsed into json object

 

 

    public class CategoryPostExtensionAttributes
    {
    }

    public class CategoryPostCustomAttribute
    {

        [JsonProperty("attribute_code")]
        public string attribute_code { get; set; }

        [JsonProperty("value")]
        public string value { get; set; }
    }

    public class CategoryPostMagento
    {

        [JsonProperty("id")]
        public int id { get; set; }

        [JsonProperty("parent_id")]
        public int parent_id { get; set; }

        [JsonProperty("name")]
        public string name { get; set; }

        [JsonProperty("is_active")]
        public bool is_active { get; set; }

        [JsonProperty("position")]
        public int position { get; set; }

        [JsonProperty("level")]
        public int level { get; set; }

        [JsonProperty("children")]
        public string children { get; set; }

        [JsonProperty("created_at")]
        public string created_at { get; set; }

        [JsonProperty("updated_at")]
        public string updated_at { get; set; }

        [JsonProperty("path")]
        public string path { get; set; }

        [JsonProperty("available_sort_by")]
        public IList<string> available_sort_by { get; set; }

        [JsonProperty("include_in_menu")]
        public bool include_in_menu { get; set; }

        [JsonProperty("extension_attributes")]
        public CategoryPostExtensionAttributes extension_attributes { get; set; }

        [JsonProperty("custom_attributes")]
        public IList<CategoryPostCustomAttribute> custom_attributes { get; set; }
    }

    public class CategoryPost
    {

        [JsonProperty("category")]
        public CategoryPostMagento category { get; set; }
    }

And the json file taken from the website of the devdocs

 

 

{
  "category": {
    "id": 0,
    "parent_id": 0,
    "name": "string",
    "is_active": true,
    "position": 0,
    "level": 0,
    "children": "string",
    "created_at": "string",
    "updated_at": "string",
    "path": "string",
    "available_sort_by": [
      "string"
    ],
    "include_in_menu": true,
    "extension_attributes": {},
    "custom_attributes": [
      {
        "attribute_code": "string",
        "value": "string"
      }
    ]
  }
}

 

 

 

I am getting the respose as folows

 

message: "Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Webapi\ServiceInputProcessor.php on line 306"

trace: "#0 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Webapi\ServiceInputProcessor.php(306): Magento\Framework\App\ErrorHandler->handler(2, 'Invalid argumen...', 'C:\\xampp\\htdocs...', 306, Array)
#1 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Webapi\ServiceInputProcessor.php(275): Magento\Framework\Webapi\ServiceInputProcessor->convertCustomAttributeValue(NULL, 'Magento\\Catalog...')
#2 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Webapi\ServiceInputProcessor.php(478): Magento\Framework\Webapi\ServiceInputProcessor->_createFromArray('Magento\\Catalog...', Array)
#3 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Webapi\ServiceInputProcessor.php(165): Magento\Framework\Webapi\ServiceInputProcessor->convertValue(Array, 'Magento\\Catalog...')
#4 C:\xampp\htdocs\magento\app\code\Magento\Webapi\Controller\Rest\InputParamsResolver.php(101): Magento\Framework\Webapi\ServiceInputProcessor->process('Magento\\Catalog...', 'save', Array)
#5 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(58): Magento\Webapi\Controller\Rest\InputParamsResolver->resolve()
#6 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(138): Magento\Webapi\Controller\Rest\InputParamsResolver\Interceptor->___callParent('resolve', Array)
#7 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(153): Magento\Webapi\Controller\Rest\InputParamsResolver\Interceptor->Magento\Framework\Interception\{closure}()
#8 C:\xampp\htdocs\magento\generated\code\Magento\Webapi\Controller\Rest\InputParamsResolver\Interceptor.php(26): Magento\Webapi\Controller\Rest\InputParamsResolver\Interceptor->___callPlugins('resolve', Array, Array)
#9 C:\xampp\htdocs\magento\app\code\Magento\Webapi\Controller\Rest\SynchronousRequestProcessor.php(85): Magento\Webapi\Controller\Rest\InputParamsResolver\Interceptor->resolve()
#10 C:\xampp\htdocs\magento\app\code\Magento\Webapi\Controller\Rest.php(188): Magento\Webapi\Controller\Rest\SynchronousRequestProcessor->process(Object(Magento\Framework\Webapi\Rest\Request\Proxy))
#11 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(58): Magento\Webapi\Controller\Rest->dispatch(Object(Magento\Framework\App\Request\Http))
#12 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(138): Magento\Webapi\Controller\Rest\Interceptor->___callParent('dispatch', Array)
#13 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\Interception\Interceptor.php(153): Magento\Webapi\Controller\Rest\Interceptor->Magento\Framework\Interception\{closure}(Object(Magento\Framework\App\Request\Http))
#14 C:\xampp\htdocs\magento\generated\code\Magento\Webapi\Controller\Rest\Interceptor.php(26): Magento\Webapi\Controller\Rest\Interceptor->___callPlugins('dispatch', Array, Array)
#15 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\App\Http.php(116): Magento\Webapi\Controller\Rest\Interceptor->dispatch(Object(Magento\Framework\App\Request\Http))
#16 C:\xampp\htdocs\magento\generated\code\Magento\Framework\App\Http\Interceptor.php(24): Magento\Framework\App\Http->launch()
#17 C:\xampp\htdocs\magento\lib\internal\Magento\Framework\App\Bootstrap.php(261): Magento\Framework\App\Http\Interceptor->launch()
#18 C:\xampp\htdocs\magento\index.php(39): Magento\Framework\App\Bootstrap->run(Object(Magento\Framework\App\Http\Interceptor))
#19 {main}"

 

Like the values number for the forech cicle in php are not valid i suppose