diff --git a/pygeoapi/api.py b/pygeoapi/api.py index 0624094..b745989 100644 --- a/pygeoapi/api.py +++ b/pygeoapi/api.py @@ -6,7 +6,7 @@ # John A Stevenson # Colin Blackburn # -# Copyright (c) 2022 Tom Kralidis +# Copyright (c) 2023 Tom Kralidis # Copyright (c) 2022 Francesco Bartoli # Copyright (c) 2022 John A Stevenson and Colin Blackburn # @@ -3168,8 +3168,25 @@ class API: if process is not None: response = processes[0] else: + process_url = f"{self.config['server']['url']}/processes" response = { - 'processes': processes + 'processes': processes, + 'links': [{ + 'type': FORMAT_TYPES[F_JSON], + 'rel': request.get_linkrel(F_JSON), + 'title': 'This document as JSON', + 'href': f'{process_url}?f={F_JSON}' + }, { + 'type': FORMAT_TYPES[F_JSONLD], + 'rel': request.get_linkrel(F_JSONLD), + 'title': 'This document as RDF (JSON-LD)', + 'href': f'{process_url}?f={F_JSONLD}' + }, { + 'type': FORMAT_TYPES[F_HTML], + 'rel': request.get_linkrel(F_HTML), + 'title': 'This document as HTML', + 'href': f'{process_url}?f={F_HTML}' + }] } if request.format == F_HTML: # render diff --git a/tests/test_api.py b/tests/test_api.py index fddd426..a92088b 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -4,7 +4,7 @@ # John A Stevenson # Colin Blackburn # -# Copyright (c) 2022 Tom Kralidis +# Copyright (c) 2023 Tom Kralidis # Copyright (c) 2022 John A Stevenson and Colin Blackburn # # Permission is hereby granted, free of charge, to any person @@ -1343,6 +1343,7 @@ def test_describe_processes(config, api_): data = json.loads(response) assert code == HTTPStatus.OK assert len(data['processes']) == 1 + assert len(data['links']) == 3 # Test for particular, defined process rsp_headers, code, response = api_.describe_processes(req, 'hello-world')