How to use access Magento 2 API from C# with REST and Token-based authentication
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#
add a comment |
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#
add a comment |
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#
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#
magento2 api rest c#
edited Oct 31 '17 at 9:34
Manoj Deswal
4,28591743
4,28591743
asked Oct 31 '17 at 9:23
AdrianSimiAdrianSimi
12
12
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
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);
New contributor
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
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);
New contributor
add a comment |
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);
New contributor
add a comment |
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);
New contributor
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);
New contributor
New contributor
answered 1 min ago
Cueball 6118Cueball 6118
11
11
New contributor
New contributor
add a comment |
add a comment |
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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
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
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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