Reputation: 33
I have a custom order management system, written in VB.net. I now need to use the jet.com partner api for integration with them. I'm sure this isn't hard for you web experts out there, but I don't have much experience with RESTful calls to apis.
The documentation I have says:
Jet API Security Flow
The following security flow is the assumed flow for accessing Jet API functions that require authorization:User submits his/her credentials over SSL/TLS to Jet API
/api/Token
endpoint via HTTPS POST request, like below:POST https://merchant-api.jet.com/api/Token HTTP/1.1 Host: merchant-api.jet.com Content-Type: application/json; charset=utf-8 Content-Length: 42 {"user":"[email protected]","pass":"XXXXXXXX"}
/api/Token
endpoint is a single point of authentication for Jet API users. Therefore, it does not require either authentication or authorization.If the user successfully authenticated, the security (bearer) token is returned back over SSL/TLS carrying claims associated with the user encoded and signed:
HTTP/1.1 200 OK Cache-Control: no-store Pragma: no-cache Content-Length: XXX Content-Type: application/json; charset=utf-8 Server: Microsoft-IIS/8.0 Set-Cookie: auth0=XXX...XX; path=/; secure; httponly Server: nginx/1.7.1 X-AspNet-Version: 4.0.30319 X-Powered-By: ASP.NET Date: Wed, 06 Aug 2014 13:50:17 GMT Set-Cookie: SERVERID=03-4BRURJ6FFLMCK; path=/ {"id_token":"XXX...XX","access_token":"XXX...XX","token_type":"bearer"}
Token is contained in JSON node id_token that should be used in the following HTTP requests to Jet API as authorization vehicle (see article 4 below) until it expires or gets refreshed.
If not authenticated at the /api/Token endpoint, the user gets back HTTP response carrying header
HTTP/1.1 401 Unauthorized
. Having the above bearer token, the user then should provide it when calling other Jet API endpoints as part of HTTPS requests within Authorization header. This header has the following form: Authorization: Bearer If the user has proper permissions associated with the token he/she will be allowed to access the endpoints and/or specific data assigned by those permissions. The request will be executed and response will be defined by the correspondent called API function, otherwise HTTP/1.1 401 Unauthorized response is returned back.Bearer tokens provided to Jet API users have a limited lifetime. However, until the token expires, the bearer token will be a full substitute for user credentials, so the token must be handled as private cryptographic material.
Can anyone show me some sample code to do this in C#? I was thinking using RestSharp would be helpful, but don't have any experience with that either.
For their API I need:
So, I'm stuck at the first phase, authorizing my API calls.
Upvotes: 3
Views: 1902
Reputation: 606
Hi You can use this sample code, i have generated this code using this link
var client = new RestClient("https://merchant-api.jet.com/api/token/");
var request = new RestRequest(Method.POST);
request.AddHeader("postman-token", "xxxx");
request.AddHeader("cache-control", "no-cache");
request.AddHeader("authorization", "Basic xxxx");
request.AddHeader("content-type", "application/json");
request.AddParameter("application/json", "{\"user\":\"xxxx\",\"pass\":\"xxxx\"}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Upvotes: 1