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
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#
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.
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#
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.
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,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.
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");
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);
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");
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);
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");
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);
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");
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);
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);
answered Feb 18 at 3:17
Cueball 6118Cueball 6118
11
11
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