$ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com/one","alias":"demo-link"}' HTTP/1.1 201 X-RateLimit-Remaining: 4 Location: http://localhost:8080/demo-link {"code":"demo-link","shortUrl":"http://localhost:8080/demo-link","expiresAt":null} $ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com/two","alias":"demo-link"}' HTTP/1.1 409 X-RateLimit-Remaining: 3 {"detail":"alias already taken: demo-link","instance":"/api/v1/urls","status":409,"title":"Conflict"} $ curl -si -X POST /api/v1/urls -d '{"url":"ftp://example.com/file"}' HTTP/1.1 400 X-RateLimit-Remaining: 2 {"detail":"only http and https URLs are allowed","instance":"/api/v1/urls","status":400,"title":"Bad Request"} $ curl -si -X POST /api/v1/urls -d '{"url":"https://example.com","alias":"api"}' HTTP/1.1 400 X-RateLimit-Remaining: 1 {"detail":"alias must be 4-32 chars of A-Z a-z 0-9 _ -","instance":"/api/v1/urls","status":400,"title":"Bad Request"}