List all the regions using the azure api - rest

I am trying get all the possible regions to which a vm can be provisioned using the azure rest api.
The end point which i found is
https://management.core.windows.net/<subscription-id>/locations
which is documented here
but i am getting an error.
<Error xmlns="http://schemas.microsoft.com/windowsazure" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><Code>ForbiddenError</Code><Message>The server failed to authenticate the request. Verify that the certificate is valid and is associated with this subscription.</Message></Error>
Also i tried using the query param ?api-version=2016-04-01 and header x-ms-version: 2016-04-01 without any luck.

According to your error code ForbiddenError, it seems that there is no authorization or incorrect authorization in the header. If it is that case, please have a try to add the authorization in the header. Authorization format is starting with "Bearer" like "Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIā€¦..." . More info about how to get the access token please refer to the document. It works for me correctly, and I use the x-ms-version: 2014-10-01, details please refer to the snapshot.

You're using an ancient management endpoint.
Here's the query for ARM (using ARMClient):
C:\>armclient.exe get https://management.azure.com/subscriptions/
xxxxx-xxxxx-xxxxx-xxxxx/locations?api-version=2016-09-01 -verbose
---------- Request -----------------------
GET /subscriptions/xxxx-xxxx-xxxxx-xxxxx/locations?api-version=2016-09-01 HTTP/1.1
Host: management.azure.com
Authorization: Bearer eyJ0eXAiOiJKV...
User-Agent: ARMClient/1.1.1.0
Accept: application/json
x-ms-request-id: xxxxxxxxxxxx
---------- Response (326 ms) ------------
HTTP/1.1 200 OK
Pragma: no-cache
x-ms-ratelimit-remaining-subscription-reads: 14999
x-ms-request-id: xxxxxxxxxxxxx
x-ms-correlation-request-id: xxxxxxxxxxx
x-ms-routing-request-id: NORTHEUROPE:20170109T094615Z:exxxxxxxxxxxxxx
Strict-Transport-Security: max-age=31536000; includeSubDomains
Cache-Control: no-cache
Date: Mon, 09 Jan 2017 09:46:15 GMT
{
"value": [
{
"id": "/subscriptions/xxxx-xxxx-xxxx-xxxx/locations/eastasia",
"name": "eastasia",
"displayName": "East Asia",
"longitude": "114.188",
"latitude": "22.267"
},
{
"id": "/subscriptions/xxxx-xxxx-xxxx-xxxx/locations/southeastasia",
"name": "southeastasia",
"displayName": "Southeast Asia",
"longitude": "103.833",
"latitude": "1.283"
},
{
"id": "/subscriptions/xxxx-xxxx-xxxx-xxxx/locations/centralus",
"name": "centralus",
"displayName": "Central US",
"longitude": "-93.6208",
"latitude": "41.5908"
},
{
"id": "/subscriptions/xxxx-xxxx-xxxx-xxxx/locations/eastus",
"name": "eastus",
"displayName": "East US",
"longitude": "-79.8164",
"latitude": "37.3719"
},
...
If you intentionally want to query the old RDFE management API you'll need to include the management certificate in your call.
I think you can use a token with RDFE too, but not a Bearer token. Just sniff whatever Get-AzureLocation -debug in PowerShell is doing.

Related

How to set up dredd to ignore headers in the assertion

I am using Dredd to test one of my endpoints. I think the test is failling due to the headers, because I'm getting the following expected:
headers:
Content-Type: application/json
body:
[
{
"id": 15107,
"name": "Route Name",
"date": "2022-01-27T09:00:00",
"full_user_name": "Test Admin",
"url": "api/2/users/1/routes/15107"
}
]
statusCode: 200
And the following actual:
statusCode: 200
headers:
date: Wed, 02 Feb 2022 12:54:11 GMT
server: WSGIServer/0.2 CPython/3.6.9
content-type: application/json; charset=utf-8
vary: Accept, Cookie
allow: GET, POST, PATCH, HEAD, OPTIONS
access-control-allow-origin: None
access-control-allow-methods: POST,GET
access-control-allow-headers: Origin,Content-Type,Accept,Accept-Encoding
access-control-allow-credentials: true
x-frame-options: SAMEORIGIN
content-length: 136
bodyEncoding: utf-8
body:
[
{
"id": 15107,
"name": "Route Name",
"date": "2022-01-27T09:00:00",
"full_user_name": "Test Admin",
"url": "api/2/users/1/routes/15107"
}
]
The only difference I see is the headers. Is there any way to ignore those? Like, for instance, content-length header. Maybe I only need to include the auth header in the Open API file. Right now I have specified documentation as follows:
...
securitySchemes:
ApiKey:
type: apiKey
name: Authorization
in: header
description: Authentication token
security:
- ApiKey: []
And running dredd as follows with a python server:
dredd oas-routes.yaml http://127.0.0.1:8000/api/2/users/1/routes --header="Authorization: Token 6b232e1c00bbc8b12d0066a483bf401009fbdb21"
Any idea how to do this correctly? I'm quite new to testing with dredd to be honest.

VSCode httpClient plugin showing Header name must be a valid HTTP token

I have this API call in the VSCode RESTAPI caller plugin:
###
POST {{endpoint}}/snapcenter/SnapCenterInventory/account/{{accountId}} {{#protocol}}
content-type: application/json
Authorization: {{token}}
{
"Server": "10.10.10.10",
"ApplicationCount": 10,
"User": "admin",
"Password": "foo",
"Port": 3000,
"RoleName": "bar"
}
###
I have all the variables defined, working fine in GET cases.
However for POST/PATCH/PUT, it's giving this error:
Header name must be a valid HTTP token ["{"]
Not able to figure out what I am missing here.
Any help will be highly appreciated.
Thanks,
Pradip
I think I can able to find it out. I need to keep a newline b/w the header and the content.
This works:
POST {{endpoint}}/servers/account/{{accountId}} {{#protocol}}
Content-Type: application/json
Authorization: {{token}}
{
"k1": "v5",
"k2": 110,
"k3": true,
"k4": ["v1", "v2", "v3", "v4", "v5"],
"k5": {
"k51": "v5",
"k52": 2
},
"k6": {
"k61": true
}
}
Mind the gap b/w the content and the header.

Loopback get multipart form-data parameters

I have a file container hosting my images. I did create some additional properties for that container using slc loopback:property and put in a string types such as: title, description, date(date). I am able to upload my image via api/containers/{container}/upload
Using Advanced REST Client, I add an HTTP Header: application/x-www-form-urlencoded
I then input data into my forms. I add my image and send, here is my response:
```
Vary: Origin, Accept-Encoding
Access-Control-Allow-Credentials: true
X-Xss-Protection: 1; mode=block
X-Frame-Options: DENY
X-Download-Options: noopen
X-Content-Type-Options: nosniff
Content-Type: application/json; charset=utf-8
Content-Length: 205
Etag: W/"cd-dUHU2bNp6fDC61813wVPRw"
Date: Fri, 24 Jun 2016 20:52:13 GMT
Connection: keep-alive
```
```
{
"result": {
"files": {
"fileUpload2": [
{
"container": "images",
"name": "pnw.png",
"type": "image/png",
"size": 269360
}
]
},
"fields": {
"created": [
"04/20/2016"
],
"title": [
"title"
],
"description": [
"this is a description"
]
}
}
}
```
I am curious, is the fields object stored somewhere? (I do have mongo connector good to go) or is this in memory? I can't seem to find it anywhere and not sure how to do a GET req. My ultimate goal is to do one image post with additional parameters/properties and retrieve the same in one instance. Thanks!
I will go another route as I do not think I am understanding content-disposition correctly.

fiware-orion "code" : "400", "details" : "invalid payload: unknown fields"

I've created an Orion instance based on orion-psb-image-R4.2 instance in FIWARE Lab, just updated (orion, pep, cygnus) after setting it. It is listening on internet and I have verified connevity and so.
I tried to create a simple instance with this query:
POST http:x.y.w.z:1026/v1/contextEntities/
Headers:
Content-Type: application/json
Accept: application/json
Body:
{
"id": "Sala1",
"type": "Sala",
"Attributes": [
{
"name": "temperatura",
"type": "float",
"value": "20"
},
{
"name": "humedad",
"type": "float",
"value": "80"
}
]
}
The answer received from the Web server is:
200, OK
Date: Fri, 05 Feb 2016 10:34:51 GMT
Content-Length: 132
Content-Type: application/json
But the answer from ORION is:
{
"errorCode": {
"code": "400",
"reasonPhrase": "Bad Request",
"details": "invalid payload: unknown fields"
}
}
Any idea on what I'm missing?.
Thanks & Regards.
EDIT: Sorry... that's something I already fixed. Somehow I copied it wrongly.
The previous error was "json syntax error".
That's fixed.
The error I reported remains after writing "attributes" with lower case "a".
Any other idea?
POST: HTTP://x.y.w.z:1026/v1/contextEntities/
HEADERS
Content-Type: application/json
Accept: application/json
BODY
{
"id": "Sala1",
"type": "Sala",
"attributes": [
{
"name": "temperature",
"type": "float",
"value": "20"
},
{
"name": "humidity",
"type": "float",
"value": "80"
}
]
}
Thanks in advance
Orion API is case sensitive. Thus, probably the problem is that your payload uses Attributes instead of attributes (i.e. lower-case a).

Ride Reminders Uber Api got JSON error

Hello I am trying implement Ride Reminder Uber API in my project but I got error response like:
Reference URL:
https://developer.uber.com/docs/v1-reminders-post
JSON Error Response:
{
"message": "Unable to parse JSON in request body.",
"code": "invalid_json"
}
URL
https://api.uber.com/v1/reminders
Headers:
Content-Type: application/json
Authorization: Token vzOv0AaaZVRaV1FiZLt9SPU2ZgIrBgQ6uZy6j4Gr
Post Params:
reminder_time:1451496600(Unix UTC timestamp of when the reminder will occur.)
phone_number: +91xxxxxxxxxx(India's number)
server_token: vzOv0AaaZVRaV1FiZLt9SPU2ZgIrBgQ6uZy6j4Gr
event: {
"time": "1451498400",
"longitude": "72.5290",
"latitude": "23.0384",
"location": "Vastrapurlake",
"name": "Test"
}
More detail check PostMan Screen shots:
Post Params:Click here
Header Params:Click here
Can you please help me out, Thanks In Advance!!
Your Content-Type and token are valid dont change anything there.
Just convert your params in json dont forgot to use double quote.
You have to pass these data as json format in postman.
{"reminder_time":"1451649600",
"phone_number": "+91<YOUR-MOBILE-NUMBER>",
"server_token": "vzOv0AaaZVRaV1FiZLt9SPU2ZgIrBgQ6uZy6j4Gr",
"event": {
"time": "1451649600",
"longitude": "72.5290",
"latitude": "23.0384",
"location": "Vastrapurlake",
"name": "Test"
}}