Files
pygeoapi/tests/data/admin/admin-put.json
T
Benjamin Webb 8e122d1a61 Add Admin API (#1137)
* Add Admin API

- Create `admin.py` to serve as Admin API Core
- Create `flask_admin.py` to create flask blueprint for admin API
- Consolidate configuration getter
- Add Pathlib serializing
- Add docker example

* Add integration tests

- Amend admin example to allow writing to configuration. If FS is read only admin API does not work. Returns a 500 and logs `OSError: [Errno 30] Read-only file system: '/pygeoapi/local.config.yml' `

* Preserve env variables in configuration

* Use common accessor functions

- Use common configuration accessor methods for Django and Starlette

* GET returns raw config file

Return configuration with environment variables preserved on GET requests

* Safeguard env variables for root cfg view

"bind": {
"host": "localhost",
"port": "6000"
}
->
"bind": {
"host": "${HOST}",
"port": "${PORT}"
}

* Simplify admin HTML imports

- Use jinja recursion to expand the configuration
- Remove vue from templates

* Create admin API documentation

* Use render_item_value in admin template

* Add Admin API

- Create `admin.py` to serve as Admin API Core
- Create `flask_admin.py` to create flask blueprint for admin API
- Consolidate configuration getter
- Add Pathlib serializing
- Add docker example

* Update GitHub Actions deployment

* Update admin entrypoint

Update admin entrypoint to align with upstream pygeoapi implementation

* Make requested changes

Co-Authored-By: Tom Kralidis <tomkralidis@gmail.com>

* Amend test url

Co-Authored-By: Tom Kralidis <tomkralidis@gmail.com>

* Fix Admin CI tests

* Add PUT and PATCH for root configuration

- Add put and patch for root configuration
- Add CI tests for PUT and PATCH of root

* Update OpenAPI document wording

* Update entrypoint.sh

Replace tabs with spaces

* Remove unused step

Error from rebasing. Admin API tests are moved to their own job.

* Use jsonpatch

- Use debian supported packaging
- Use custom merge function

* Move test data location

* Create Starlette and Django app

- Fold flask_admin.py into flask_app.py

Co-Authored-By: Tom Kralidis <tomkralidis@gmail.com>

* Make requirements-admin.txt

Move admin dependencies to requirements-admin.txt

* Delete guiblock.html

* Update test count for STAC

Update expected test count for addt'l admin test data

* Relegate config warning to config.py

* Move admin tests out of example

* Delete admin docker example

* Update admin-api.rst

* Update pygeoapi-config-0.x.yml

* Update configuration.rst

* Update config.py

* Update admin.py

* Update admin.py

---------

Co-authored-by: Tom Kralidis <tomkralidis@gmail.com>
2024-01-03 10:45:07 -05:00

72 lines
2.0 KiB
JSON

{
"server": {
"bind": {
"host": "0.0.0.0",
"port": 5000
},
"url": "http://localhost:5000",
"admin": true,
"mimetype": "application/json; charset=UTF-8",
"encoding": "utf-8",
"languages": ["en-US"],
"cors": true,
"pretty_print": true,
"limit": 10,
"map": {
"url": "https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png",
"attribution": "<a href=\"https://wikimediafoundation.org/wiki/Maps_Terms_of_Use\">Wikimedia maps</a> | Map data &copy; <a href=\"https://openstreetmap.org/copyright\">OpenStreetMap contributors</a>"
}
},
"logging": {
"level": "INFO"
},
"metadata": {
"identification": {
"title": {
"en": "pygeoapi default instance"
},
"description": {
"en": "pygeoapi provides an API to geospatial data"
},
"keywords": {
"en": ["geospatial", "data", "api"]
},
"keywords_type": "theme",
"terms_of_service": "https://creativecommons.org/licenses/by/4.0/",
"url": "http://example.org"
},
"license": {
"name": "CC-BY 4.0 license",
"url": "https://creativecommons.org/licenses/by/4.0/"
},
"provider": {
"name": "Organization Name",
"url": "https://pygeoapi.io"
},
"contact": {
"name": "Lastname, Firstname",
"position": "Position Title",
"address": "Mailing Address",
"city": "City",
"stateorprovince": "Administrative Area",
"postalcode": "Zip or Postal Code",
"country": "Country",
"phone": "+xx-xxx-xxx-xxxx",
"fax": "+xx-xxx-xxx-xxxx",
"email": "you@example.org",
"url": "Contact URL",
"hours": "Hours of Service",
"instructions": "During hours of service. Off on weekends.",
"role": "pointOfContact"
}
},
"resources": {
"hello-world": {
"type": "process",
"processor": {
"name": "HelloWorld"
}
}
}
}