{
  "id": "@itentialopensource/adapter-kafka",
  "type": "Adapter",
  "export": "Kafka",
  "displayName": "Kafka",
  "title": "Kafka",
  "src": "adapter.js",
  "roles": [
    "admin"
  ],
  "topics": {
    "kafka": {}
  },
  "methods": [
    {
      "name": "createTopics",
      "summary": "create topics on the Kafka server",
      "description": "create topics on the Kafka server",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "an array of topics",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/createTopics"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "sendMessage",
      "summary": "send message",
      "description": "send message",
      "input": [
        {
          "name": "payloads",
          "type": "array",
          "info": "array of ProduceRequest",
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/sendMessage"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "subscribe",
      "summary": "subscribe topics to current consumer",
      "description": "subscribe topics to current consumer. Should not be a workflow function as when you subscribe, you should then be listening for messages",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "array of topics",
          "required": true
        },
        {
          "name": "partition",
          "type": "number",
          "info": "The partition of the message to start with",
          "required": true
        },
        {
          "name": "offset",
          "type": "number",
          "info": "The offset of the message to start with",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/subscribe"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "subscribeAvro",
      "summary": "subscribe topics to current consumer",
      "description": "subscribe topics to current consumer. Should not be a workflow function as when you subscribe, you should then be listening for messages",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "array of topics",
          "required": true
        },
        {
          "name": "partition",
          "type": "number",
          "info": "The partition of the message to start with",
          "required": true
        },
        {
          "name": "offset",
          "type": "number",
          "info": "The offset of the message to start with",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/subscribeAvro"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "unsubscribe",
      "summary": "unsubscribe topics from current consumer",
      "description": "remove topics from current consumer",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "array of topics",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/unsubscribe"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "commitOffset",
      "summary": "Commit offset of the current topics",
      "description": "Commit offset of the current topics",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/commitOffset"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "setOffset",
      "summary": "Set offset of the given topic",
      "description": "Set offset of the given topic",
      "input": [
        {
          "name": "topic",
          "type": "string",
          "info": "topic to set offset",
          "required": true
        },
        {
          "name": "partition",
          "type": "number",
          "info": "partition to set offset ",
          "required": true
        },
        {
          "name": "offset",
          "type": "number",
          "info": "offset to set",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/setOffset"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "pauseConsumer",
      "summary": "Pause the consumer",
      "description": "Pause the consumer",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/pauseConsumer"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "resumeConsumer",
      "summary": "Resume the consumer",
      "description": "Resume the consumer",
      "input": [],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/resumeConsumer"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "pauseTopics",
      "summary": "Pause the specify topics",
      "description": "Pause the specify topics",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "topics to pause",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/pauseTopics"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "resumeTopics",
      "summary": "ResumeTopics the consumer",
      "description": "Resume the specify topics",
      "input": [
        {
          "name": "topics",
          "type": "array",
          "info": "topics to resume",
          "required": true
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/resumeTopics"
      },
      "roles": [
        "admin"
      ],
      "task": true
    },
    {
      "name": "closeConsumer",
      "summary": "Close the consumer",
      "description": "Close the consumer",
      "input": [
        {
          "name": "force",
          "type": "boolean",
          "info": "if set to true, it forces the consumer to commit the current offset before closing",
          "required": false
        }
      ],
      "output": {
        "name": "result",
        "type": "object",
        "description": "A JSON Object containing status, code and the result"
      },
      "route": {
        "verb": "POST",
        "path": "/closeConsumer"
      },
      "roles": [
        "admin"
      ],
      "task": true
    }
  ]
}