Skip to content

Commit 7ea1227

Browse files
BFD-3996: Enable smart-config + metadata (#1357)
* add endpoints for metadata/smart-config * update urls + well-known data * fix linter errors * fixing linting * fixing linting * fixing linting * adding v3 metadata --------- Co-authored-by: Brandon Wang <brandon.wang@icf.com>
1 parent 7b55f49 commit 7ea1227

File tree

4 files changed

+23
-1
lines changed

4 files changed

+23
-1
lines changed

apps/test_urls_reverse.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
'developers': '/admin/metrics/developers/',
4242
'fhir_conformance_metadata': '/v1/fhir/metadata',
4343
'fhir_conformance_metadata_v2': '/v2/fhir/metadata',
44+
'fhir_conformance_metadata_v3': '/v3/fhir/metadata',
4445
'grants': '/admin/metrics/grants',
4546
'home': '/home',
4647
'login': '/v1/accounts/login',
@@ -100,6 +101,7 @@
100101
"developers": None,
101102
"fhir_conformance_metadata": None,
102103
"fhir_conformance_metadata_v2": None,
104+
"fhir_conformance_metadata_v3": None,
103105
"grants": None,
104106
"home": None,
105107
"login": None,

apps/wellknown/views/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
from .openid import openid_configuration, smart_configuration, base_issuer, build_endpoint_info # NOQA
1+
from .openid import openid_configuration, smart_configuration, smart_configuration_v3, base_issuer, build_endpoint_info # NOQA
22
from .application import ApplicationListView, ApplicationLabelView # NOQA
33
from .public_applications import ApplicationListView as PublicApplicationListView # NOQA

apps/wellknown/views/openid.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,24 @@ def smart_configuration(request):
5555
return JsonResponse(data)
5656

5757

58+
@require_GET
59+
def smart_configuration_v3(request):
60+
"""
61+
Views that returns smart_configuration for v3.
62+
"""
63+
data = OrderedDict()
64+
issuer = base_issuer(request)
65+
data = build_smart_config_endpoint(data, issuer=issuer)
66+
67+
# v3 specific info, very important since tokens aren't compatible between versions 1/2 and 3
68+
data["authorization_endpoint"] = data["authorization_endpoint"].replace("/v2/o/", "/v3/o/")
69+
data["revocation_endpoint"] = data["revocation_endpoint"].replace("/v2/o/", "/v3/o/")
70+
data["token_endpoint"] = data["token_endpoint"].replace("/v2/o/", "/v3/o/")
71+
data["fhir_metadata_uri"] = data["fhir_metadata_uri"].replace("/v2/fhir/", "/v3/fhir/")
72+
73+
return JsonResponse(data)
74+
75+
5876
def base_issuer(request):
5977
"""
6078
define the base url for issuer

hhs_oauth_server/urls.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ def robots_txt(request):
4545
path("v2/fhir/.well-known/smart-configuration", smart_configuration, name="smart_configuration"),
4646
path("v2/fhir/metadata", fhir_conformance_v2, name="fhir_conformance_metadata_v2"),
4747
path("v2/fhir/", include("apps.fhir.bluebutton.v2.urls")),
48+
path("v3/fhir/.well-known/smart-configuration", smart_configuration, name="smart_configuration_v3"),
49+
path("v3/fhir/metadata", fhir_conformance_v2, name="fhir_conformance_metadata_v3"),
4850
path("v3/fhir/", include("apps.fhir.bluebutton.v3.urls")),
4951
path("v2/o/", include("apps.dot_ext.v2.urls")),
5052
path("v2/o/", include("apps.authorization.v2.urls")),

0 commit comments

Comments
 (0)