Skip to content

Conversation

@chriselion
Copy link
Contributor

Issue number: closes #7978

Summary

For handlers with a body parameter, previously we would raise an uncaught NotImplementedError, which results in a 500 response.

Now, raise a new subclass of NotImplementedError (to maintain existing behavior), and handle the new exception and return a 415 (Unsupported Media Type) response.

Changes

  • Added a new Exception, RequestUnsupportedContentType
  • Raise RequestUnsupportedContentType when trying to parse the request body but the content-type header isn't one of the known ones.
  • Update the default exception handler to check for RequestUnsupportedContentType, and return a response with 415 status code.

User experience

Previously, requests for some endpoints would receive a 500 response if they passed unexpected headers.

Now, they will receive a 415 response, which is more indicative of a client error.


By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Disclaimer: We value your time and bandwidth. As such, any pull requests created on non-triaged issues might not be successful.

@chriselion chriselion requested a review from a team as a code owner February 7, 2026 00:08
@chriselion chriselion requested a review from hjgraca February 7, 2026 00:08
@pull-request-size pull-request-size bot added the size/M Denotes a PR that changes 30-99 lines, ignoring generated files. label Feb 7, 2026
@github-actions github-actions bot added the bug Something isn't working label Feb 7, 2026
@codecov
Copy link

codecov bot commented Feb 7, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.73%. Comparing base (705e416) to head (deb8a73).

Additional details and impacted files
@@           Coverage Diff            @@
##           develop    #7980   +/-   ##
========================================
  Coverage    96.72%   96.73%           
========================================
  Files          278      278           
  Lines        13630    13640   +10     
  Branches      1084     1086    +2     
========================================
+ Hits         13184    13194   +10     
  Misses         327      327           
  Partials       119      119           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Contributor

@leandrodamascena leandrodamascena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.

I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.

Copy link
Contributor

@leandrodamascena leandrodamascena left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the PR! I think returning 415 is the correct behavior for unsupported content types - the previous 500 was an intentional design decision at the time, but this is a better approach. For most customers this won't break anything. However, anyone asserting status_code == 500 in their tests for this specific scenario, or monitoring/alerting on 500s from unsupported content types, will see a change in behavior. We'll keep an eye on customer feedback and revert if needed.

I left a minor suggestion on the exception hierarchy - I'll merge once you've had a chance to review it.

@leandrodamascena leandrodamascena changed the title fix: Return 415 status_code for unsupported content-type headers fix(event_handler): return 415 status_code for unsupported content-type headers Feb 9, 2026
…ub.com:chriselion/powertools-lambda-python into celion/return-415-for-unsupported-content-type
@leandrodamascena
Copy link
Contributor

Mypy is reporting an error that is unrelated to this PR. Let me check it.

@sonarqubecloud
Copy link

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working event_handlers size/M Denotes a PR that changes 30-99 lines, ignoring generated files. tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Event handler with unsupported content-type headers raises an exception instead of returning a 4xx error

2 participants