How to pass send_at argument to https://api.sendgrid.com/v3/marketing/singlesends? - sendgrid-api-v3

https://docs.sendgrid.com/api-reference/single-sends/create-single-send says the https://api.sendgrid.com/v3/marketing/singlesends endpoint takes a "send_at" argument, but it gives me "json could not be unmarshalled". Specifically:
curl -X POST "https://api.sendgrid.com/v3/marketing/singlesends" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"name": "Miss Christine Morgan"}'
works fine, but
curl -X POST "https://api.sendgrid.com/v3/marketing/singlesends" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"name": "Miss Christine Morgan", "send_at": "now"}'
and
curl -X POST "https://api.sendgrid.com/v3/marketing/singlesends" \
--header "Authorization: Bearer $SENDGRID_API_KEY" \
--header "Content-Type: application/json" \
--data '{"name": "Miss Christine Morgan", "send_at": "$(date --utc --iso=s --date='1 minute')"}'
return {"errors":[{"field":"","message":"json could not be unmarshalled"}]}.
Is the documentation just wrong, or am I passing the argument wrong?

Related

POSTMAN can't import a website XHR POST request

Until very recently I was able to use postman just fine, but since its latest updates I'm no longer able.
If I copy a POST request from a website as cURL (bash), I get this:
curl 'https://spectate-web.888sport.es/spectate/betslip/betslipFetchData' \
-H 'authority: spectate-web.888sport.es' \
-H 'accept: */*' \
-H 'accept-language: es-ES,es;q=0.9' \
-H 'cache-control: max-age=0' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundaryBfiA5TvRRorRMOGo' \
-H 'cookie: 888Cookie=lang%3Des%26OSR%3D485697%26RefType%3DNoReferrer%26TestData%3D%7B%22orig-lp%22%3A%22https%3A%2F%2Fwww.888sport.es%2F%22%2C%22referrer%22%3A%22NULL%22%7D; _gid=GA1.2.995815426.1666996817; 888TestData=%7B%22orig-lp%22%3A%22https%3A%2F%2Fwww.888sport.es%2F%22%2C%22referrer%22%3A%22NULL%22%2C%22datecreated%22%3A%222022-10-28T22%3A40%3A16.792Z%22%7D; bbsess=kN4YjaaDCW-nJWa4OxHQIRCc364; lang=esp; anon_hash=7b00acc96faf5119781cc6693e88e1bf; spectate_session=4d88ffab-af5c-452a-b0b4-df46f129d8c4%3Aanon; odds_format=DECIMAL; _ga=GA1.2.688931953.1666996817; FPID=FPID2.2.Tj33ha0XQmoaNPw2I5C29pCS2NIxwFa9J8Oic4Mfvs4%3D.1666996817; OptanonAlertBoxClosed=2022-10-28T22:40:21.763Z; _gcl_au=1.1.68988761.1666996822; OptanonConsent=isGpcEnabled=0&datestamp=Sat+Oct+29+2022+00%3A40%3A21+GMT%2B0200+(hora+de+verano+de+Europa+central)&version=6.29.0&isIABGlobal=false&hosts=&consentId=9d994a59-6978-4ff7-b84c-165e3ba44024&interactionCount=1&landingPath=NotLandingPage&groups=C0001%3A1%2CC0002%3A1%2CC0003%3A1%2CC0004%3A1; FPLC=1jxuCIujpmMEA%2B8UtQq4s3DV2dlZAI1BmbBRUYq7XbKBcFDtuXvIo0dzxqGtFeFNPmaTRKmOWUveUdiDJe6FJlGavhhPc8K9cIkAhPKropkJIbGkzkicMBb9Efbj5g%3D%3D; FPAU=1.2.1718678257.1666996822; _fbp=fb.1.1666996823784.1844480782; _sp_srt_ses.7bad=*; _sp_srt_id.7bad=1643e122-62eb-42e4-8b86-c915ac6c026c.1666996824.1.1666996824.1666996824.d981301d-7471-408b-aba2-8a2956d27e63; mzzietknzr=2a2e16c60d6d6820d5f25ff1c0853a; _gat_UA-125725186-2=1; _ga_QFPLQJ4PLW=GS1.1.1666996818.1.1.1666997839.60.0.0' \
-H 'newrelic: eyJ2IjpbMCwxXSwiZCI6eyJ0eSI6IkJyb3dzZXIiLCJhYyI6IjI1MDk2NzQiLCJhcCI6IjMwNzYyODM3IiwiaWQiOiIxMjc4OWM1MTc2ODU5ZjZlIiwidHIiOiJlNDg5YjA4OGUyYzIzZWMxMWQ5YjkxZTRmZjY3ZDc2MSIsInRpIjoxNjY2OTk3ODQ1MzkwfX0=' \
-H 'origin: https://www.888sport.es' \
-H 'referer: https://www.888sport.es/' \
-H 'sec-ch-ua: "Chromium";v="106", "Google Chrome";v="106", "Not;A=Brand";v="99"' \
-H 'sec-ch-ua-mobile: ?0' \
-H 'sec-ch-ua-platform: "Windows"' \
-H 'sec-fetch-dest: empty' \
-H 'sec-fetch-mode: cors' \
-H 'sec-fetch-site: same-site' \
-H 'user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36' \
-H 'x-spectateclient-v: 1.12' \
--data-raw $'------WebKitFormBoundaryBfiA5TvRRorRMOGo\r\nContent-Disposition: form-data; name="selectionDataForFetch"\r\n\r\n[{"id":"11411785409","is_scorecast":false,"is_cast_market":false,"is_any":false}]\r\n------WebKitFormBoundaryBfiA5TvRRorRMOGo\r\nContent-Disposition: form-data; name="allSelectionData"\r\n\r\n[{"stake":0,"each_way_selected":false,"free_bet_id":null,"sp_selected":false,"is_scorecast":false,"is_cast_market":false,"is_any":false,"survey_id":null,"recommended":false,"recommendation_location":"","bet_locate":"unknown_component","id":"11411785409"}]\r\n------WebKitFormBoundaryBfiA5TvRRorRMOGo\r\nContent-Disposition: form-data; name="extraData"\r\n\r\n{"channel":"WEB"}\r\n------WebKitFormBoundaryBfiA5TvRRorRMOGo--\r\n' \
--compressed
It returns an error because " please check your curl string for malformed url". Apparently, if you replace " with \" and ' with " you are able to import the request.
Another problem, it is imported as GET. This you can bypass by adding to the cURL the following
-X POST
but if you do, the POST request is loaded without the payload.
So, how do I accomplish importing the whole request? Why is this happening?
A couple of your headers have double quotes that are not escaped.
Try importing this;
curl -X POST "https://spectate-web.888sport.es/spectate/betslip/betslipFetchData"
-H "authority: spectate-web.888sport.es"
-H "accept: */*"
-H "accept-language: es-ES,es;q=0.9"
-H "cache-control: max-age=0"
-H "content-type: multipart/form-data; boundary=----WebKitFormBoundaryBfiA5TvRRorRMOGo"
-H "origin: https://www.888sport.es"
-H "referer: https://www.888sport.es/"
-H "sec-ch-ua: \"Chromium\";v=\"106\", \"Google Chrome\";v=\"106\", \"Not;A=Brand\";v=\"99\""
-H "sec-ch-ua-mobile: ?0"
-H "sec-ch-ua-platform: \"Windows\""
-H "sec-fetch-dest: empty"
-H "sec-fetch-mode: cors"
-H "sec-fetch-site: same-site"
-H "user-agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36"
-H "x-spectateclient-v: 1.12"
-d "$------WebKitFormBoundaryBfiA5TvRRorRMOGornContent-Disposition: form-data; name=\"selectionDataForFetch\"rnrn[{\"id\":\"11411785409\",\"is_scorecast\":false,\"is_cast_market\":false,\"is_any\":false}]rn------WebKitFormBoundaryBfiA5TvRRorRMOGornContent-Disposition: form-data; name=\"allSelectionData\"rnrn[{\"stake\":0,\"each_way_selected\":false,\"free_bet_id\":null,\"sp_selected\":false,\"is_scorecast\":false,\"is_cast_market\":false,\"is_any\":false,\"survey_id\":null,\"recommended\":false,\"recommendation_location\":\"\",\"bet_locate\":\"unknown_component\",\"id\":\"11411785409\"}]rn------WebKitFormBoundaryBfiA5TvRRorRMOGornContent-Disposition: form-data; name=\"extraData\"rnrn{\"channel\":\"WEB\"}rn------WebKitFormBoundaryBfiA5TvRRorRMOGo--rn"

How to pass curl post request where there is an array in data?

I need to pass in Okta data to my application:
url: "www.okta.com"
groups: ["g1", "g2"]
Now, how do I structure curl request to send an array?
curl --digest --user abc -H 'Content-Type: application/json' --request POST -d ' {"url":"www.okta.com", "groups": **????** }' url
The data payload is just JSON? Wouldn't you simply include the array as an element of the data object?
curl --digest --user abc -H 'Content-Type: application/json' --request POST -d ' {"url":"www.okta.com", "groups": ["g1", "g2"]}' url

Send a message with label

I would like to send an email with the Gmail API and apply a label to it, like this:
curl 'https://www.googleapis.com/gmail/v1/users/me/messages/send'
-X POST \
-H 'Authorization: Bearer [YOUR_BEARER_TOKEN]'
-H 'Accept: application/json'
-H 'Content-Type: application/json'
--data-binary '{"raw":"RAW_DATA","labelIds":["my_label"]}'
but the label does not apply.
I have the following answer :
{
"id": "MESSAGE_ID",
"threadId": "THREAD_ID",
"labelIds": ["SENT"]
}
I do not understand why ?

Attach an image file to a BigCommerce Product

The BigCommerce API documentation suggests that image files can be uploaded through the API, without having to upload it elsewhere first:
POST /catalog/products/{product_id}/images
Creates an image on a product. Publically accessible URLs and files (form post) are valid parameters
Emphasis mine. My attempts, variations on the below, mostly come back with 422 image_url must be present if uploading by url.
curl -X POST \
https://api.bigcommerce.com/stores/redacted/v3/catalog/products/123/images \
-H 'accept: application/json' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'x-auth-client: redacted' \
-H 'x-auth-token: redacted' \
-F productImage=#img_123.jpg \
-F image_url=image_123.jpg
What does a correctly formed request look like, that POSTs an image file to a product?
Related:
Bigcommerce Python API, how do I create a product with an image?
A correctly formed request looks like this:
curl -X POST \
https://api.bigcommerce.com/stores/js......7j/v3/catalog/products/32011/images \
-H 'accept: application/json' \
-H 'cache-control: no-cache' \
-H 'content-type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW' \
-H 'x-auth-client: ts2.........................r0r' \
-H 'x-auth-token: ihq.........................5b2' \
-F 'image_file=#Downloads/img_2405.jpg'
However, certain images can cause the misleading error; such as this one.
It's not clear what property of the file causes the error, but compressing or otherwise re-saving the image resolves the problem.

How to convert a cURL command to Angular?

I want this cURL
curl https://api.cardinity.com/v1/payments\
-H "Content-Type: application/json" \
-H 'Authorization: OAuth oauth_consumer_key="<your_consumer_key>", \
oauth_signature_method="HMAC-SHA1", \
oauth_timestamp="<timestamp>", \
oauth_nonce="<unique_random_string>", \
oauth_version="1.0", \
oauth_signature="<computed_oauth_signature>"'
transformed into Angular, I've tried everything.

Resources