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

Change the color of a single dot in `ddot` symbol

Review your own paper in Mathematics

What fields between the rationals and the reals allow a good notion of 2D distance?

It grows, but water kills it

The Digit Triangles

How could a planet have erratic days?

Why should universal income be universal?

Does Doodling or Improvising on the Piano Have Any Benefits?

Why do Radio Buttons not fill the entire outer circle?

Are Captain Marvel's powers affected by Thanos breaking the Tesseract and claiming the stone?

How to get directions in deep space?

A Trivial Diagnosis

What does Apple's new App Store requirement mean

Which was the first story featuring espers?

How can ping know if my host is down

Is this part of the description of the Archfey warlock's Misty Escape feature redundant?

A variation to the phrase "hanging over my shoulders"

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

Does the Linux kernel need a file system to run?

Does the reader need to like the PoV character?

Has any country ever had 2 former presidents in jail simultaneously?

Why do ¬, ∀ and ∃ have the same precedence?

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

Do we have to expect a queue for the shuttle from Watford Junction to Harry Potter Studio?



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 1 min 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 1 min 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 1 min 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 1 min 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

                    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

                    Magento 2 disable Secret Key on URL's from terminal The Next CEO of Stack OverflowMagento 2 Shortcut/GUI tool to perform commandline tasks for windowsIn menu add configuration linkMagento oAuth : Generating access token and access secretMagento 2 security key issue in Third-Party API redirect URIPublic actions in admin controllersHow to Disable Cache in Custom WidgetURL Key not changing in Magento 2Product URL Key gets deleted when importing custom options - Magento 2Problem with reindex terminalMagento 2 - bin/magento Commands not working in Cpanel Terminal

                    Aasi (pallopeli) Navigointivalikko