{
    "properties": {
        "clientId": {
            "description": "Client ID if workflow is to proxy client",
            "examples": [
                "bar"
            ],
            "type": "string"
        },
        "clientMethod": {
            "description": "Client method if workflow is to proxy client",
            "examples": [
                "Hello"
            ],
            "type": "string"
        },
        "endpointId": {
            "description": "Name of the endpoint",
            "examples": [
                "bar"
            ],
            "type": "string"
        },
        "endpointType": {
            "description": "Endpoint protocol type, either http or tchannel",
            "enum": [
                "http",
                "tchannel"
            ],
            "examples": [
                "http"
            ],
            "type": "string"
        },
        "handleId": {
            "description": "Name of the method",
            "examples": [
                "helloWorld"
            ],
            "type": "string"
        },
        "middlewares": {
            "items": {
                "description": "Middlewares the endpoint method depends on",
                "examples": [
                    "example"
                ],
                "type": "string"
            },
            "type": "array"
        },
        "thriftFile": {
            "description": "Path to endpoint thrift file, relative to idl path",
            "examples": [
                "endpoints/bar/bar.thrift"
            ],
            "type": "string"
        },
        "thriftFileSha": {
            "description": "Sha of the thrift file, reserved but currently not used",
            "examples": [
                "{{placeholder}}"
            ],
            "type": "string"
        },
        "thriftMethodName": {
            "description": "Thrift method name, in format of service::method",
            "examples": [
                "Bar::helloWorld"
            ],
            "type": "string"
        },
        "workflowImportPath": {
            "description": "Workflow import path if workflow type is custom",
            "examples": [
                "github.com/uber/zanzibar/examples/example-gateway/endpoints/contacts"
            ],
            "type": "string"
        },
        "workflowType": {
            "description": "Workflow type, either httpClient, tchannelClient or custom",
            "enum": [
                "custom",
                "httpClient",
                "tchannelClient"
            ],
            "examples": [
                "custom"
            ],
            "type": "string"
        }
    },
    "required": [
        "endpointType",
        "endpointId",
        "handleId",
        "thriftFile",
        "thriftFileSha",
        "thriftMethodName",
        "workflowType"
    ],
    "type": "object"
}