swagger/v1/e2e-restapi.yaml (743 lines of code) (raw):
swagger: '2.0'
info:
title: "Azure IOT End-to-End Test Wrapper Rest Api"
description: "REST API definition for End-to-end testing of the Azure IoT SDKs. All SDK APIs that are tested by our E2E tests need to be defined in this file. This file takes some liberties with the API definitions. In particular, response schemas are undefined, and error responses are also undefined."
version: "1.0.0"
schemes:
- https
produces:
- application/json
tags:
- name: "wrapper"
description: "APIs that transcend the individual SDKs"
- name: "module"
description: "ModuleClient APIs"
- name: "device"
description: "DeviceClient APIs"
- name: "service"
description: "ServiceClient APIs"
- name: "eventhub"
description: "EventHub APIs"
- name: "registry"
description: "registry APIs"
paths:
/wrapper/cleanup:
put:
tags: ["wrapper"]
summary: "verify that the clients have cleaned themselves up completely"
operationId: "Wrapper_Cleanup"
responses:
200:
description: OK
/wrapper/session:
put:
tags: ["wrapper"]
summary: "Launch a wrapper, getting ready to test"
operationId: "Wrapper_StartSession"
responses:
200:
description: OK
get:
tags: ["wrapper"]
summary: "Terminate a wrapper, optionally returning the log"
operationId: "Wrapper_EndSession"
produces:
- "application/json"
responses:
200:
description: OK
/wrapper/message:
put:
tags: ["wrapper"]
summary: "log a message to output"
operationId: "Wrapper_LogMessage"
consumes:
- "application/json"
parameters:
- name: msg
in: body
required: true
schema:
type: object
responses:
200:
description: OK
/registry/connect:
put:
tags: ["registry"]
summary: Connect to registry
description: "Connect to the Azure IoTHub registry. More specifically, the SDK saves the connection string that is passed in for future use."
operationId: "Registry_Connect"
parameters:
- name: connectionString
in: query
description: Service connection string
required: true
type: string
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/registry/{connectionId}/disconnect/:
put:
tags: ["registry"]
summary: Disconnect from the registry
description: "Disconnects from the Azure IoTHub registry. More specifically, closes all connections and cleans up all resources for the active connection"
operationId: "Registry_Disconnect"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/registry/{connectionId}/moduleTwin/{deviceId}/{moduleId}:
patch:
tags: ["registry"]
summary: update the module twin for the given deviceId and moduleId
operationId: "Registry_PatchModuleTwin"
consumes:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: moduleId
in: path
required: true
type: string
- name: props
in: body
required: true
schema:
type: object
responses:
200:
description: OK
get:
tags: ["registry"]
summary: gets the module twin for the given deviceid and moduleid
operationId: "Registry_GetModuleTwin"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: moduleId
in: path
required: true
type: string
responses:
200:
description: OK
schema:
type: object
/module/connect/{transportType}:
put:
tags: ["module"]
summary: Connect to the azure IoT Hub as a module
operationId: "Module_Connect"
consumes:
- "application/json"
parameters:
- name: transportType
in: path
description: Transport to use
required: true
type: string
enum: [amqp, amqpws, mqtt, mqttws, http]
- name: connectionString
in: query
description: connection string
required: true
type: string
- name: caCertificate
in: body
schema:
"$ref": "#/definitions/certificate"
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/module/connectFromEnvironment/{transportType}:
put:
tags: ["module"]
summary: Connect to the azure IoT Hub as a module using the environment variables
operationId: "Module_ConnectFromEnvironment"
parameters:
- name: transportType
in: path
description: Transport to use
required: true
type: string
enum: [amqp, amqpws, mqtt, mqttws, http]
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/module/{connectionId}/disconnect:
put:
tags: ["module"]
summary: Disconnect the module
description: "Disconnects from Azure IoTHub service. More specifically, closes all connections and cleans up all resources for the active connection"
operationId: "Module_Disconnect"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/module/{connectionId}/enableTwin:
put:
tags: ["module"]
summary: Enable module twins
operationId: "Module_EnableTwin"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/module/{connectionId}/enableMethods:
put:
tags: ["module"]
summary: Enable methods
operationId: "Module_EnableMethods"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/module/{connectionId}/enableInputMessages:
put:
tags: ["module"]
summary: Enable input messages
operationId: "Module_EnableInputMessages"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/module/{connectionId}/twin:
get:
tags: ["module"]
summary: Get the device twin
operationId: "Module_GetTwin"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
schema:
type: object
patch:
tags: ["module"]
summary: Updates the device twin
operationId: "Module_PatchTwin"
consumes:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: props
in: body
required: true
schema:
type: object
responses:
200:
description: OK
/module/{connectionId}/twinDesiredPropPatch:
get:
tags: ["module"]
summary: Wait for the next desired property patch
operationId: "Module_WaitForDesiredPropertiesPatch"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
schema:
type: object
/module/{connectionId}/event:
put:
tags: ["module"]
summary: Send an event
operationId: "Module_SendEvent"
consumes:
- "text/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: eventBody
in: body
required: true
schema:
type: string
responses:
200:
description: OK
/module/{connectionId}/outputEvent/{outputName}:
put:
tags: ["module"]
summary: Send an event to a module output
operationId: "Module_SendOutputEvent"
consumes:
- "text/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: outputName
in: path
required: true
type: string
- name: eventBody
in: body
required: true
schema:
type: string
responses:
200:
description: OK
/module/{connectionId}/inputMessage/{inputName}:
get:
tags: ["module"]
summary: Wait for a message on a module input
operationId: "Module_WaitForInputMessage"
produces:
- "text/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: inputName
in: path
required: true
type: string
responses:
200:
description: OK
schema:
type: string
/module/{connectionId}/roundtripMethodCall/{methodName}:
put:
tags: ["module"]
summary: "Wait for a method call, verify the request, and return the response."
description: "This is a workaround to deal with SDKs that only have method call operations that are sync. This function responds to the method with the payload of this function, and then returns the method parameters. Real-world implemenatations would never do this, but this is the only same way to write our test code right now (because the method handlers for C, Java, and probably Python all return the method response instead of supporting an async method call)"
operationId: "Module_RoundtripMethodCall"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: methodName
in: path
description: name of the method to handle
required: true
type: string
- name: requestAndResponse
in: body
required: true
schema:
"$ref": "#/definitions/roundtripMethodCallBody"
responses:
200:
description: OK
/module/{connectionId}/moduleMethod/{deviceId}/{moduleId}:
put:
tags: ["module"]
summary: call the given method on the given module
operationId: "Module_InvokeModuleMethod"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: moduleId
in: path
required: true
type: string
- name: methodInvokeParameters
in: body
required: true
schema:
type: object
responses:
200:
description: OK
schema:
type: object
/module/{connectionId}/deviceMethod/{deviceId}:
put:
tags: ["module"]
summary: call the given method on the given device
operationId: "Module_InvokeDeviceMethod"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: methodInvokeParameters
in: body
required: true
schema:
type: object
responses:
200:
description: OK
schema:
type: object
/service/connect:
put:
tags: ["service"]
summary: Connect to service
description: "Connect to the Azure IoTHub service. More specifically, the SDK saves the connection string that is passed in for future use."
operationId: "Service_Connect"
parameters:
- name: connectionString
in: query
description: Service connection string
required: true
type: string
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/service/{connectionId}/disconnect/:
put:
tags: ["service"]
summary: Disconnect from the service
description: "Disconnects from the Azure IoTHub service. More specifically, closes all connections and cleans up all resources for the active connection"
operationId: "Service_Disconnect"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/service/{connectionId}/moduleMethod/{deviceId}/{moduleId}:
put:
tags: ["service"]
summary: call the given method on the given module
operationId: "Service_InvokeModuleMethod"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: moduleId
in: path
required: true
type: string
- name: methodInvokeParameters
in: body
required: true
schema:
type: object
responses:
200:
description: OK
schema:
type: object
/service/{connectionId}/deviceMethod/{deviceId}:
put:
tags: ["service"]
summary: call the given method on the given device
operationId: "Service_InvokeDeviceMethod"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
- name: methodInvokeParameters
in: body
required: true
schema:
type: object
responses:
200:
description: OK
schema:
type: object
/eventhub/connect:
put:
tags: ["eventhub"]
summary: Connect to eventhub
description: "Connect to the Azure eventhub service."
operationId: "EventHub_Connect"
parameters:
- name: connectionString
in: query
description: Service connection string
required: true
type: string
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/eventhub/{connectionId}/disconnect/:
put:
tags: ["eventhub"]
summary: Disconnect from the eventhub
description: "Disconnects from the Azure eventhub service"
operationId: "EventHub_Disconnect"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/eventhub/{connectionId}/enableTelemetry:
put:
tags: ["eventhub"]
summary: Enable telemetry
operationId: "EventHub_EnableTelemetry"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/eventhub/{connectionId}/deviceTelemetry/{deviceId}:
get:
tags: ["eventhub"]
summary: wait for telemetry sent from a specific device
operationId: "EventHub_WaitForTelemetry"
produces:
- "text/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: deviceId
in: path
required: true
type: string
responses:
200:
description: OK
schema:
type: string
/device/connect/{transportType}:
put:
tags: ["device"]
summary: Connect to the azure IoT Hub as a device
operationId: "Device_Connect"
consumes:
- "application/json"
parameters:
- name: transportType
in: path
description: Transport to use
required: true
type: string
enum: [amqp, amqpws, mqtt, mqttws, http]
- name: connectionString
in: query
description: connection string
required: true
type: string
- name: caCertificate
in: body
schema:
"$ref": "#/definitions/certificate"
responses:
200:
description: OK
schema:
"$ref": "#/definitions/connectResponse"
/device/{connectionId}/disconnect:
put:
tags: ["device"]
summary: Disconnect the device
description: "Disconnects from Azure IoTHub service. More specifically, closes all connections and cleans up all resources for the active connection"
operationId: "Device_Disconnect"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/device/{connectionId}/enableMethods:
put:
tags: ["device"]
summary: Enable methods
operationId: "Device_EnableMethods"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
responses:
200:
description: OK
/device/{connectionId}/roundtripMethodCall/{methodName}:
put:
tags: ["device"]
summary: "Wait for a method call, verify the request, and return the response."
description: "This is a workaround to deal with SDKs that only have method call operations that are sync. This function responds to the method with the payload of this function, and then returns the method parameters. Real-world implemenatations would never do this, but this is the only same way to write our test code right now (because the method handlers for C, Java, and probably Python all return the method response instead of supporting an async method call)"
operationId: "Device_RoundtripMethodCall"
consumes:
- "application/json"
produces:
- "application/json"
parameters:
- name: connectionId
in: path
description: Id for the connection
required: true
type: string
- name: methodName
in: path
description: name of the method to handle
required: true
type: string
- name: requestAndResponse
in: body
required: true
schema:
"$ref": "#/definitions/roundtripMethodCallBody"
responses:
200:
description: OK
definitions:
connectResponse:
description: "result of a connection to a service, device, or module client"
type: object
properties:
connectionId:
description: "unique identifier for this connection"
type: string
roundtripMethodCallBody:
description: "parameters and response for a sync method call"
type: object
properties:
requestPayload:
description: "payload for the request that arrived from the service. Used to verify that the correct request arrived."
type: object
responsePayload:
description: "payload for the response to return to the service. Used to verify that the correct request arrived."
type: object
statusCode:
description: "status code to return to the service"
type: integer
certificate:
description: "certificate in the body of a message"
type: object
properties:
cert:
description: "unique identifier for this connection"
type: string