Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HTTP status code for limited collection?

I have a restful service where one of the collections is limited (for UX reasons). In this case it has a cap of 25 items. If that is exceeded resources must be deleted before more can be added. As an example if a client submits:

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

and there are < 25 things in stuff:

200 OK

if > 25 things in stuff:

???

DELETE http://somesite.com/api/v2/stuff/:id

POST http://somesite.com/api/v2/stuff
{"cool":"stuff"}

200 OK

What is the best code for this? Straight 400? 409 CONFLICT? 429? None seem quite right..

like image 469
Scott Avatar asked Nov 19 '12 19:11

Scott


1 Answers

Use 409. From httpbis section 7.5.8:

"The request could not be completed due to a conflict with the current state of the resource. This code is only allowed in situations where it is expected that the user might be able to resolve the conflict and resubmit the request. The payload SHOULD include enough information for the user to recognize the source of the conflict."

In your case, the resource is the one identified by http://somesite.com/api/v2/stuff, and the POST request cannot be completed due to a conflict with its current state (which is that it is already maxed out). In your response, give the user enough info (preferably links) to delete one of the existing members, up the limit, or take some other action. Then they can resubmit the original request.

like image 165
fumanchu Avatar answered Oct 14 '22 02:10

fumanchu