{
    "properties": {
        "config": {
            "properties": {
                "exposedMethods": {
                    "description": "The thrift methods exposed on the client in Go, key is method name in Go, value is thrift method in form of service::method",
                    "examples": [
                        "{\"SaveContacts\": \"Contacts::saveContacts\"}"
                    ],
                    "type": "object"
                },
                "fixture": {
                    "properties": {
                        "importPath": {
                            "description": "Package import path for concrete fixtures",
                            "examples": [
                                "github.com/uber/zanzibar/examples/example-gateway/clients/contacts/fixture"
                            ],
                            "type": "string"
                        },
                        "scenarios": {
                            "description": "Fixture scenarios, key is client method name, value is a list of string indicating different scenarios",
                            "examples": [
                                "{\"SaveContacts\": [\"success\"]}"
                            ],
                            "type": "object"
                        }
                    },
                    "type": "object"
                },
                "idlFile": {
                    "description": "Path to client thrift file, relative to idl path",
                    "examples": [
                        "clients/contacts/contacts.thrift"
                    ],
                    "type": "string"
                },
                "idlFileSha": {
                    "description": "Sha of the thrift file, reserved but currently not used",
                    "examples": [
                        "{{placeholder}}"
                    ],
                    "type": "string"
                }
            },
            "type": "object"
        },
        "dependencies": {
            "properties": {
                "client": {
                    "items": {
                        "description": "Name of the client this client depends on",
                        "examples": [
                            "foo"
                        ],
                        "type": "string"
                    },
                    "type": "array"
                }
            },
            "type": "object"
        },
        "name": {
            "description": "Client name",
            "examples": [
                "contacts"
            ],
            "type": "string"
        },
        "type": {
            "description": "Client type, either http, tchannel or custom",
            "enum": [
                "http",
                "tchannel",
                "custom"
            ],
            "examples": [
                "http"
            ],
            "type": "string"
        }
    },
    "required": [
        "name",
        "type",
        "config",
        "dependencies"
    ],
    "type": "object"
}