{
  "openapi": "3.0.1",
  "servers": [{ "url": "https://apis.<domain>" }],
  "info": { "title": "Connhex http", "version": "1.5.0" },
  "paths": {
    "/iot/http/channels/{id}/messages/{subtopic}": {
      "post": {
        "summary": "Sends message to a communication channel",
        "description": "Sends message to a communication channel.\n\nRequired Permission:\n\n - Resource: ```core:channels:{id}```\n\n - Action: ```core:channels:publish```",
        "tags": ["Messages"],
        "parameters": [
          { "$ref": "#/components/parameters/ChannelId" },
          { "$ref": "#/components/parameters/Subtopic" }
        ],
        "requestBody": { "$ref": "#/components/requestBodies/MessageReq" },
        "responses": {
          "202": { "description": "Message is accepted for processing." },
          "400": { "description": "Bad request." },
          "401": { "description": "Unauthorized." },
          "500": { "$ref": "#/components/responses/ServiceError" }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "SenMLRecord": {
        "type": "object",
        "properties": {
          "bn": { "type": "string", "description": "Base Name" },
          "bt": {
            "type": "number",
            "format": "double",
            "description": "Base Time"
          },
          "bu": {
            "type": "number",
            "format": "double",
            "description": "Base Unit"
          },
          "bv": {
            "type": "number",
            "format": "double",
            "description": "Base Value"
          },
          "n": { "type": "string", "description": "Name" },
          "u": { "type": "string", "description": "Unit" },
          "v": {
            "type": "number",
            "format": "double",
            "description": "Value"
          },
          "vs": { "type": "string", "description": "String Value" },
          "vb": { "type": "boolean", "description": "Boolean Value" },
          "vd": { "type": "string", "description": "Data Value" },
          "s": {
            "type": "number",
            "format": "double",
            "description": "Value Sum"
          },
          "t": {
            "type": "number",
            "format": "double",
            "description": "Time"
          }
        }
      },
      "SenMLArray": {
        "type": "array",
        "items": { "$ref": "#/components/schemas/SenMLRecord" }
      }
    },
    "parameters": {
      "ChannelId": {
        "name": "id",
        "description": "Unique connectable's channel identifier.",
        "in": "path",
        "schema": { "type": "string", "format": "uuid" },
        "required": true
      },
      "Subtopic": {
        "name": "subtopic",
        "description": "Message subtopic.\n\nFollow [these](https://connhex.com/docs/edge/services#mqtt-topics-to-nats-subjects-mapping)\ninstructions to target a specific custom service runnig on an edge device.\n",
        "in": "path",
        "schema": { "type": "string" },
        "required": false
      }
    },
    "requestBodies": {
      "MessageReq": {
        "description": "Message to be sent.\n",
        "required": true,
        "content": {
          "application/json": {
            "schema": { "$ref": "#/components/schemas/SenMLArray" }
          }
        }
      }
    },
    "responses": {
      "ServiceError": {
        "description": "Unexpected server-side error occurred.",
        "content": {
          "application/json": {
            "schema": { "type": "string", "format": "byte" }
          }
        }
      }
    },
    "securitySchemes": {
      "$ref": "../../../common.json#/components/securitySchemes"
    }
  },
  "security": [{ "chx_auth_session": [] }, { "bearer": [] }]
}
