diff --git a/inventory_provider/routes/poller.py b/inventory_provider/routes/poller.py
index 10c3345fd1b5e38caf95c571731eb594f3a8900d..39e940a25b43b03ff194857aeb49b772f2819441 100644
--- a/inventory_provider/routes/poller.py
+++ b/inventory_provider/routes/poller.py
@@ -30,6 +30,12 @@ These endpoints are intended for use by BRIAN.
 .. autofunction:: inventory_provider.routes.poller.gws_direct
 
 
+/poller/gws/direct-config
+---------------------------------
+
+.. autofunction:: inventory_provider.routes.poller.gws_direct_config
+
+
 /poller/gws/indirect
 ---------------------------------
 
@@ -53,13 +59,14 @@ support method: _get_dashboards
 
 .. autofunction:: inventory_provider.routes.poller._get_dashboards
 
+
 """
 from enum import Enum, auto
 import json
 import logging
 import re
 
-from flask import Blueprint, Response, current_app, request
+from flask import Blueprint, Response, current_app, request, jsonify
 from lxml import etree
 
 from inventory_provider import juniper
@@ -1269,3 +1276,77 @@ def get_service_types():
         redis.set(cache_key, service_types)
 
     return Response(service_types, mimetype='application/json')
+
+
+
+@routes.route("/gws/direct-config", methods=['GET', 'POST'])
+def gws_direct_config():
+    """
+    Handler for `/poller/gws/direct-config` which returns
+    the basic gws-direct config.
+
+    This api is only intended for config validation.
+    :return:
+    """
+
+    format = request.args.get('format', default='json', type=str)
+    format = format.lower()
+    if format not in ('html', 'json'):
+        return Response(
+            response='format must be one of: html, json',
+            status=400,
+            mimetype="text/html")
+
+    def _counters():
+        config_params = current_app.config['INVENTORY_PROVIDER_CONFIG']
+        for nren_isp in config_params['gws-direct']:
+            for host in nren_isp['hosts']:
+                snmp_version = '2' if 'community' in host.keys() else '3'
+                for ifc in host['interfaces']:
+                    for field, oid in ifc['counters'].items():
+                        yield {
+                            'nren': nren_isp['nren'],
+                            'isp': nren_isp['isp'],
+                            'hostname': host['hostname'],
+                            'snmp': snmp_version,
+                            'interface': ifc['tag'],
+                            'field': field,
+                            'oid': oid
+                        }
+
+    def _to_row(counter, header=False):
+        _columns = (
+            'nren', 'isp', 'hostname', 'snmp', 'interface', 'field', 'oid')
+        elems = ['<tr>']
+        for name in _columns:
+            if header:
+                elems.append(f"<td>{counter['name']}</td>")
+            else:
+                elems.append(f'<th>{name}</th>')
+        elems.append('</tr>')
+        return ''.join(elems)
+
+    if format == 'json':
+        if not request.accept_mimetypes.accept_json:
+            return Response(
+                response="response will be json",
+                status=406,
+                mimetype="text/html")
+        else:
+            return jsonify(list(_counters()))
+
+    if not request.accept_mimetypes.accept_html:
+        return Response(
+            response="response will be html",
+            status=406,
+            mimetype="text/html")
+
+    elems = ['<html>', '<body>', '<table>']
+    elems.append(_to_row(None, header=True))
+    elems += map(_to_row, _counters)
+    elems += ['</table>', '</body>', '</html>']
+
+    return Response(
+        response=''.join(elems),
+        status=200,
+        mimetype="text/html")