dankolbman: Need to update the README too
znatty22: Looks good 👍 
diff --git a/README.md b/README.md
index ee05429..8780af7 100644
--- a/README.md
+++ b/README.md
@@ -27,11 +27,11 @@ flask db upgrade
 flask run 
 ```
 
-The API should now be available at `localhost:5000/v1`.
+The API should now be available at `localhost:5000/`.
 
 ## Documentation
 
-The swagger docs are located at the `/v1` endpoint.
+The swagger docs are located at the root `localhost:5000/`.
 
 ## Testing
 
diff --git a/dataservice/api/__init__.py b/dataservice/api/__init__.py
index 3e9a051..5d1beab 100644
--- a/dataservice/api/__init__.py
+++ b/dataservice/api/__init__.py
@@ -1,16 +1,19 @@
 from flask import Blueprint
 from flask_restplus import Api
 from dataservice.api.participant import participant_api
+from dataservice.api.status import status_api
+from dataservice.utils import _get_version
 
-api_v1 = Blueprint('api', __name__, url_prefix='/v1')
+api_v1 = Blueprint('api', __name__, url_prefix='')
 
 api = Api(api_v1,
           title='Kids First Data Service',
           description=open('dataservice/api/README.md').read(),
-          version='0.1',
+          version=_get_version(),
           default='',
           default_label='')
 
+api.add_namespace(status_api)
 api.add_namespace(participant_api)
 
 
diff --git a/dataservice/api/status/README.md b/dataservice/api/status/README.md
new file mode 100644
index 0000000..0a331cb
--- /dev/null
+++ b/dataservice/api/status/README.md
@@ -0,0 +1,1 @@
+Contains version and health information about the Dataservice API.
diff --git a/dataservice/api/status/__init__.py b/dataservice/api/status/__init__.py
new file mode 100644
index 0000000..92ca513
--- /dev/null
+++ b/dataservice/api/status/__init__.py
@@ -0,0 +1,1 @@
+from .resources import status_api
diff --git a/dataservice/api/status/resources.py b/dataservice/api/status/resources.py
new file mode 100644
index 0000000..d7b5982
--- /dev/null
+++ b/dataservice/api/status/resources.py
@@ -0,0 +1,49 @@
+import os
+import subprocess
+
+from flask_restplus import Namespace, Resource, fields
+
+from dataservice.utils import _get_version
+
+THIS_DIR = os.path.abspath(os.path.dirname(__file__))
+README_FILE = os.path.join(THIS_DIR, 'README.md')
+
+status_api = Namespace(name='status', description=open(README_FILE).read())
+
+from dataservice.api.status.serializers import (  # noqa
+    version_response,
+    _version_fields
+)
+
+
+status_api.models['VersionFields'] = _version_fields
+status_api.models['VersionResponse'] = version_response
+
+
+@status_api.route("")
+class Status(Resource):
+    """
+    Service Status
+    """
+    @status_api.marshal_with(version_response)
+    def get(self):
+        """
+        Get the service status
+
+        Returns information about the current API's version and status
+        """
+        commit = (subprocess.check_output(
+                  ["git", "rev-parse", "--short", "HEAD"])
+                  .decode("utf-8").strip())
+
+        tags = (subprocess.check_output(
+                ["git", "tag", "-l", "--points-at", "HEAD"])
+                .decode("utf-8").split('\n'))
+        tags = [] if tags[0] == "" else tags
+        return {"_status": {
+                    "message": "Welcome to the Kids First Dataservice API",
+                    "code": 200,
+                    "version": _get_version(),
+                    "commit": commit,
+                    "tags": tags
+                }}
diff --git a/dataservice/api/status/serializers.py b/dataservice/api/status/serializers.py
new file mode 100644
index 0000000..8325dd9
--- /dev/null
+++ b/dataservice/api/status/serializers.py
@@ -0,0 +1,23 @@
+from flask_restplus import fields
+
+from dataservice.api.common.serializers import (
+    _status_fields,
+    base_response
+)
+
+_version_fields = _status_fields.clone('VersionFields', {
+    'version': fields.String(
+        example='1.0',
+        description='Current version of the API'),
+    'commit': fields.String(
+        example='23cf525',
+        description='Commit currently deployed'),
+    'tags': fields.List(fields.String(
+        example='rc-0.8.4',
+        description='Any tags on the current commit'))
+})
+
+# Version response model
+version_response = base_response.clone('VersionResponse', {
+    '_status': fields.Nested(_version_fields)
+})
diff --git a/dataservice/utils.py b/dataservice/utils.py
new file mode 100644
index 0000000..0f97a39
--- /dev/null
+++ b/dataservice/utils.py
@@ -0,0 +1,5 @@
+import pkg_resources
+
+
+def _get_version():
+    return pkg_resources.get_distribution("kf-api-dataservice").version

Fix "/" path to return 200
diff --git a/tests/conftest.py b/tests/conftest.py
new file mode 100644
index 0000000..cc20c3f
--- /dev/null
+++ b/tests/conftest.py
@@ -0,0 +1,13 @@
+import pytest
+
+from dataservice import create_app
+from dataservice.extensions import db
+
+
+@pytest.fixture
+def client():
+    app = create_app('testing')
+    app_context = app.app_context()
+    app_context.push()
+    db.create_all()
+    return app.test_client()
diff --git a/tests/test_api.py b/tests/test_api.py
new file mode 100644
index 0000000..2fb263c
--- /dev/null
+++ b/tests/test_api.py
@@ -0,0 +1,63 @@
+import json
+import pkg_resources
+import pytest
+
+import dataservice
+
+
+class TestAPI:
+    """
+    General API tests such as reponse code checks, envelope formatting checks,
+    and header checks
+    """
+
+    @pytest.mark.parametrize('endpoint,method,status_code', [
+        ('/', 'GET', 200),
+        ('', 'GET', 200),
+        ('/status', 'GET', 200),
+        ('/participants', 'GET', 200),
+        ('/persons', 'GET', 404),
+        ('/participants/123', 'GET', 404)
+    ])
+    def test_status_codes(self, client, endpoint, method, status_code):
+        """ Test endpoint response codes """
+        call_func = getattr(client, method.lower())
+        assert call_func(endpoint).status_code == status_code
+
+
+    @pytest.mark.parametrize('endpoint,method', [
+        ('/participants', 'GET')
+    ])
+    def test_status_format(self, client, endpoint, method):
+        """ Test that the _response field is consistent """
+        call_func = getattr(client, method.lower())
+        body = json.loads(call_func(endpoint).data.decode('utf-8'))
+        assert '_status' in body
+        assert 'message' in body['_status']
+        assert type(body['_status']['message']) is str
+        assert 'code' in body['_status']
+        assert type(body['_status']['code']) is int
+
+    def test_version(self, client):
+        """ Test response from /status returns correct fields """
+        status = json.loads(client.get('/status').data.decode('utf-8'))
+        status = status['_status']
+        assert 'commit' in status
+        assert len(status['commit']) == 7
+        assert 'version' in status
+        assert status['version'].count('.') == 2
+        assert 'tags' in status
+        assert type(status['tags']) is list
+        assert 'Dataservice' in status['message']
+
+    def test_versions(self, client):
+        """ Test that versions are aligned accross package, docs, and api """
+        package = pkg_resources.get_distribution("kf-api-dataservice").version
+        api_restplus = dataservice.api.api.version
+        api_version = json.loads(client.get('/status').data.decode('utf-8'))
+        api_version = api_version['_status']['version']
+        swagger = json.loads(client.get('/swagger.json').data.decode('utf-8'))
+
+        assert api_version == package
+        assert api_version == api_restplus 
+        assert api_version == swagger['info']['version']

pip install -e .[dev]
parse_log_pytest
requirements.txt
pytest pytest-cache pytest-cov pytest-pep8
apt-get update apt-get install -y gcc
3.9
requirements.txt
pytest --no-header -rA --tb=line --color=no -p no:cacheprovider -W ignore::DeprecationWarning
alembic==0.9.6
aniso8601==1.3.0
attrs==25.3.0
base32-crockford==0.3.0
click==6.6
coverage==7.8.0
exceptiongroup==1.2.2
execnet==2.1.1
Flask==0.12.2
Flask-Migrate==2.1.1
Flask-Profile==0.2
flask-restplus==0.10.1
Flask-SQLAlchemy==2.3.2
gunicorn==19.7.1
iniconfig==2.1.0
itsdangerous==0.24
Jinja2==2.8
jsonschema==4.23.0
jsonschema-specifications==2024.10.1
-e git+https://github.com/kids-first/kf-api-dataservice.git@bccf1d07c49020fea2f01549e9cac12d39809c7a#egg=kf_api_dataservice
Mako==1.0.4
MarkupSafe==0.23
packaging==24.2
pep8==1.7.1
pluggy==1.5.0
pytest==8.3.5
pytest-cache==1.0
pytest-cov==6.0.0
pytest-pep8==1.0.6
python-dateutil==2.9.0.post0
python-editor==1.0.3
pytz==2025.2
referencing==0.36.2
rpds-py==0.24.0
six==1.11.0
SQLAlchemy==1.1.15
tomli==2.2.1
typing_extensions==4.13.0
Werkzeug==0.11.10

name: kf-api-dataservice
channels:
  - defaults
  - https://repo.anaconda.com/pkgs/main
  - https://repo.anaconda.com/pkgs/r
  - conda-forge
dependencies:
  - _libgcc_mutex=0.1=main
  - _openmp_mutex=5.1=1_gnu
  - ca-certificates=2025.2.25=h06a4308_0
  - ld_impl_linux-64=2.40=h12ee557_0
  - libffi=3.4.4=h6a678d5_1
  - libgcc-ng=11.2.0=h1234567_1
  - libgomp=11.2.0=h1234567_1
  - libstdcxx-ng=11.2.0=h1234567_1
  - ncurses=6.4=h6a678d5_0
  - openssl=3.0.16=h5eee18b_0
  - pip=25.0=py39h06a4308_0
  - python=3.9.21=he870216_1
  - readline=8.2=h5eee18b_0
  - setuptools=75.8.0=py39h06a4308_0
  - sqlite=3.45.3=h5eee18b_0
  - tk=8.6.14=h39e8969_0
  - tzdata=2025a=h04d1e81_0
  - wheel=0.45.1=py39h06a4308_0
  - xz=5.6.4=h5eee18b_1
  - zlib=1.2.13=h5eee18b_1
  - pip:
      - alembic==0.9.6
      - aniso8601==1.3.0
      - attrs==25.3.0
      - base32-crockford==0.3.0
      - click==6.6
      - coverage==7.8.0
      - exceptiongroup==1.2.2
      - execnet==2.1.1
      - flask==0.12.2
      - flask-migrate==2.1.1
      - flask-profile==0.2
      - flask-restplus==0.10.1
      - flask-sqlalchemy==2.3.2
      - gunicorn==19.7.1
      - iniconfig==2.1.0
      - itsdangerous==0.24
      - jinja2==2.8
      - jsonschema==4.23.0
      - jsonschema-specifications==2024.10.1
      - mako==1.0.4
      - markupsafe==0.23
      - packaging==24.2
      - pep8==1.7.1
      - pluggy==1.5.0
      - pytest==8.3.5
      - pytest-cache==1.0
      - pytest-cov==6.0.0
      - pytest-pep8==1.0.6
      - python-dateutil==2.9.0.post0
      - python-editor==1.0.3
      - pytz==2025.2
      - referencing==0.36.2
      - rpds-py==0.24.0
      - six==1.11.0
      - sqlalchemy==1.1.15
      - tomli==2.2.1
      - typing-extensions==4.13.0
      - werkzeug==0.11.10
prefix: /opt/conda/envs/kf-api-dataservice

tests/test_api.py::TestAPI::test_status_codes[/-GET-200] tests/test_api.py::TestAPI::test_status_codes[-GET-200] tests/test_api.py::TestAPI::test_status_codes[/status-GET-200] tests/test_api.py::TestAPI::test_status_codes[/participants-GET-200] tests/test_api.py::TestAPI::test_status_format[/participants-GET] tests/test_api.py::TestAPI::test_version tests/test_api.py::TestAPI::test_versions
tests/test_api.py::TestAPI::test_status_codes[/persons-GET-404] tests/test_api.py::TestAPI::test_status_codes[/participants/123-GET-404]
dataservice/api/status/README.md dataservice/api/status/serializers.py README.md dataservice/api/status/resources.py dataservice/utils.py dataservice/api/__init__.py dataservice/api/status/__init__.py
dataservice/api/status/README.md dataservice/api/status/serializers.py README.md dataservice/api/status/resources.py dataservice/utils.py dataservice/api/__init__.py dataservice/api/status/__init__.py