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

Can a stoichiometric mixture of oxygen and methane exist as a liquid at standard pressure and some (low) temperature?

How can ping know if my host is down

Why do Radio Buttons not fill the entire outer circle?

Does an advisor owe his/her student anything? Will an advisor keep a PhD student only out of pity?

Does the reader need to like the PoV character?

How would you translate "more" for use as an interface button?

C++ copy constructor called at return

C++ check if statement can be evaluated constexpr

What is going on with gets(stdin) on the site coderbyte?

Mimic lecturing on blackboard, facing audience

Which was the first story featuring espers?

Does the Linux kernel need a file system to run?

How does electrical safety system work on ISS?

Short story about a deaf man, who cuts people tongues

Does Doodling or Improvising on the Piano Have Any Benefits?

How much theory knowledge is actually used while playing?

Shouldn’t conservatives embrace universal basic income?

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

Stack Interview Code methods made from class Node and Smart Pointers

Were Persian-Median kings illiterate?

How to get directions in deep space?

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

How to preserve electronics (computers, iPads and phones) for hundreds of years

Pre-mixing cryogenic fuels and using only one fuel tank



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 5 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 5 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 5 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 5 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 duplicate PHPSESSID cookie when using session_start() in custom php scriptMagento 2: User cant logged in into to account page, no error showing!Magento duplicate on subdomainGrabbing storeview from cookie (after using language selector)How do I run php custom script on magento2Magento 2: Include PHP script in headerSession lock after using Cm_RedisSessionscript php to update stockMagento set cookie popupMagento 2 session id cookie - where to find it?How to import Configurable product from csv with custom attributes using php scriptMagento 2 run custom PHP script

                    Can not update quote_id field of “quote_item” table magento 2Magento 2.1 - We can't remove the item. (Shopping Cart doesnt allow us to remove items before becomes empty)Add value for custom quote item attribute using REST apiREST API endpoint v1/carts/cartId/items always returns error messageCorrect way to save entries to databaseHow to remove all associated quote objects of a customer completelyMagento 2 - Save value from custom input field to quote_itemGet quote_item data using quote id and product id filter in Magento 2How to set additional data to quote_item table from controller in Magento 2?What is the purpose of additional_data column in quote_item table in magento2Set Custom Price to Quote item magento2 from controller

                    How to solve knockout JS error in Magento 2 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?(Magento2) knockout.js:3012 Uncaught ReferenceError: Unable to process bindingUnable to process binding Knockout.js magento 2Cannot read property `scopeLabel` of undefined on Product Detail PageCan't get Customer Data on frontend in Magento 2Magento2 Order Summary - unable to process bindingKO templates are not loading in Magento 2.1 applicationgetting knockout js error magento 2Product grid not load -— Unable to process binding Knockout.js magento 2Product form not loaded in magento2Uncaught ReferenceError: Unable to process binding “if: function()return (isShowLegend()) ” magento 2