How to use access Magento 2 API from C# with REST and Token-based authenticationNo response from POST to custom REST Api routeMagento2 REST api authentication returns 'Decoding error'How to use token base Rest API?Invoke rest api from c#How do I consume the REST API in Magento 2, using AJAX with session-based authentication?REST API Access Token IssuesCustomer session for logged in customer by token based authenticationGet convert resultJsonFactory response to string in Magento2Magento 2 - Best approach for retrieving product data - REST API or Custom Endpoint?How to solve Front controller reached 100 router match iterations in magento2

Creating two special characters

Does the reader need to like the PoV character?

Microchip documentation does not label CAN buss pins on micro controller pinout diagram

15% tax on $7.5k earnings. Is that right?

How to get directions in deep space?

Were Persian-Median kings illiterate?

Why is it that I can sometimes guess the next note?

What does "Scientists rise up against statistical significance" mean? (Comment in Nature)

Multiplicative persistence

Is this toilet slogan correct usage of the English language?

Doesn't the system of the Supreme Court oppose justice?

Non-trope happy ending?

Does the Linux kernel need a file system to run?

Why does this expression simplify as such?

Short story about a deaf man, who cuts people tongues

What are some good ways to treat frozen vegetables such that they behave like fresh vegetables when stir frying them?

C++ copy constructor called at return

When were female captains banned from Starfleet?

Which Article Helped Get Rid of Technobabble in RPGs?

Why is so much work done on numerical verification of the Riemann Hypothesis?

C++ check if statement can be evaluated constexpr

Is there a way to have vectors outlined in a Vector Plot?

Why can't the Brexit deadlock in the UK parliament be solved with a plurality vote?

How to convince somebody that he is fit for something else, but not this job?



How to use access Magento 2 API from C# with REST and Token-based authentication


No response from POST to custom REST Api routeMagento2 REST api authentication returns 'Decoding error'How to use token base Rest API?Invoke rest api from c#How do I consume the REST API in Magento 2, using AJAX with session-based authentication?REST API Access Token IssuesCustomer session for logged in customer by token based authenticationGet convert resultJsonFactory response to string in Magento2Magento 2 - Best approach for retrieving product data - REST API or Custom Endpoint?How to solve Front controller reached 100 router match iterations in magento2













0















I create an Integration -> Activate -> Obtained the Access Token



Like is described here: http://devdocs.magento.com/guides/v2.2/get-started/authentication/gs-authentication-token.html



And in my test project I get this in response object:
Content:



""message":"Consumer is not authorized to access %resources","parameters":"resources":"Magento_Catalog::categories""
StatusCode:
System.Net.HttpStatusCode.Unauthorized


I create a class Magento:



public class Magento

private RestClient Client get; set;
private string Token get; set;

public Magento(string magentoUrl, string token)

Token = token;
Client = new RestClient(magentoUrl);


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 string CreateCategory(int id, int ParentId, string categoryName, bool IsActive, bool IncludeInMenu)

var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
var cat = new ProductCategory();
var category = new Category();
category.Id = id;
category.ParentId = ParentId;
category.Name = categoryName;
category.IsActive = IsActive;
category.IncludeInMenu = IncludeInMenu;
cat.Category = category;

string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

request.AddParameter("application/json", json, ParameterType.RequestBody);

var response = Client.Execute(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)

return response.Content;

else

return ":(" + response.Content;




public void GetSku(string token, string sku)

var request = CreateRequest("/rest/V1/products/" + sku, Method.GET, token);

var response = Client.Execute(request);

if (response.StatusCode == System.Net.HttpStatusCode.OK)

M2Product product = JsonConvert.DeserializeObject<M2Product>(response.Content);





public string CreateCategory(string categoryName)

var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
var cat = new ProductCategory();
var category = new Category();
category.Name = categoryName;
cat.Category = category;

string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

request.AddParameter("application/json", json, ParameterType.RequestBody);

var response = Client.Execute(request);
if (response.StatusCode == System.Net.HttpStatusCode.OK)

return response.Content;

else

return ":( "+ response.Content;





public class ProductCategory


[JsonProperty("category")]
public Category Category get; set;


public class Category


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

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

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

[JsonProperty("is_active")]
public bool IsActive 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 CreatedAt get; set;

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

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

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

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



public class StockItem


[JsonProperty("item_id")]
public int ItemId get; set;

[JsonProperty("product_id")]
public int ProductId get; set;

[JsonProperty("stock_id")]
public int StockId get; set;

[JsonProperty("qty")]
public int Qty get; set;

[JsonProperty("is_in_stock")]
public bool IsInStock get; set;

[JsonProperty("is_qty_decimal")]
public bool IsQtyDecimal get; set;

[JsonProperty("show_default_notification_message")]
public bool ShowDefaultNotificationMessage get; set;

[JsonProperty("use_config_min_qty")]
public bool UseConfigMinQty get; set;

[JsonProperty("min_qty")]
public int MinQty get; set;

[JsonProperty("use_config_min_sale_qty")]
public int UseConfigMinSaleQty get; set;

[JsonProperty("min_sale_qty")]
public int MinSaleQty get; set;

[JsonProperty("use_config_max_sale_qty")]
public bool UseConfigMaxSaleQty get; set;

[JsonProperty("max_sale_qty")]
public int MaxSaleQty get; set;

[JsonProperty("use_config_backorders")]
public bool UseConfigBackorders get; set;

[JsonProperty("backorders")]
public int Backorders get; set;

[JsonProperty("use_config_notify_stock_qty")]
public bool UseConfigNotifyStockQty get; set;

[JsonProperty("notify_stock_qty")]
public int NotifyStockQty get; set;

[JsonProperty("use_config_qty_increments")]
public bool UseConfigQtyIncrements get; set;

[JsonProperty("qty_increments")]
public int QtyIncrements get; set;

[JsonProperty("use_config_enable_qty_inc")]
public bool UseConfigEnableQtyInc get; set;

[JsonProperty("enable_qty_increments")]
public bool EnableQtyIncrements get; set;

[JsonProperty("use_config_manage_stock")]
public bool UseConfigManageStock get; set;

[JsonProperty("manage_stock")]
public bool ManageStock get; set;

[JsonProperty("low_stock_date")]
public object LowStockDate get; set;

[JsonProperty("is_decimal_divided")]
public bool IsDecimalDivided get; set;

[JsonProperty("stock_status_changed_auto")]
public int StockStatusChangedAuto get; set;


public class ExtensionAttributes


[JsonProperty("stock_item")]
public StockItem StockItem get; set;


public class CustomAttribute


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

[JsonProperty("value")]
public object Value get; set;


public class M2Product


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

[JsonProperty("sku")]
public string Sku get; set;

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

[JsonProperty("attribute_set_id")]
public int AttributeSetId get; set;

[JsonProperty("price")]
public int Price get; set;

[JsonProperty("status")]
public int Status get; set;

[JsonProperty("visibility")]
public int Visibility get; set;

[JsonProperty("type_id")]
public string TypeId get; set;

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

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

[JsonProperty("extension_attributes")]
public ExtensionAttributes ExtensionAttributes get; set;

[JsonProperty("product_links")]
public IList<object> ProductLinks get; set;

[JsonProperty("options")]
public IList<object> Options get; set;

[JsonProperty("media_gallery_entries")]
public IList<object> MediaGalleryEntries get; set;

[JsonProperty("tier_prices")]
public IList<object> TierPrices get; set;

[JsonProperty("custom_attributes")]
public IList<CustomAttribute> CustomAttributes get; set;



And a form



public partial class Form1 : Form

static private string siteAddress = "http://magento.com/";
static private string token = "d21312d97hosbblablablaqtqawlbw";
Magento objMagneto;

public Form1()

InitializeComponent();
objMagneto = new Magento(siteAddress, token);


private void button1_Click(object sender, EventArgs e)

this.Close();


private void adgClasa_Click(object sender, EventArgs e)

MessageBox.Show(objMagneto.CreateCategory(10, 0, "PC Components", true, true)); // id, ParentId, name, IsActive, IncludeInMenu













share|improve this question
















bumped to the homepage by Community 3 mins ago


This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.



















    0















    I create an Integration -> Activate -> Obtained the Access Token



    Like is described here: http://devdocs.magento.com/guides/v2.2/get-started/authentication/gs-authentication-token.html



    And in my test project I get this in response object:
    Content:



    ""message":"Consumer is not authorized to access %resources","parameters":"resources":"Magento_Catalog::categories""
    StatusCode:
    System.Net.HttpStatusCode.Unauthorized


    I create a class Magento:



    public class Magento

    private RestClient Client get; set;
    private string Token get; set;

    public Magento(string magentoUrl, string token)

    Token = token;
    Client = new RestClient(magentoUrl);


    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 string CreateCategory(int id, int ParentId, string categoryName, bool IsActive, bool IncludeInMenu)

    var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
    var cat = new ProductCategory();
    var category = new Category();
    category.Id = id;
    category.ParentId = ParentId;
    category.Name = categoryName;
    category.IsActive = IsActive;
    category.IncludeInMenu = IncludeInMenu;
    cat.Category = category;

    string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

    request.AddParameter("application/json", json, ParameterType.RequestBody);

    var response = Client.Execute(request);
    if (response.StatusCode == System.Net.HttpStatusCode.OK)

    return response.Content;

    else

    return ":(" + response.Content;




    public void GetSku(string token, string sku)

    var request = CreateRequest("/rest/V1/products/" + sku, Method.GET, token);

    var response = Client.Execute(request);

    if (response.StatusCode == System.Net.HttpStatusCode.OK)

    M2Product product = JsonConvert.DeserializeObject<M2Product>(response.Content);





    public string CreateCategory(string categoryName)

    var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
    var cat = new ProductCategory();
    var category = new Category();
    category.Name = categoryName;
    cat.Category = category;

    string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

    request.AddParameter("application/json", json, ParameterType.RequestBody);

    var response = Client.Execute(request);
    if (response.StatusCode == System.Net.HttpStatusCode.OK)

    return response.Content;

    else

    return ":( "+ response.Content;





    public class ProductCategory


    [JsonProperty("category")]
    public Category Category get; set;


    public class Category


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

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

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

    [JsonProperty("is_active")]
    public bool IsActive 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 CreatedAt get; set;

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

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

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

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



    public class StockItem


    [JsonProperty("item_id")]
    public int ItemId get; set;

    [JsonProperty("product_id")]
    public int ProductId get; set;

    [JsonProperty("stock_id")]
    public int StockId get; set;

    [JsonProperty("qty")]
    public int Qty get; set;

    [JsonProperty("is_in_stock")]
    public bool IsInStock get; set;

    [JsonProperty("is_qty_decimal")]
    public bool IsQtyDecimal get; set;

    [JsonProperty("show_default_notification_message")]
    public bool ShowDefaultNotificationMessage get; set;

    [JsonProperty("use_config_min_qty")]
    public bool UseConfigMinQty get; set;

    [JsonProperty("min_qty")]
    public int MinQty get; set;

    [JsonProperty("use_config_min_sale_qty")]
    public int UseConfigMinSaleQty get; set;

    [JsonProperty("min_sale_qty")]
    public int MinSaleQty get; set;

    [JsonProperty("use_config_max_sale_qty")]
    public bool UseConfigMaxSaleQty get; set;

    [JsonProperty("max_sale_qty")]
    public int MaxSaleQty get; set;

    [JsonProperty("use_config_backorders")]
    public bool UseConfigBackorders get; set;

    [JsonProperty("backorders")]
    public int Backorders get; set;

    [JsonProperty("use_config_notify_stock_qty")]
    public bool UseConfigNotifyStockQty get; set;

    [JsonProperty("notify_stock_qty")]
    public int NotifyStockQty get; set;

    [JsonProperty("use_config_qty_increments")]
    public bool UseConfigQtyIncrements get; set;

    [JsonProperty("qty_increments")]
    public int QtyIncrements get; set;

    [JsonProperty("use_config_enable_qty_inc")]
    public bool UseConfigEnableQtyInc get; set;

    [JsonProperty("enable_qty_increments")]
    public bool EnableQtyIncrements get; set;

    [JsonProperty("use_config_manage_stock")]
    public bool UseConfigManageStock get; set;

    [JsonProperty("manage_stock")]
    public bool ManageStock get; set;

    [JsonProperty("low_stock_date")]
    public object LowStockDate get; set;

    [JsonProperty("is_decimal_divided")]
    public bool IsDecimalDivided get; set;

    [JsonProperty("stock_status_changed_auto")]
    public int StockStatusChangedAuto get; set;


    public class ExtensionAttributes


    [JsonProperty("stock_item")]
    public StockItem StockItem get; set;


    public class CustomAttribute


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

    [JsonProperty("value")]
    public object Value get; set;


    public class M2Product


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

    [JsonProperty("sku")]
    public string Sku get; set;

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

    [JsonProperty("attribute_set_id")]
    public int AttributeSetId get; set;

    [JsonProperty("price")]
    public int Price get; set;

    [JsonProperty("status")]
    public int Status get; set;

    [JsonProperty("visibility")]
    public int Visibility get; set;

    [JsonProperty("type_id")]
    public string TypeId get; set;

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

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

    [JsonProperty("extension_attributes")]
    public ExtensionAttributes ExtensionAttributes get; set;

    [JsonProperty("product_links")]
    public IList<object> ProductLinks get; set;

    [JsonProperty("options")]
    public IList<object> Options get; set;

    [JsonProperty("media_gallery_entries")]
    public IList<object> MediaGalleryEntries get; set;

    [JsonProperty("tier_prices")]
    public IList<object> TierPrices get; set;

    [JsonProperty("custom_attributes")]
    public IList<CustomAttribute> CustomAttributes get; set;



    And a form



    public partial class Form1 : Form

    static private string siteAddress = "http://magento.com/";
    static private string token = "d21312d97hosbblablablaqtqawlbw";
    Magento objMagneto;

    public Form1()

    InitializeComponent();
    objMagneto = new Magento(siteAddress, token);


    private void button1_Click(object sender, EventArgs e)

    this.Close();


    private void adgClasa_Click(object sender, EventArgs e)

    MessageBox.Show(objMagneto.CreateCategory(10, 0, "PC Components", true, true)); // id, ParentId, name, IsActive, IncludeInMenu













    share|improve this question
















    bumped to the homepage by Community 3 mins ago


    This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.

















      0












      0








      0








      I create an Integration -> Activate -> Obtained the Access Token



      Like is described here: http://devdocs.magento.com/guides/v2.2/get-started/authentication/gs-authentication-token.html



      And in my test project I get this in response object:
      Content:



      ""message":"Consumer is not authorized to access %resources","parameters":"resources":"Magento_Catalog::categories""
      StatusCode:
      System.Net.HttpStatusCode.Unauthorized


      I create a class Magento:



      public class Magento

      private RestClient Client get; set;
      private string Token get; set;

      public Magento(string magentoUrl, string token)

      Token = token;
      Client = new RestClient(magentoUrl);


      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 string CreateCategory(int id, int ParentId, string categoryName, bool IsActive, bool IncludeInMenu)

      var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
      var cat = new ProductCategory();
      var category = new Category();
      category.Id = id;
      category.ParentId = ParentId;
      category.Name = categoryName;
      category.IsActive = IsActive;
      category.IncludeInMenu = IncludeInMenu;
      cat.Category = category;

      string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

      request.AddParameter("application/json", json, ParameterType.RequestBody);

      var response = Client.Execute(request);
      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      return response.Content;

      else

      return ":(" + response.Content;




      public void GetSku(string token, string sku)

      var request = CreateRequest("/rest/V1/products/" + sku, Method.GET, token);

      var response = Client.Execute(request);

      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      M2Product product = JsonConvert.DeserializeObject<M2Product>(response.Content);





      public string CreateCategory(string categoryName)

      var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
      var cat = new ProductCategory();
      var category = new Category();
      category.Name = categoryName;
      cat.Category = category;

      string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

      request.AddParameter("application/json", json, ParameterType.RequestBody);

      var response = Client.Execute(request);
      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      return response.Content;

      else

      return ":( "+ response.Content;





      public class ProductCategory


      [JsonProperty("category")]
      public Category Category get; set;


      public class Category


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

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

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

      [JsonProperty("is_active")]
      public bool IsActive 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 CreatedAt get; set;

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

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

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

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



      public class StockItem


      [JsonProperty("item_id")]
      public int ItemId get; set;

      [JsonProperty("product_id")]
      public int ProductId get; set;

      [JsonProperty("stock_id")]
      public int StockId get; set;

      [JsonProperty("qty")]
      public int Qty get; set;

      [JsonProperty("is_in_stock")]
      public bool IsInStock get; set;

      [JsonProperty("is_qty_decimal")]
      public bool IsQtyDecimal get; set;

      [JsonProperty("show_default_notification_message")]
      public bool ShowDefaultNotificationMessage get; set;

      [JsonProperty("use_config_min_qty")]
      public bool UseConfigMinQty get; set;

      [JsonProperty("min_qty")]
      public int MinQty get; set;

      [JsonProperty("use_config_min_sale_qty")]
      public int UseConfigMinSaleQty get; set;

      [JsonProperty("min_sale_qty")]
      public int MinSaleQty get; set;

      [JsonProperty("use_config_max_sale_qty")]
      public bool UseConfigMaxSaleQty get; set;

      [JsonProperty("max_sale_qty")]
      public int MaxSaleQty get; set;

      [JsonProperty("use_config_backorders")]
      public bool UseConfigBackorders get; set;

      [JsonProperty("backorders")]
      public int Backorders get; set;

      [JsonProperty("use_config_notify_stock_qty")]
      public bool UseConfigNotifyStockQty get; set;

      [JsonProperty("notify_stock_qty")]
      public int NotifyStockQty get; set;

      [JsonProperty("use_config_qty_increments")]
      public bool UseConfigQtyIncrements get; set;

      [JsonProperty("qty_increments")]
      public int QtyIncrements get; set;

      [JsonProperty("use_config_enable_qty_inc")]
      public bool UseConfigEnableQtyInc get; set;

      [JsonProperty("enable_qty_increments")]
      public bool EnableQtyIncrements get; set;

      [JsonProperty("use_config_manage_stock")]
      public bool UseConfigManageStock get; set;

      [JsonProperty("manage_stock")]
      public bool ManageStock get; set;

      [JsonProperty("low_stock_date")]
      public object LowStockDate get; set;

      [JsonProperty("is_decimal_divided")]
      public bool IsDecimalDivided get; set;

      [JsonProperty("stock_status_changed_auto")]
      public int StockStatusChangedAuto get; set;


      public class ExtensionAttributes


      [JsonProperty("stock_item")]
      public StockItem StockItem get; set;


      public class CustomAttribute


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

      [JsonProperty("value")]
      public object Value get; set;


      public class M2Product


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

      [JsonProperty("sku")]
      public string Sku get; set;

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

      [JsonProperty("attribute_set_id")]
      public int AttributeSetId get; set;

      [JsonProperty("price")]
      public int Price get; set;

      [JsonProperty("status")]
      public int Status get; set;

      [JsonProperty("visibility")]
      public int Visibility get; set;

      [JsonProperty("type_id")]
      public string TypeId get; set;

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

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

      [JsonProperty("extension_attributes")]
      public ExtensionAttributes ExtensionAttributes get; set;

      [JsonProperty("product_links")]
      public IList<object> ProductLinks get; set;

      [JsonProperty("options")]
      public IList<object> Options get; set;

      [JsonProperty("media_gallery_entries")]
      public IList<object> MediaGalleryEntries get; set;

      [JsonProperty("tier_prices")]
      public IList<object> TierPrices get; set;

      [JsonProperty("custom_attributes")]
      public IList<CustomAttribute> CustomAttributes get; set;



      And a form



      public partial class Form1 : Form

      static private string siteAddress = "http://magento.com/";
      static private string token = "d21312d97hosbblablablaqtqawlbw";
      Magento objMagneto;

      public Form1()

      InitializeComponent();
      objMagneto = new Magento(siteAddress, token);


      private void button1_Click(object sender, EventArgs e)

      this.Close();


      private void adgClasa_Click(object sender, EventArgs e)

      MessageBox.Show(objMagneto.CreateCategory(10, 0, "PC Components", true, true)); // id, ParentId, name, IsActive, IncludeInMenu













      share|improve this question
















      I create an Integration -> Activate -> Obtained the Access Token



      Like is described here: http://devdocs.magento.com/guides/v2.2/get-started/authentication/gs-authentication-token.html



      And in my test project I get this in response object:
      Content:



      ""message":"Consumer is not authorized to access %resources","parameters":"resources":"Magento_Catalog::categories""
      StatusCode:
      System.Net.HttpStatusCode.Unauthorized


      I create a class Magento:



      public class Magento

      private RestClient Client get; set;
      private string Token get; set;

      public Magento(string magentoUrl, string token)

      Token = token;
      Client = new RestClient(magentoUrl);


      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 string CreateCategory(int id, int ParentId, string categoryName, bool IsActive, bool IncludeInMenu)

      var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
      var cat = new ProductCategory();
      var category = new Category();
      category.Id = id;
      category.ParentId = ParentId;
      category.Name = categoryName;
      category.IsActive = IsActive;
      category.IncludeInMenu = IncludeInMenu;
      cat.Category = category;

      string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

      request.AddParameter("application/json", json, ParameterType.RequestBody);

      var response = Client.Execute(request);
      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      return response.Content;

      else

      return ":(" + response.Content;




      public void GetSku(string token, string sku)

      var request = CreateRequest("/rest/V1/products/" + sku, Method.GET, token);

      var response = Client.Execute(request);

      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      M2Product product = JsonConvert.DeserializeObject<M2Product>(response.Content);





      public string CreateCategory(string categoryName)

      var request = CreateRequest("/rest/V1/categories", Method.POST, Token);
      var cat = new ProductCategory();
      var category = new Category();
      category.Name = categoryName;
      cat.Category = category;

      string json = JsonConvert.SerializeObject(cat, Formatting.Indented);

      request.AddParameter("application/json", json, ParameterType.RequestBody);

      var response = Client.Execute(request);
      if (response.StatusCode == System.Net.HttpStatusCode.OK)

      return response.Content;

      else

      return ":( "+ response.Content;





      public class ProductCategory


      [JsonProperty("category")]
      public Category Category get; set;


      public class Category


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

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

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

      [JsonProperty("is_active")]
      public bool IsActive 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 CreatedAt get; set;

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

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

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

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



      public class StockItem


      [JsonProperty("item_id")]
      public int ItemId get; set;

      [JsonProperty("product_id")]
      public int ProductId get; set;

      [JsonProperty("stock_id")]
      public int StockId get; set;

      [JsonProperty("qty")]
      public int Qty get; set;

      [JsonProperty("is_in_stock")]
      public bool IsInStock get; set;

      [JsonProperty("is_qty_decimal")]
      public bool IsQtyDecimal get; set;

      [JsonProperty("show_default_notification_message")]
      public bool ShowDefaultNotificationMessage get; set;

      [JsonProperty("use_config_min_qty")]
      public bool UseConfigMinQty get; set;

      [JsonProperty("min_qty")]
      public int MinQty get; set;

      [JsonProperty("use_config_min_sale_qty")]
      public int UseConfigMinSaleQty get; set;

      [JsonProperty("min_sale_qty")]
      public int MinSaleQty get; set;

      [JsonProperty("use_config_max_sale_qty")]
      public bool UseConfigMaxSaleQty get; set;

      [JsonProperty("max_sale_qty")]
      public int MaxSaleQty get; set;

      [JsonProperty("use_config_backorders")]
      public bool UseConfigBackorders get; set;

      [JsonProperty("backorders")]
      public int Backorders get; set;

      [JsonProperty("use_config_notify_stock_qty")]
      public bool UseConfigNotifyStockQty get; set;

      [JsonProperty("notify_stock_qty")]
      public int NotifyStockQty get; set;

      [JsonProperty("use_config_qty_increments")]
      public bool UseConfigQtyIncrements get; set;

      [JsonProperty("qty_increments")]
      public int QtyIncrements get; set;

      [JsonProperty("use_config_enable_qty_inc")]
      public bool UseConfigEnableQtyInc get; set;

      [JsonProperty("enable_qty_increments")]
      public bool EnableQtyIncrements get; set;

      [JsonProperty("use_config_manage_stock")]
      public bool UseConfigManageStock get; set;

      [JsonProperty("manage_stock")]
      public bool ManageStock get; set;

      [JsonProperty("low_stock_date")]
      public object LowStockDate get; set;

      [JsonProperty("is_decimal_divided")]
      public bool IsDecimalDivided get; set;

      [JsonProperty("stock_status_changed_auto")]
      public int StockStatusChangedAuto get; set;


      public class ExtensionAttributes


      [JsonProperty("stock_item")]
      public StockItem StockItem get; set;


      public class CustomAttribute


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

      [JsonProperty("value")]
      public object Value get; set;


      public class M2Product


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

      [JsonProperty("sku")]
      public string Sku get; set;

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

      [JsonProperty("attribute_set_id")]
      public int AttributeSetId get; set;

      [JsonProperty("price")]
      public int Price get; set;

      [JsonProperty("status")]
      public int Status get; set;

      [JsonProperty("visibility")]
      public int Visibility get; set;

      [JsonProperty("type_id")]
      public string TypeId get; set;

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

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

      [JsonProperty("extension_attributes")]
      public ExtensionAttributes ExtensionAttributes get; set;

      [JsonProperty("product_links")]
      public IList<object> ProductLinks get; set;

      [JsonProperty("options")]
      public IList<object> Options get; set;

      [JsonProperty("media_gallery_entries")]
      public IList<object> MediaGalleryEntries get; set;

      [JsonProperty("tier_prices")]
      public IList<object> TierPrices get; set;

      [JsonProperty("custom_attributes")]
      public IList<CustomAttribute> CustomAttributes get; set;



      And a form



      public partial class Form1 : Form

      static private string siteAddress = "http://magento.com/";
      static private string token = "d21312d97hosbblablablaqtqawlbw";
      Magento objMagneto;

      public Form1()

      InitializeComponent();
      objMagneto = new Magento(siteAddress, token);


      private void button1_Click(object sender, EventArgs e)

      this.Close();


      private void adgClasa_Click(object sender, EventArgs e)

      MessageBox.Show(objMagneto.CreateCategory(10, 0, "PC Components", true, true)); // id, ParentId, name, IsActive, IncludeInMenu










      magento2 api rest c#






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Oct 31 '17 at 9:34









      Manoj Deswal

      4,36991744




      4,36991744










      asked Oct 31 '17 at 9:23









      AdrianSimiAdrianSimi

      12




      12





      bumped to the homepage by Community 3 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.







      bumped to the homepage by Community 3 mins ago


      This question has answers that may be good or bad; the system has marked it active so that they can be reviewed.






















          1 Answer
          1






          active

          oldest

          votes


















          0














          I see you are using RestClient and Newtonsoft Json both great libraries!



          Using the 2.2 REST API and RestClient I use the following: -



          var client = new RestClient(<endpoint>)

          Encoding = Encoding.UTF8,
          Authenticator = OAuth1Authenticator.ForProtectedResource(<ConsumerKey>, <ConsumerSecret>, <AccessToken>, <AccessTokenSecret>)
          ;
          var request = new RestRequest("rest/V1/categories", Method.POST);
          request.AddHeader("Content-Type", "application/json");
          request.Parameters.Add(new Parameter("category", JsonConvert.SerializeObject(new category , Formatting.None), ContentType.Json, ParameterType.RequestBody));
          var response = client.Execute(request);
          var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);





          share|improve this answer






















            Your Answer








            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "479"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            autoActivateHeartbeat: false,
            convertImagesToLinks: false,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: null,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













            draft saved

            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f199400%2fhow-to-use-access-magento-2-api-from-c-with-rest-and-token-based-authentication%23new-answer', 'question_page');

            );

            Post as a guest















            Required, but never shown

























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes









            0














            I see you are using RestClient and Newtonsoft Json both great libraries!



            Using the 2.2 REST API and RestClient I use the following: -



            var client = new RestClient(<endpoint>)

            Encoding = Encoding.UTF8,
            Authenticator = OAuth1Authenticator.ForProtectedResource(<ConsumerKey>, <ConsumerSecret>, <AccessToken>, <AccessTokenSecret>)
            ;
            var request = new RestRequest("rest/V1/categories", Method.POST);
            request.AddHeader("Content-Type", "application/json");
            request.Parameters.Add(new Parameter("category", JsonConvert.SerializeObject(new category , Formatting.None), ContentType.Json, ParameterType.RequestBody));
            var response = client.Execute(request);
            var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);





            share|improve this answer



























              0














              I see you are using RestClient and Newtonsoft Json both great libraries!



              Using the 2.2 REST API and RestClient I use the following: -



              var client = new RestClient(<endpoint>)

              Encoding = Encoding.UTF8,
              Authenticator = OAuth1Authenticator.ForProtectedResource(<ConsumerKey>, <ConsumerSecret>, <AccessToken>, <AccessTokenSecret>)
              ;
              var request = new RestRequest("rest/V1/categories", Method.POST);
              request.AddHeader("Content-Type", "application/json");
              request.Parameters.Add(new Parameter("category", JsonConvert.SerializeObject(new category , Formatting.None), ContentType.Json, ParameterType.RequestBody));
              var response = client.Execute(request);
              var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);





              share|improve this answer

























                0












                0








                0







                I see you are using RestClient and Newtonsoft Json both great libraries!



                Using the 2.2 REST API and RestClient I use the following: -



                var client = new RestClient(<endpoint>)

                Encoding = Encoding.UTF8,
                Authenticator = OAuth1Authenticator.ForProtectedResource(<ConsumerKey>, <ConsumerSecret>, <AccessToken>, <AccessTokenSecret>)
                ;
                var request = new RestRequest("rest/V1/categories", Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.Parameters.Add(new Parameter("category", JsonConvert.SerializeObject(new category , Formatting.None), ContentType.Json, ParameterType.RequestBody));
                var response = client.Execute(request);
                var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);





                share|improve this answer













                I see you are using RestClient and Newtonsoft Json both great libraries!



                Using the 2.2 REST API and RestClient I use the following: -



                var client = new RestClient(<endpoint>)

                Encoding = Encoding.UTF8,
                Authenticator = OAuth1Authenticator.ForProtectedResource(<ConsumerKey>, <ConsumerSecret>, <AccessToken>, <AccessTokenSecret>)
                ;
                var request = new RestRequest("rest/V1/categories", Method.POST);
                request.AddHeader("Content-Type", "application/json");
                request.Parameters.Add(new Parameter("category", JsonConvert.SerializeObject(new category , Formatting.None), ContentType.Json, ParameterType.RequestBody));
                var response = client.Execute(request);
                var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);






                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Feb 18 at 3:17









                Cueball 6118Cueball 6118

                11




                11



























                    draft saved

                    draft discarded
















































                    Thanks for contributing an answer to Magento Stack Exchange!


                    • Please be sure to answer the question. Provide details and share your research!

                    But avoid


                    • Asking for help, clarification, or responding to other answers.

                    • Making statements based on opinion; back them up with references or personal experience.

                    To learn more, see our tips on writing great answers.




                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmagento.stackexchange.com%2fquestions%2f199400%2fhow-to-use-access-magento-2-api-from-c-with-rest-and-token-based-authentication%23new-answer', 'question_page');

                    );

                    Post as a guest















                    Required, but never shown





















































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown

































                    Required, but never shown














                    Required, but never shown












                    Required, but never shown







                    Required, but never shown







                    Popular posts from this blog

                    Magento 2 - Add success message with knockout Planned maintenance scheduled April 23, 2019 at 23:30 UTC (7:30pm US/Eastern) Announcing the arrival of Valued Associate #679: Cesar Manara Unicorn Meta Zoo #1: Why another podcast?Success / Error message on ajax request$.widget is not a function when loading a homepage after add custom jQuery on custom themeHow can bind jQuery to current document in Magento 2 When template load by ajaxRedirect page using plugin in Magento 2Magento 2 - Update quantity and totals of cart page without page reload?Magento 2: Quote data not loaded on knockout checkoutMagento 2 : I need to change add to cart success message after adding product into cart through pluginMagento 2.2.5 How to add additional products to cart from new checkout step?Magento 2 Add error/success message with knockoutCan't validate Post Code on checkout page

                    Fil:Tokke komm.svg

                    Where did Arya get these scars? Unicorn Meta Zoo #1: Why another podcast? Announcing the arrival of Valued Associate #679: Cesar Manara Favourite questions and answers from the 1st quarter of 2019Why did Arya refuse to end it?Has the pronunciation of Arya Stark's name changed?Has Arya forgiven people?Why did Arya Stark lose her vision?Why can Arya still use the faces?Has the Narrow Sea become narrower?Does Arya Stark know how to make poisons outside of the House of Black and White?Why did Nymeria leave Arya?Why did Arya not kill the Lannister soldiers she encountered in the Riverlands?What is the current canonical age of Sansa, Bran and Arya Stark?