Jump to: navigation, search

Difference between revisions of "Zaqar/specs/api/v1/responsecodes"

(Get Queue Metadata)
 
(9 intermediate revisions by 3 users not shown)
Line 10: Line 10:
 
|-
 
|-
 
|Success (Already exists) ||  204
 
|Success (Already exists) ||  204
|-
 
|Success (Post with metadata -Created) ||  201<ref name="ref3"/>
 
 
|-
 
|-
 
| Queue has a long name (>64 bytes)||  400
 
| Queue has a long name (>64 bytes)||  400
Line 36: Line 34:
 
| Request with zero value for limit ||  400  ||
 
| Request with zero value for limit ||  400  ||
 
|-
 
|-
| Request with non existing value of marker || 204 <ref name="ref2"/> ||  What does Swift do?
+
| Request with non existing value of marker || 200 or 204 || A marker always "exists" in the sense that we can always perform a range comparison with it. In other words, if you pass 'g' for the marker, Marconi will return all queue's whose names sort after 'g', lexicographically. If you pass a marker that sorts after all existing queues, you will receive "204 No Content" in response.
 
|-
 
|-
 
| Request with non boolean value for metadata ||  400  || lowercase true/false?
 
| Request with non boolean value for metadata ||  400  || lowercase true/false?
Line 143: Line 141:
 
| Request message with limit <= 0 ||  400
 
| Request message with limit <= 0 ||  400
 
|-
 
|-
| Request message with non existing marker ||   204 <ref name="ref2"/>
+
| Request message with non existing marker || 204
 
|-
 
|-
 
| Request message with non boolean value for echo ||  400
 
| Request message with non boolean value for echo ||  400
|-
 
| Header has Accept != "application/json" ||  406
 
|-
 
| Header has missing fields ||  400
 
|-
 
| Header has invalid auth token||  401
 
|-
 
|}
 
 
=== '''Get Actions  ''' ===
 
{| class="wikitable"
 
|-
 
! Error Scenario!! HTTP Response Code
 
|-
 
| Request actions for a non existing queue ||  404
 
|-
 
| Request actions with invalid param (something other than marker,limit) ||  200
 
|-
 
| Request message with limit >100 ||  400
 
|-
 
| Request message with limit <= 0 ||  400
 
|-
 
| Request message with non existing marker ||  204 <ref name="ref2"/>
 
 
|-
 
|-
 
| Header has Accept != "application/json" ||  406
 
| Header has Accept != "application/json" ||  406
Line 252: Line 227:
 
|Post with non int value of TTL ||  400  
 
|Post with non int value of TTL ||  400  
 
|-
 
|-
|Post with negative value of TTL ||  same as < 60
+
|Post with negative value of TTL ||  400
 
|-
 
|-
 
|Post without TTL  in request body||  400
 
|Post without TTL  in request body||  400
Line 286: Line 261:
 
|-
 
|-
 
| Delete with non existing claim_id ||  403
 
| Delete with non existing claim_id ||  403
 +
|-
 +
| Delete claimed message without providing a claim_id ||  403
 
|-
 
|-
 
| Header has Accept != "application/json" ||  406
 
| Header has Accept != "application/json" ||  406
Line 306: Line 283:
 
| Success (empty queue with no messages to claim) ||  204
 
| Success (empty queue with no messages to claim) ||  204
 
|-
 
|-
| Claim message from a non existing queue ||  404
+
| Claim message from a non existing queue ||  204
 
|-
 
|-
 
| Claim message with invalid value for limit (nonint, <=0) ||  400
 
| Claim message with invalid value for limit (nonint, <=0) ||  400
Line 407: Line 384:
 
<references>
 
<references>
 
<ref name="ref1">DELETE is an idempotent operation.</ref>
 
<ref name="ref1">DELETE is an idempotent operation.</ref>
<ref name="ref2">A marker is an opaque string which relates to no resource
 
from the user's point of view, so markers are not differentiated by "existing"
 
or "non existing", they are either "giving more messages" and "giving no
 
messages".</ref>
 
<ref name="ref3"/>The metadata is discarded. </ref>
 
 
</references>
 
</references>

Latest revision as of 18:42, 7 August 2014

  • In case of error, the response body will have a message appropriate to the scenario
  • Any http operation , other than the specified will return a 405 (?)

Create Queue

Scenario HTTP Response Code
Success (Created) 201
Success (Already exists) 204
Queue has a long name (>64 bytes) 400
Request header has missing fields 400
Request header has invalid auth token 401

List Queues

Scenario HTTP Response Code Notes
Success 200
Request a non existing queue 404
URL has invalid param (something other than limit,marker,metadata) 200 Extra params are ignored.
Request with negative value for limit 400
Request with zero value for limit 400
Request with non existing value of marker 200 or 204 A marker always "exists" in the sense that we can always perform a range comparison with it. In other words, if you pass 'g' for the marker, Marconi will return all queue's whose names sort after 'g', lexicographically. If you pass a marker that sorts after all existing queues, you will receive "204 No Content" in response.
Request with non boolean value for metadata 400 lowercase true/false?
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401

Set Queue Metadata

Success 204
Request Body is Empty 400
Request header has Accept != "application/json" 406
Request body is >64KB 400
Request body has malformed JSON 400
Request with non JSON body 400
Request with UTF-16 char JSON body

Get Queue Metadata

Scenario HTTP Response Code
Success 200
No metadata exists for the queue 200
Request metadata for a non existing queue 404
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Get Queue Stats

Scenario HTTP Response Code
Success 200
Request stats for a non existing queue 404
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Delete Queue

Scenario HTTP Response Code
Success 204
Delete a non existing queue 204 [1]
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Get Messages

Scenario HTTP Response Code
Success (query matched 1 or more messages) 200
Success (query has no match) 204
Request message from a non existing queue 404
Request message with invalid param (something other than marker,limit,echo) 200
Request message with limit >100 400
Request message with limit <= 0 400
Request message with non existing marker 204
Request message with non boolean value for echo 400
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401

Get a Specific Message

Scenario HTTP Response Code
Success (query matched the messages) 200
Request message from a non existing queue 404
Request a non existing message 404
Request an expired message 404
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Get a Set of Messages By ID

Scenario HTTP Response Code
Success 200
Partial Success
Request non existing messages 404
Request expired messages 404
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Post Message(s)

Scenario HTTP Response Code
Success 201
Post multiple messages in a single request , all of them fails 503
Post multiple messages in a single request , few of them succeed 201 (with "partial": true) [2]
Post message to a non existing queue 404
Post > 100 messages with a single request 400
Post with request body > 4KB 400
Post with invalid JSON request body 400
Post with non-JSON request body 400
Post with non-JSON message 400
Post with TTL < 60 400
Post with TTL > 1209600 400
Post with non int value of TTL 400
Post with negative value of TTL 400
Post without TTL in request body 400
Post without "body" in request body 400
Post with no request body 400
Post with messages encapsulated in multiple arrays 400
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Delete Messages

Scenario HTTP Response Code
Success 204
Delete message from a non existing queue 204
Delete a non existing message 204
Delete with expired claim_id 403
Delete with non existing claim_id 403
Delete claimed message without providing a claim_id 403
Header has Accept != "application/json" 406
Header has missing fields 400
Header has invalid auth token 401
URL has invalid params 200

Claim Messages

Scenario HTTP Response Code
Success 200
Success (empty queue with no messages to claim) 204
Claim message from a non existing queue 204
Claim message with invalid value for limit (nonint, <=0) 400
Claim message with limit >100) 400
Claim message with no request body 400
Claim message with no TTL field 400
Claim message with invalid TTL value (non int, <=0) 400
Claim message with invalid JSON 400
Claim message with non JSON request body 400
Claim message with invalid auth token 401
Claim message with missing header fields 400
Header has Accept != "application/json" 406

Query Claim

Scenario HTTP Response Code
Success 200
Query Expired Claim 404
Query Claim from a non existing queue 404
Query Claim with invalid auth token 401
Query Claim with missing header fields 400
Query Claim with invalid URL params 200
Query Claim with non existing claim_id 404
Header has Accept != "application/json" 406

Update Claim

Scenario HTTP Response Code
Success 204
Update Expired Claim 404
Update Claim on a non existing queue 404
Update a non existing claim 404
Update claim with invalid URL params 200
Update claim with content-type != application/json-patch 406
Update claim with no request body 400
Update claim with invalid JSON in request body 400
Update claim with non JSON request body 400
Update Claim with invalid auth token 401
Update Claim with missing header fields 400

Release Claim

Scenario HTTP Response Code
Success 204
Release Expired Claim 204
Release Claim from a non existing queue 404
Release a non existing claim 204
Release claim with invalid URL params 200
Release Claim with invalid auth token 401
Release Claim with missing header fields 400
Header has Accept != "application/json" 406
  1. DELETE is an idempotent operation.
  2. postmessage api wiki