# Profile: defaults   (spring-boot 4.1.1, spring-framework 7.0.9)

## domain exception (OrderNotFoundException)
$ curl -X GET /orders/999
HTTP 500  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.029Z","status":500,"error":"Internal Server Error","path":"/orders/999"}

## type mismatch (/orders/abc)
$ curl -X GET /orders/abc
HTTP 400  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.063Z","status":400,"error":"Bad Request","path":"/orders/abc"}

## invalid body (@Valid)
$ curl -X POST /orders -d '{"sku":"","quantity":0,"customerEmail":"nope"}'
HTTP 400  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.250Z","status":400,"error":"Bad Request","path":"/orders"}

## invalid @RequestParam (@Max)
$ curl -X GET /orders?limit=500
HTTP 400  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.301Z","status":400,"error":"Bad Request","path":"/orders"}

## ErrorResponseException (OutOfStock)
$ curl -X POST /orders -d '{"sku":"SKU-2","quantity":3,"customerEmail":"a@b.co"}'
HTTP 409  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.354Z","status":409,"error":"Conflict","path":"/orders"}

## ResponseStatusException
$ curl -X GET /orders/legacy/7
HTTP 410  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.383Z","status":410,"error":"Gone","path":"/orders/legacy/7"}

## unknown path
$ curl -X GET /no-such-thing
HTTP 404  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.412Z","status":404,"error":"Not Found","path":"/no-such-thing"}

## wrong HTTP method
$ curl -X DELETE /orders/1
HTTP 405  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.437Z","status":405,"error":"Method Not Allowed","path":"/orders/1"}

## malformed JSON
$ curl -X POST /orders -d '{"sku":'
HTTP 400  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.462Z","status":400,"error":"Bad Request","path":"/orders"}

## unexpected exception
$ curl -X GET /orders/boom
HTTP 500  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.487Z","status":500,"error":"Internal Server Error","path":"/orders/boom"}

## exception in a servlet filter
$ curl -X GET /orders/1  [X-Tenant: BAD!]
HTTP 500  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.509Z","status":500,"error":"Internal Server Error","path":"/orders/1"}

## 401 no credentials
$ curl -X GET /admin/orders
HTTP 401  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.540Z","status":401,"error":"Unauthorized","path":"/admin/orders"}

## 403 wrong role
$ curl -X GET /admin/orders  [AUTH:user:user]
HTTP 403  Content-Type: application/json
{"timestamp":"2026-09-11T17:03:04.735Z","status":403,"error":"Forbidden","path":"/admin/orders"}

