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












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





























    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



























      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,28591743




      4,28591743










      asked Oct 31 '17 at 9:23









      AdrianSimiAdrianSimi

      12




      12






















          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");
          var response = client.Execute(request);
          var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);




          share








          New contributor




          Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
          Check out our Code of Conduct.




















            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");
            var response = client.Execute(request);
            var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);




            share








            New contributor




            Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
            Check out our Code of Conduct.

























              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");
              var response = client.Execute(request);
              var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);




              share








              New contributor




              Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.























                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");
                var response = client.Execute(request);
                var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);




                share








                New contributor




                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.










                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");
                var response = client.Execute(request);
                var returnedObject = JsonConvert.DeserializeObject<McomCategory>(response.Content);





                share








                New contributor




                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.








                share


                share






                New contributor




                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.









                answered 1 min ago









                Cueball 6118Cueball 6118

                11




                11




                New contributor




                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.





                New contributor





                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






                Cueball 6118 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                Check out our Code of Conduct.






























                    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

                    What other Star Trek series did the main TNG cast show up in?

                    Berlina muro

                    Berlina aerponto