Http needs a status code for grudging acceptance. We have 202 Accepted. We need 222 Tolerated.

For when the client is doing it wrong, but you've decided to be the bigger person and deal with it anyway.

Actually, what I *really* want is a 3xx with a body.

322 Translated
Here's how you should have written that request, now go back to your seat and do it over

I'm doing activitypub things, and contemplating such quirks as the fact that there is no limit to the kind or depth of activities that can be the object of an undo activity.

In case you're wondering what prompted this.

Kind of ridiculous that this is now one of my top ten fedi posts, by the numbers

oh, a couple of points:

1. 429 is the status code that means things like "I'm ignoring you" or "stop doing that"

A "tolerated" response code could feed into a fail2ban-like system that escalates to 429s.

2. I don't know why so many people think this is a joke?. It's barely even shitposty. And it's a real desire. I do genuinely want these things.

@jenniferplusplus
But why accomodate for people that don't know what they're doing?
@Ginafla I want to convey that a client asked for something that is unnecessarily complicated or expensive, and there's not another mechanism to coordinate.
@jenniferplusplus @Ginafla would be nice with some metadata, like "I will start rate limiting soon" or "you don't have high enough reputation with me to do this"
@Ginafla @jenniferplusplus because status codes are the primary mechanism for a server to pass messages to the client? "This isn't great, you should rethink it" is potentially very useful information to pass back to a client!

@Ginafla @jenniferplusplus

AP isn't a clean spec. It defines a way to say a bunch of stuff. It doesn't even really define what the things you may say mean. Different implementations will support different subsets of all AP messages.

It's a mess, and being able to hint at the issue with trying to speak your dialect is useful.

Having said that, lots of unambiguous protocols also allow for explanations of failure that go beyond HTTP status codes. Debug info is helpful!

I would *love* to have this, as a linting mechanism for clients to succeed-but-warn; for instance, it'd be helpful for API deprecations.

@jenniferplusplus How about "200 OK?" where the question mark indicates that it's acceptable but the server thinks you're a dummy.

I wonder whether applications would notice the text change since they often don't check it, but presumably it should show up in developer tools

@jenniferplusplus Can't speak for the rest, but I wasn't joking when I boosted your original post.
@jenniferplusplus I would go 417: "Expectation failed" and escalate to 418: "I'm a Teapot" before escalating it to a 429: "Too Many requests" leading to a fail2ban and ultimately a 403 or 406 (lacking a 417.2 I'm very disappointed now)

@jenniferplusplus

If HTTP can accommodate 418, it can certainly accommodate passive aggressive status codes.

@jenniferplusplus 321 Forcibly Relocated
@jenniferplusplus 224 no content for you personally
@mhoye @jenniferplusplus 433 F*** This Request In Particular

@jenniferplusplus How about

419 Yeah, And I'm A Teapot

as the sassy response.

@chrisg @jenniferplusplus i once had someone's instance 419ing my instance :/
@aliceif That sounds very much something that should be CWed ๐Ÿ˜ƒ

@jenniferplusplus 444 Still not found

No, the page you requested still is not existent, even after you reloaded multiple times.

@jenniferplusplus "your request is such a mess I can't even tell specifically what's wrong with it, please go away" but I guess that's already 400
@aran @jenniferplusplus HTTP2 has a GOAWAY frame ๐Ÿ˜ฌ but that's just part of normal operations
@jenniferplusplus First order of business is to find appropriate imagery for http://http.cat .
HTTP Cats

API for HTTP Cats

HTTP Status Cats API
@jenniferplusplus Why not 400 Bad Request with a documentation link?
@jenniferplusplus and if you go that route, why not track how often the 322 response is served to clients and if they do not learn to send proper requests we can rate-limit them a bit more than well-behaved clients
@jenniferplusplus Would 207 work for you? You could then have both a 200 plus embed richer data as an error report (this is permitted within 207 to allow WEBDAV to report an error about an affected resource).

@jenniferplusplus Like a horribly twisted HTTP/2 Server Push

"Here's the request I'm going to act like you made instead"

@jenniferplusplus A 300 Multiple Choices status can have a response body. The options could be "are you really sure you what you me to do that?" and "How about this better way of asking for what you want?"

@darrel_miller Actually every 3xx can have a response body (nginx generates an html for 301 for example). It's just that you most likely won't see the html response of most if not all of them in a normal web browser (I'm not sure how a 300 would be handled, but apparently that's for conneg) since they're redirect codes

I can kinda see the point of a "322" here where it would be like a 303 but the server wants to let you know that your request's format is deprecated or something

@jenniferplusplus

@jenniferplusplus Isn't 222 already used for Auth succeeded? 218 is 'this is fine' which seems sufficiently passive agressive :)
@scottgal 218 was made up by apache. I found no reference to an existing 222 code
@jenniferplusplus Non standard but mentioned here. https://www.kinexmedia.com/blog/http-status-codes/ few mentions though so suspect it's just one or two servers which pass it.
HTTP Status Codes - A Complete List

What are HTTP Status Codes? HTTP status codes are three-digit numbers returned by a web server to indicate the status of a clientโ€™s request. They provide standardized communication and feedback on the success or failure of the request.These status codes provide information about the outcome of the request. They also enable effective communication between the [โ€ฆ]

Kinex Media
@jenniferplusplus I used to work for a company where they'd 'entertainingly' used 418 for every error response.
@scottgal that would be unhelpful
@jenniferplusplus @scottgal took years to get that out of APIs when I landed in current role, so bad

@scottgal @jenniferplusplus

"218 This is fine" - definitely means the web server is on fire.

@scottgal
I find that list concerning at best, there are a bunch of allegedly "OK" responses that are clearly not "OK" ;)
@jenniferplusplus id love to see "HTTP 420, enhance your calm" used more
@jenniferplusplus I mean, you can always just return that status code and call it your own standard :p
@jenniferplusplus HTTP 223 IF YOU INSIST
HTTP 224 OK BUT THIS IS THE LAST TIME
HTTP 225 DONT MAKE ME COUNT TO THREE
HTTP 226 1
HTTP 227 2
HTTP 228 3
HTTP 229 CLOSE THE CONNECTION ON YOUR WAY OUT
@jenniferplusplus thinking about it, CORS OPTIONS preflight should be answered with "if you insist" and the following POST should then be treated as "yes, I insist" and get the HTTP 222 TOLERATED response :-D
@jenniferplusplus please submit an rfc. However, you just know that clients will start failing because theyโ€™re checking explicitly for 200โ€ฆ

@jenniferplusplus It was covered by using User-Agent: MSIE

Like talking to a child.

@jenniferplusplus I think we need some kind of status sub-codes:

HTTP 202 Accepted.
HTTP 202a Reluctantly Accepted.
HTTP 202b Okay, but could you please not.
HTTP 202c Got ya, now staahp plz.
HTTP 202d It's not funny anymore!

@frederic @jenniferplusplus

HTTP 202e I'm not mad, just disappointed.

HTTP status code overview - Internet Information Services

This article provides a list of the HTTP status codes in IIS 7.0 and later versions.

@mblaschke @frederic @jenniferplusplus I bet _loads_ of clients handle those gracefully, and without exploding even a tiny bit.