Convert curl to HTTP request for Stripe api - http

I was trying to run the stripe API in postman, and I don't know how to set --data-urlencode correctly. Any ideas?
curl https://api.stripe.com/v1/charges/search \
-u sk_test_4eC39HqLyjWDarjtT1zdp7dc: \
--data-urlencode query="amount>999 AND metadata['order_id']:'6735'" \
-G
What's the http version for this? Thanks in advance.

Postman lets you choose the encoding straight in their UI under the Body section:

Related

API Filter in Visual Studio Code keeps being ignored and requests for everything

I am doing some API integration and im just testing out Celoxis API commands, they use REST API. I have downloaded Visual studio code and installed the rest API add on. Normal cURL commands work etc but the filter request wont:
curl -g -X GET -H 'Content-Type: application/json' -H 'Authorization: bearer YourTokenHere' -G --data-urlencode 'filter={"project.id":"1234"}' 'https://app.celoxis.com/psa/api/v2/tasks'
Any help would be appreciated

How to get the http request to work on my browser

I am using the here-api to get a 7 day forecast for my application. When I copy and paste the code onto my browser from the Here documentation using my app-code and app-id, it says that my app-id and app-code are invalid. I am wondering why this is happening since i have an account with Here and am using the code they provided.
I have already tried switching them.
https://weather.api.here.com/weather/1.0/report.json
?app_id={xxxxxx}
&app_code={xxxxxx}
&product=forecast_7days_simple
&latitude=41.83
&longitude=-87.68
When i enter this request i expected json in return but instead get a page that says my code is invalid. I am using safari but have tried chrome and i still get the same problem
Make sure to remove the curly brackets around the credentials, and to remove newlines (if any) that were added in the documentation for readability.
If you do have valid credentials, the following request should work:
https://weather.api.here.com/weather/1.0/report.json?app_id=xxxx&app_code=yyyy&product=forecast_7days_simple&latitude=41.83&longitude=-87.68
Use the query like below. For any query you can use the swagger here . And, from the "view code" button you can download either the curl or the jQuery snippet.
curl \
-X GET \
-H 'Content-Type: *' \
--get 'https://weather.api.here.com/weather/1.0/report.json' \
--data-urlencode 'product=forecast_7days_simple' \
--data-urlencode 'latitude=52.516' \
--data-urlencode 'longitude=13.389' \
--data-urlencode 'oneobservation=true' \
--data-urlencode 'app_id={YOUR_APP_ID}' \
--data-urlencode 'app_code={YOUR_APP_CODE}'

Configure HTTP Post headers and body to send Twilio request

I am trying to get my custom built HTTP Post request to execute the following call to twilio
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/xxxxx/Messages.json' \
--data-urlencode 'To=+15558675309' \
--data-urlencode 'From=+15017250604' \
--data-urlencode 'Body=This is the ship that made the Kessel Run in fourteen parsecs?' \
-d 'MediaUrl=https://c1.staticflickr.com/3/2899/14341091933_1e92e62d12_b.jpg' \
-u xxxxx:your_auth_token
My custom built request accepts an URL, headers and a body, similar to the HTTP Post form at Hurl.it.
How do I translate the portions
--data-urlencode
and
-d
into my URL, headers and body?
Example: The -u part I put into a header with "Authorization: Basic ", and it worked perfectly, the server recognises me. I just can't get it to recognise the From, To, Body parts.
Tks!
Twilio developer evangelist here.
Both the -d and --data-urlencode flags indicate adding data to the POST request body. The data also needs to be url encoded. When the request is made, all the url encoded data is concatenated with ampersands and sent as the body.
In the case of your example, the POST request body would end up looking like this:
To=%2B15558675309&From=%2B15017250604&Body=This%20is%20the%20ship%20that%20made%20the%20Kessel%20Run%20in%20fourteen%20parsecs%3F&MediaUrl=https%3A%2F%2Fc1.staticflickr.com%2F3%2F2899%2F14341091933_1e92e62d12_b.jpg
Let me know if that helps at all.

where to store request.json file

I am trying out Google video intelligent api by following the quick start guide here. I am using cloud shell to run all the codes. In the guide, to make an annotate video request, I need to create a request.json file.
Where to put this file once it's created?
Thanks very much for your help!
The request.json file in this case should be saved in the same directory that you'll make the curl request from in step 2 of that guide. The curl command points to that file at the end:
curl -s -H 'Content-Type: application/json' \
-H 'Authorization: Bearer ACCESS_TOKEN' \
'https://videointelligence.googleapis.com/v1beta1/videos:annotate' \
-d #request.json
The #request.json means it's looking in the current directory for the file.

Curl-convert to a simple http request?

I have some curl request, in which i would like to build from it a basic POST request-authenticated (with headers etc), i couldn't find any tool that convert that :
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxx/Calls.json' \
--data-urlencode 'To=xxxxxxx65542' \
--data-urlencode 'From=+xxxxxxx4215' \
-d 'Url=https://api.twilio.com/2010-04-01' \
-d 'Method=GET' \
-d 'FallbackMethod=GET' \
-d 'StatusCallbackMethod=GET' \
-d 'Record=false' \
-u ACbe68cddxxxxxxxxxxxx3aba243cc4cdb:0f442xxxxxxxxxxxxxxxxxxx
So how would my POST request should look like ?
Okay so i was trying to figure out how to send a text message from an ESP8266 nodeMcu v0.9 module. It is capable of working like an arduino with the arduino ide 1.6.4.
Anyways, I found http://textbelt.com and it only shows a simple CURL way of sending the text message.
This is the CURL message it wants you to send
$ curl -X POST http://textbelt.com/text \ -d number=5551234567 \ -d "message=I sent this message for free with textbelt.com"
So to convert to a normal HTTP POST command i did the following. (this works in Arduino IDE)
number and message are String objects.
String messageToSend = "number="+number+"&message="+message;
client.print("POST /text HTTP/1.1\r\n");
client.print("Host: textbelt.com\r\n");
client.print("Content-Type: application/x-www-form-urlencoded\r\n");
client.print("Content-Length: ");
client.print(messageToSend.length());
client.print("\r\n\r\n");
client.print(messageToSend);
At first i tried without the Content-Type but that didn't seem to work. So i had to add the type of content i was sending as well.
If you were to monitor the network traffic with say WireShark you would see
POST /text HTTP/1.1\r\n
Host: textbelt.com\r\n
Content-Type: application/x-www-form-urlencoded\r\n
Content-Length: 48\r\n
\r\n
number=5551234567&message=this is a text message
I may have been able to use less text with text/plain as the content-type but i think it may need the application urlencoded type to work.
Hope this helps someone else trying to convert curl to http.
From the cURL man page :
-H, --header (HTTP) Extra header to use when getting a web page. You may specify any number of extra headers. Note that if you
should add a custom header that has the same name as one of the
internal ones curl would use, your externally set header will be
used instead of the internal one. This allows you to make even
trickier stuff than curl would nor‐ mally do. You should not replace
internally set headers without knowing perfectly well what you're
doing. Remove an internal header by giving a replacement without
content on the right side of the colon, as in: -H "Host:". If you send
the custom header with no-value then its header must be terminated
with a semicolon, such as -H "X-Custom- Header;" to send
"X-Custom-Header:".
curl will make sure that each header you add/replace is sent with the
proper end-of-line marker, you should thus not add that as a part of
the header content: do not add newlines or carriage returns, they will
only mess things up for you.
See also the -A, --user-agent and -e, --referer options.
This option can be used multiple times to add/replace/remove multiple
headers.
Amazon AWS makes heavy use of headers for authentication. A quick Google should lead to many examples such as this one from http://tmont.com/blargh/2014/1/uploading-to-s3-in-bash :
curl -X PUT -T "${file}" \
-H "Host: ${bucket}.s3.amazonaws.com" \
-H "Date: ${dateValue}" \
-H "Content-Type: ${contentType}" \
-H "Authorization: AWS ${s3Key}:${signature}" \
https://${bucket}.s3.amazonaws.com/${file}
All you need to do is adapt the AWS examples for your twilio use.
To make the example into a POST, just change PUT to POST and add your POST fields -d "field1=val1&field2=val2&field3=val3"
You can specify the headers using --header and the type of request (POST) by using -X / --request parameters.
Example:
curl --request POST --header "X-MyHeader: MyAuthenticatedHeader" www.stackoverflow.com
In your case it should be:
curl -X POST 'https://api.twilio.com/2010-04-01/Accounts/xxxxxxxxxxxxx/Calls.json' \
--header 'X-MyHeader: MyAuthenticatedHeader' \
--data-urlencode 'To=xxxxxxx65542' \
--data-urlencode 'From=+xxxxxxx4215' \
-d 'Url=https://api.twilio.com/2010-04-01' \
-d 'Method=GET' \
-d 'FallbackMethod=GET' \
-d 'StatusCallbackMethod=GET' \
-d 'Record=false' \
-u ACbe68cddxxxxxxxxxxxx3aba243cc4cdb:0f442xxxxxxxxxxxxxxxxxxx

Resources