blob: 55b70ca1593c05c41794d7eeea00f9d5abb7d178 [file] [log] [blame]
{
"swagger" : "2.0",
"info" : {
"description" : "API for Qakka Queue System",
"version" : "v1",
"title" : "Qakka",
"license" : {
"name" : "Apache 2.0",
"url" : "http://www.apache.org/licenses/LICENSE-2.0.html"
}
},
"tags" : [ {
"name" : "queues",
"description" : "Queue management, send, get and ack."
}, {
"name" : "status",
"description" : "Status end-point."
} ],
"paths" : {
"/queues" : {
"get" : {
"tags" : [ "queues" ],
"summary" : "Get list of all Queues.",
"description" : "",
"operationId" : "getListOfQueues",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
}
}
},
"post" : {
"tags" : [ "queues" ],
"summary" : "Create new queue.",
"description" : "",
"operationId" : "createQueue",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "No Queue object posted, or name field is missing"
}
}
}
},
"/queues/{queueName}" : {
"delete" : {
"tags" : [ "queues" ],
"summary" : "Delete Queue.",
"description" : "",
"operationId" : "deleteQueue",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"required" : true,
"type" : "string"
}, {
"name" : "confirm",
"in" : "query",
"required" : false,
"type" : "boolean",
"default" : false
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "Queue name or confirm flag missing."
}
}
}
},
"/queues/{queueName}/config" : {
"get" : {
"tags" : [ "queues" ],
"summary" : "Get Queue config.",
"description" : "",
"operationId" : "getQueueConfig",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"description" : "Name of Queue",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "Queue name or confirm flag missing."
}
}
},
"put" : {
"tags" : [ "queues" ],
"summary" : "Update Queue configuration.",
"description" : "",
"operationId" : "updateQueueConfig",
"consumes" : [ "application/json" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "No Queue object posted, or name field is missing"
}
}
}
},
"/queues/{queueName}/data/{queueMessageId}" : {
"get" : {
"tags" : [ "queues" ],
"summary" : "Get data associated with a Queue Message.",
"description" : "",
"operationId" : "getMessageData",
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"description" : "Name of Queue",
"required" : true,
"type" : "string"
}, {
"name" : "queueMessageId",
"in" : "path",
"description" : "ID of Queue Message for which data is to be returned",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "Message ID invalid"
},
"404" : {
"description" : "Queue Message or data not found"
}
}
}
},
"/queues/{queueName}/messages" : {
"get" : {
"tags" : [ "queues" ],
"summary" : "Get next Queue Messages from a Queue",
"description" : "",
"operationId" : "getNextMessages",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"description" : "Name of Queue",
"required" : true,
"type" : "string"
}, {
"name" : "count",
"in" : "query",
"description" : "Number of messages to get",
"required" : false,
"type" : "string",
"default" : "1"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "Invalid count parameter"
}
}
},
"post" : {
"tags" : [ "queues" ],
"summary" : "Send Queue Message with a binary data (blob) payload.",
"description" : "",
"operationId" : "sendMessageBinary",
"consumes" : [ "application/octet-stream" ],
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"description" : "Name of Queue",
"required" : true,
"type" : "string"
}, {
"name" : "regions",
"in" : "query",
"description" : "Regions to which message is to be sent",
"required" : false,
"type" : "string"
}, {
"name" : "delay",
"in" : "query",
"required" : false,
"type" : "string"
}, {
"name" : "expiration",
"in" : "query",
"required" : false,
"type" : "string"
}, {
"name" : "contentType",
"in" : "query",
"description" : "Content type of the data to be sent with Queue Message",
"required" : true,
"type" : "string"
}, {
"in" : "body",
"name" : "body",
"description" : "Data to be send with Queue Message",
"required" : true,
"schema" : {
"type" : "array",
"items" : {
"type" : "string",
"format" : "byte"
}
}
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
}
}
}
},
"/queues/{queueName}/messages/{queueMessageId}" : {
"delete" : {
"tags" : [ "queues" ],
"summary" : "Acknowledge that Queue Message has been processed.",
"description" : "",
"operationId" : "ackMessage",
"produces" : [ "application/json" ],
"parameters" : [ {
"name" : "queueName",
"in" : "path",
"description" : "Name of Queue",
"required" : true,
"type" : "string"
}, {
"name" : "queueMessageId",
"in" : "path",
"description" : "ID of Queue Message to be acknowledged",
"required" : true,
"type" : "string"
} ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"$ref" : "#/definitions/ApiResponse"
}
},
"400" : {
"description" : "Queue Message ID invalid, or message not in-flight"
}
}
}
},
"/status" : {
"get" : {
"tags" : [ "status" ],
"summary" : "Status of webapp.",
"description" : "",
"operationId" : "status",
"produces" : [ "application/json" ],
"responses" : {
"200" : {
"description" : "successful operation",
"schema" : {
"type" : "object"
}
}
}
}
}
},
"definitions" : {
"ApiResponse" : {
"type" : "object",
"properties" : {
"message" : {
"type" : "string",
"description" : "Informative message intended for client."
},
"count" : {
"type" : "integer",
"format" : "int32",
"description" : "Count of Queues or QueueMessages returned by the call."
},
"queues" : {
"type" : "array",
"description" : "Queues returned but the call, or empty if not applicable.",
"items" : {
"$ref" : "#/definitions/Queue"
}
},
"queueMessages" : {
"type" : "array",
"description" : "Queues Messages returned by the call, or empty if not applicable.",
"items" : {
"$ref" : "#/definitions/QueueMessage"
}
}
},
"description" : "Response returned by most Queue API calls."
},
"Queue" : {
"type" : "object",
"required" : [ "name" ],
"properties" : {
"name" : {
"type" : "string",
"description" : "Name of queue, must be unique."
}
},
"description" : "Specifies the configuration for a Queue."
},
"QueueMessage" : {
"type" : "object",
"required" : [ "queueName" ],
"properties" : {
"queueMessageId" : {
"type" : "string",
"format" : "uuid",
"description" : "UUID of Queue Message in local region."
},
"messageId" : {
"type" : "string",
"format" : "uuid",
"description" : "UUID of Message Data associated with this Queue Message"
},
"queueName" : {
"type" : "string",
"description" : "Name of Queue for message."
},
"sendingRegion" : {
"type" : "string",
"description" : "Region from which was sent"
},
"receivingRegion" : {
"type" : "string",
"description" : "Regions to which message will be sent"
},
"createDate" : {
"type" : "integer",
"format" : "int64",
"description" : "Date that message was received by system."
},
"contentType" : {
"type" : "string",
"description" : "Content-type of data associated with QueueMessage."
},
"data" : {
"type" : "string",
"description" : "Embedded JSON to be sent with Queue Message."
},
"href" : {
"type" : "string",
"description" : "URL of data associated with Queue Message (if not embedded JSON)"
}
},
"description" : "A Queue Message"
}
}
}