question

Raghav Gautam avatar image
Raghav Gautam asked

DeleteReport giving 400 BAD REQUEST :"Event or endpoint is missing in the request."

I'm sending DeletReport from API service POSTMAN to alexa EU event gateway for my skill : amzn1.ask.skill.23e3c96e-9568-4a36-a43a-0c98c369090a

I'm Sending this:

Content-Type:application/json

{
    "event": {
        "header": {
            "messageId": "0a29asdb-9299",
            "name": "DeleteReport",
            "namespace": "Alexa.Discovery",
            "payloadVersion": "3"
        },
        "payload": {
            "endpoints": [
                {
                    "endpointId": "dummy01"
                }
            ],
            "scope": {
                "type": "BearerToken",
                "token": "X6L7aOx7eGcAyL3lXBH1g2sA5U42S1"
            }
        }
    }
}


and receiving back response:

{
    "header": {
        "namespace": "System",
        "name": "Exception",
        "messageId": "e09d150b-4430-425a-82a2-86542159c4de"
    },
    "payload": {
        "code": "INVALID_REQUEST_EXCEPTION",
        "description": "Event or endpoint is missing in the request."
    }
}


Sending this in Discovery JSON:

{
  "event": {
    "payload": {
      "scope": {
        "type": "BearerToken",
        "token": "X6L7aOx7eGcAyL3lXBH1g2sA5U42S1"
      },
      "endpoints": [
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "brightness"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "color"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "colorTemperatureInKelvin"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorTemperatureController"
            }
          ],
          "friendlyName": "Dummy 1",
          "description": "LED working on GRID OS",
          "endpointId": "dummy01",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "LIGHT"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            }
          ],
          "friendlyName": "Switchmyrm",
          "description": "Switch working on GRID OS",
          "endpointId": "dummy02_0_0",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "SWITCH"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            }
          ],
          "friendlyName": "Switchroom",
          "description": "Switch working on GRID OS",
          "endpointId": "dummy02_0_1",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "SWITCH"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "percentage"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PercentageController"
            }
          ],
          "friendlyName": "Fanmyroomm",
          "description": "Fan working on GRID OS",
          "endpointId": "dummy02_1_0",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "OTHER"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "percentage"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PercentageController"
            }
          ],
          "friendlyName": "Fanwwwwwww",
          "description": "Fan working on GRID OS",
          "endpointId": "dummy02_1_1",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "OTHER"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "brightness"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "color"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "colorTemperatureInKelvin"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorTemperatureController"
            }
          ],
          "friendlyName": "Dummy 3",
          "description": "LED working on GRID OS",
          "endpointId": "dummy03",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "LIGHT"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "brightness"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "color"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "colorTemperatureInKelvin"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorTemperatureController"
            }
          ],
          "friendlyName": "GRID",
          "description": "LED working on GRID OS",
          "endpointId": "438bd2j",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "LIGHT"
          ]
        },
        {
          "capabilities": [
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "connectivity"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.EndpointHealth"
            },
            {
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "powerState"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.PowerController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "brightness"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.BrightnessController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "color"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorController"
            },
            {
              "properties": {
                "retrievable": "true",
                "proactivelyReported": "true",
                "supported": [
                  {
                    "name": "colorTemperatureInKelvin"
                  }
                ]
              },
              "version": "3",
              "type": "AlexaInterface",
              "interface": "Alexa.ColorTemperatureController"
            }
          ],
          "friendlyName": "GRID",
          "description": "LED working on GRID OS",
          "endpointId": "23366cj",
          "manufacturerName": "Unnova Systems",
          "displayCategories": [
            "LIGHT"
          ]
        }
      ]
    },
    "header": {
      "namespace": "Alexa.Discovery",
      "payloadVersion": "3",
      "name": "Discover.Response",
      "messageId": "a1adc914-1dee-4072-b996-66a8fae4dc0f"
    }
  }
}
alexa skills kitalexa smart homesmart home
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Amazon_Bernardo Bezerra avatar image
Amazon_Bernardo Bezerra answered

Hello and thank you for your message.

Are you still facing this issue? Can you please share your discovery JSON?

Regards,
Barry

6 comments
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

I have edited the question to include discovery JSON

0 Likes 0 ·

Hello @Raghav Gautam and thanks for the additional information.

I was not able to reproduce the issue. Can you please test again and if you get a 400 error message back, let me know an approximate time of when you tested?

Regards,
Barry

0 Likes 0 ·
Raghav Gautam avatar image Raghav Gautam Amazon_Bernardo Bezerra ♦♦ ·

I hit the below API endpoint at 10:38PM IST (5:10 PM UTC) on 07/31/2019 and received 400 BAD REQUEST with the same error:


POST /v3/events HTTP/1.1
Host: api.eu.amazonalexa.com
Content-Type: application/json
User-Agent: PostmanRuntime/7.15.0
Accept: */*
Cache-Control: no-cache
Postman-Token: 4a708330-ce83-4c02-af13-03c7c578cc1f,31a511b7-e593-49c1-b967-bf8430db009e
Host: api.eu.amazonalexa.com
accept-encoding: gzip, deflate
content-length: 510
Connection: keep-alive
cache-control: no-cache

{
    "event": {
        "header": {
            "messageId": "aabb-123asddf-sade-sadsad",
            "name": "DeleteReport",
            "namespace": "Alexa.Discovery",
            "payloadVersion": "3"
        },
        "payload": {
            "endpoints": [
                {
                    "endpointId": "dummy01"
                }
            ],
            "scope": {
                "type": "BearerToken",
                "token": "Z106zWzvVK3Hs00atmvem5pHIbgNxT"
            }
        }
    }
}
0 Likes 0 ·
Show more comments
Raghav Gautam avatar image
Raghav Gautam answered

@barry@amazon

Still not working.

oAuth Token received in AcceptGrant from alexa on 2019/11/25 01:50:56:258 1:50am IST

{
  "directive": {
    "header": {
      "namespace": "Alexa.Authorization",
      "name": "AcceptGrant",
      "messageId": "8cfab718-a3f7-4f84-a463-9af1be0a5dd3",
      "payloadVersion": "3"
    },
    "payload": {
      "grant": {
        "type": "OAuth2.AuthorizationCode",
        "code": "RHSmrPARNhieqOqUnquD"
      },
      "grantee": {
        "type": "BearerToken",
        "token": "n2mUfvTRtMTHtHnEqQaCW8LsCcNmqY"
      }
    }
  }
}


Now when I send DeleteReport with "RHSmrPARNhieqOqUnquD" in header. I still get invalid access token.Request sent on 2019/11/25 02:07AM IST

POST /v3/events HTTP/1.1
Host: api.eu.amazonalexa.com
Content-Type: application/json
Authorization: Bearer RHSmrPARNhieqOqUnquD
User-Agent: PostmanRuntime/7.15.2
Accept: */*
Cache-Control: no-cache
Postman-Token: adb2b3cf-9575-4093-848a-c7d8eb7e8e5c,9fe593a9-46ea-450c-a493-8fb37a40b79c
Host: api.eu.amazonalexa.com
Accept-Encoding: gzip, deflate
Content-Length: 509
Connection: keep-alive
cache-control: no-cache

{
    "event": {
        "header": {
            "messageId": "f47rat1c-52e7-4b0e-81e1-827sshagfd",
            "name": "DeleteReport",
            "namespace": "Alexa.Discovery",
            "payloadVersion": "3"
        },
        "payload": {
            "endpoints": [
                {
                    "endpointId": "x55dd02"
                }
            ],
            "scope": {
                "type": "BearerToken",
                "token": "RHSmrPARNhieqOqUnquD"
            }
        }
    }
}
1 comment
10 |5000

Up to 2 attachments (including images) can be used with a maximum of 512.0 KiB each and 1.0 MiB total.

Hello @Raghav Gautam and thanks for the detailed reply.

I am now able to see the cause of your issue. The code you are using to send as a BearerToken is actually the one that you need to use in order to gain the accessToken and the refreshToken.

Once you have the accessToken, you will send it as the BearerToken and then will be successfully authenticated. If when you try to use your accessToken you get an error saying it has expired, you will need to use the refreshToken in order to get a new one.

The following HTTP code, exemplifies how to request the accessToken and the refreshToken:

POST /auth/o2/token HTTP/1.1
Host: api.amazon.com
Content-Type: application/x-www-form-urlencoded
cache-control: no-cache
Postman-Token: bf626f8f-5c75-4667-a696-1eff36dfba12

grant_type=authorization_code&code=<yourCodeFromTheAcceptGrant>&client_id=<yourClientId&client_secret=<yourClientSecret>

You should get a reply similar to this:

{
    "access_token": "Atza|IwEBICzT15Ia67vORTrQK_lOM4sak4jYJsyMoIuPffRrn4SomORCYfLulwWctDsEMYHPQ7-Ax0HRWTMCVZY6uJsDKh6NNSmQX5AgkyUzGEh065tTJxpK986Z356bfpirJw8Lvu6XZyV2bexbSJKjdNmbb01lcmANvCwuMZ1l1-JihZKzbDSVs1kD_17nZcPnHr4v4RrJ330ET2grVreeq9ZzRMS6DM1WtBI0CT6ccF8ELC2lpzjQ6NALITCNr5OxHGbDyveJDRUmzGGh9mcPTkXyjJ2mV6bY8ViPzX3NRgHr3ha7T9PZcNkHir0CNGe9RGAisVgCQHsECZcHNApgvvHrjRUi",
    "refresh_token": "Atzr|IwEBIMykMEL4W53tl4nFpvn6Wt9Cg_tZDskXOjOGTxCC27ksfZZlze3r_eQNbFPL_AaAIZDZcZ7R60iMCH3yq-DgqJkfeoziaV-W658Vp1qvnsik5y_SG7PPAaWUNBz6M2Vg8L7tVg59x8w5q_hBJb1xHoBO3xZPU6qe1PVkrF1ZQHMakXbQHTjAuG-jJhS8hpFbfxBAwh4E7MvUD8JJ8yHfgqsdILRSDRuJ3ZkMD86WUHbtGSRxbFODCqThF4WZhRSKC8iljDfnuVin7hH_2uYfQ8eJ3waYGrX4Q8S85CF-hftHlPkWniiU8wM1bn8nxjrLjp4HCd1-ZPA7Lcr6eV7shI8Y",
    "token_type": "bearer", 
    "expires_in": 3600
}

The value in the accessToken key is the one that you need to pass in your DeleteReport.

I hope this clarifies the process for you.

Regards,
Barry

0 Likes 0 ·