Create a queue
POST /queues
Creates a new queue associated.
This endpoint returns the queue's unique identifier, the queue_id. This identifier can be used for subsequent requests to
- update a queue, or to
- delete a queue.
Additionally, the queue_id is necessary to create and update Listeners and Messages.Thus, the creation of a queue is a prerequisite for the following endpoints:
- Get a listener by id
- Add a listener to a queue
- Update a listener by id
- Delete a listener by id
- Get a message by id
- Get all messages of a queue
- Add a message to a queue
- Delete a message by id
Authentication
The target organization for this request will be determined by the supplied access token.
As a prerequisite you need to create an account and follow the onboarding process to also create an organization and an API key.
See also: Authentication.
Examples
curl -X POST http://api.discue.io/v1/queues \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'X-API-KEY: API_KEY' \
-d '{
"name": "myapp.io/deletion-request-queue",
"schema": {
"person": {
"type": "object",
"props": {
"name": {
"type": "string",
"pattern": "abc",
"required": true
},
"street": {
"type": "string",
"min": 5,
"max": 10
},
"city": {
"type": "string",
"enum": [
"Berlin"
]
}
}
},
"count": {
"type": "number",
"min": 0,
"max": 15,
"required": false
},
"list": {
"type": "array",
"items": {
"type": "string",
"pattern": "abc",
"required": true
}
}
}
}'
const body = {
"name": "myapp.io/deletion-request-queue",
"schema": {
"person": {
"type": "object",
"props": {
"name": {
"type": "string",
"pattern": "abc",
"required": true
},
"street": {
"type": "string",
"min": 5,
"max": 10
},
"city": {
"type": "string",
"enum": [
"Berlin"
]
}
}
},
"count": {
"type": "number",
"min": 0,
"max": 15,
"required": false
},
"list": {
"type": "array",
"items": {
"type": "string",
"pattern": "abc",
"required": true
}
}
}
}
const headers = {
'Content-Type':'application/json',
'Accept':'application/json',
'X-API-KEY':'API_KEY'
}
const response = await fetch('http://api.discue.io/v1/queues', {
method: 'POST', body, headers
})
const body = await response.json()
import requests
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-API-KEY': 'API_KEY'
}
r = requests.post('http://api.discue.io/v1/queues', headers = headers)
package main
import (
"bytes"
"net/http"
)
func main() {
headers := map[string][]string{
"Content-Type": []string{"application/json"},
"Accept": []string{"application/json"},
"X-API-KEY": []string{"API_KEY"},
}
data := bytes.NewBuffer([]byte{jsonReq})
req, err := http.NewRequest("POST", "http://api.discue.io/v1/queues", data)
req.Header = headers
client := &http.Client{}
resp, err := client.Do(req)
}
Body
{
"name": "myapp.io/deletion-request-queue",
"schema": {
"person": {
"type": "object",
"props": {
"name": {
"type": "string",
"pattern": "abc",
"required": true
},
"street": {
"type": "string",
"min": 5,
"max": 10
},
"city": {
"type": "string",
"enum": [
"Berlin"
]
}
}
},
"count": {
"type": "number",
"min": 0,
"max": 15,
"required": false
},
"list": {
"type": "array",
"items": {
"type": "string",
"pattern": "abc",
"required": true
}
}
}
}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| pretty | query | boolean | ❌ | Return the response pretty printed |
| body | body | UpdateQueueRequest | ✔ | none |
| » name | body | string | ❌ | none |
| » schema | body | QueueMessageSchema | ❌ | none |
Responses
200 Response
{
"queue": {
"id": "string",
"name": "string",
"schema": {
"person": {
"type": "object",
"props": {
"name": {
"type": "string",
"pattern": "abc",
"required": true
},
"street": {
"type": "string",
"min": 5,
"max": 10
},
"city": {
"type": "string",
"enum": [
"Berlin"
]
}
}
},
"count": {
"type": "number",
"min": 0,
"max": 15,
"required": false
},
"list": {
"type": "array",
"items": {
"type": "string",
"pattern": "abc",
"required": true
}
}
}
},
"_links": {
"self": {
"href": "https://api.discue.io/queues/180994c-b6b2-4d0e-b7ad-414716e83386"
},
"myapp.io/delete-user-listener-64fae19": {
"href": "https://api.discue.io/queues/180994c-b6b2-4d0e-b7ad-414716e83386/listeners/0644659f-b47b-4668-86dd-a496cb7fbc76"
}
}
}
400 Response
{
"title": "Bad Request",
"status": 400
}
401 Response
{
"title": "Unauthorized",
"status": 401
}
402 Response
{
"title": "Payment Required",
"status": 402
}
403 Response
{
"title": "Forbidden",
"status": 403
}
404 Response
{
"title": "Not Found",
"status": 404
}
405 Response
{
"title": "Method Not Allowed",
"status": 405
}
406 Response
{
"title": "Not Acceptable",
"status": 406
}
409 Response
{
"title": "Conflict",
"status": 409
}
415 Response
{
"title": "Unsupported Media Type",
"status": 415
}
422 Response
{
"title": "Unprocessable Entity",
"status": 422
}
423 Response
{
"title": "Locked",
"status": 423
}
429 Response
{
"title": "Too Many Requests",
"status": 429
}
500 Response
{
"title": "Internal Server Error",
"status": 500
}
501 Response
{
"title": "Not Implemented",
"status": 501
}
503 Response
{
"title": "Service Unavailable",
"status": 503
}
| Status | Meaning | Description | Schema |
|---|---|---|---|
| 200 | OK | Ok | GetQueueResponse |
| 400 | Bad Request | Bad Request | Inline |
| 401 | Unauthorized | Unauthorized | Inline |
| 402 | Payment Required | Payment Required | Inline |
| 403 | Forbidden | Forbidden | Inline |
| 404 | Not Found | Not Found | Inline |
| 405 | Method Not Allowed | Method Not Allowed | Inline |
| 406 | Not Acceptable | Not Acceptable | Inline |
| 409 | Conflict | Conflict | Inline |
| 415 | Unsupported Media Type | Unsupported Media Type | Inline |
| 422 | Unprocessable Entity | Unprocessable Entity | Inline |
| 423 | Locked | Locked | Inline |
| 429 | Too Many Requests | Too Many Requests | Inline |
| 500 | Internal Server Error | Internal Server Error | Inline |
| 501 | Not Implemented | Not Implemented | Inline |
| 503 | Service Unavailable | Service Unavailable | Inline |