How to use access Magento 2 API from C# with REST and Token-based authenticationNo response from POST to...

Mimic lecturing on blackboard, facing audience

How to draw a matrix with arrows in limited space

What is the difference between lands and mana?

Is it allowed to activate the ability of multiple planeswalkers in a single turn?

Why is the "ls" command showing permissions of files in a FAT32 partition?

I found an audio circuit and I built it just fine, but I find it a bit too quiet. How do I amplify the output so that it is a bit louder?

Does the reader need to like the PoV character?

C++ check if statement can be evaluated constexpr

Creating two special characters

Why does this expression simplify as such?

awk assign to multiple variables at once

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

How do I fix the group tension caused by my character stealing and possibly killing without provocation?

Can I cause damage to electrical appliances by unplugging them when they are turned on?

What kind of floor tile is this?

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

Why do Radio Buttons not fill the entire outer circle?

C++ copy constructor called at return

How to explain what's wrong with this application of the chain rule?

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

Can I say "fingers" when referring to toes?

The Digit Triangles

Shouldn’t conservatives embrace universal basic income?

It grows, but water kills it



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 11 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 11 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 11 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 11 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

                    “%fieldName is a required field.”, in Magento2 REST API Call for GET Method Type The Next...

                    How to change City field to a dropdown in Checkout step Magento 2Magento 2 : How to change UI field(s)...

                    夢乃愛華...