Releases: national-data-platform/ep-api
v0.18.0
Highlights
POST /dataset/{dataset_id}/publish no longer rejects publishes whose dataset name is already taken in PRE-CKAN. The publish is now retried automatically with a timestamp suffix on both name and title, mirroring the auto-rename behavior already in place for POST /dataset (#120 / v0.17.0). This is especially useful in setups where local CKAN and PRE-CKAN are pointed at the same instance, where every publish would otherwise fail.
Changed
POST /dataset/{dataset_id}/publish:- On
That name is already in use/That URL is already in use, the service retries once:name→<original>-<YYYYMMDDHHMMSS>(slug-safe).title→<original> (YYYY-MM-DD HH:MM:SS)(human-readable).
- The endpoint always responds
201 Createdand now also returnsname,titleand awarningdescribing the rename (ornullwhen no rename happened). - The local
status=submittedmirror is still applied on success.
- On
- Other publish failures (PRE-CKAN disabled, dataset not found locally, organization missing in PRE-CKAN, transport errors) keep their existing semantics — only the duplicate-name case triggers the retry.
Verification
End-to-end against a real CKAN instance: a dataset created in local catalog and then published to a PRE-CKAN that points at the same CKAN now succeeds, with the Pre-CKAN copy carrying a timestamped slug, the human-readable title suffix, the warning message, and status=submitted on both sides.
Docker
docker pull rbardaji/ndp-ep-api:0.18.0 (also published as :latest).
v0.17.3
Changed
- UI footer: the displayed version is now read at runtime from the backend's OpenAPI document (
info.versionexposed at/openapi.json), so it always matches the deployed API and no longer needs a manual bump on every release. While the version is being fetched, or if the request fails, the footer renders a neutral placeholder.
Removed
- UI footer: the "© National Data Platform. All rights reserved." line has been removed; the version row now only shows the "NDP EndPoint" label and the live version badge.
Docker
docker pull rbardaji/ndp-ep-api:0.17.3 (also published as :latest).
v0.17.2
Removed
- Dataset Management page: the "Type" column on the datasets table has been removed. The page already filters out URL / S3 / Kafka / Service datasets, so by construction every row was labeled "General" and the column carried no useful signal.
Docker
docker pull rbardaji/ndp-ep-api:0.17.2 (also published as :latest).
v0.17.1
Removed
- Dataset Management, Kafka Topics, URL Resources and S3 Resources pages: the "Controls" card that wrapped the Refresh / Create buttons (and showed a static "📍 Local Server Only" badge) has been removed. The page header now flows directly into the action buttons, which removes visual weight that was not carrying any function.
Out of scope
ServicesandOrganizationsstill use the same wrapper. Open a follow-up if you want them aligned too.
Docker
docker pull rbardaji/ndp-ep-api:0.17.1 (also published as :latest).
v0.17.0
Highlights
POST /dataset no longer rejects requests whose name is already in use. The dataset is now saved automatically with a timestamp suffix and the response keeps a 201 Created status while including a warning field that explains what was renamed. Both the web UI and direct API consumers (CURL, scripts, integrations) benefit from the same fix without any client-side retry/rename logic.
Changed
POST /dataset:namebecomes<original>-<YYYYMMDDHHMMSS>so it still satisfies CKAN's slug constraint (^[a-z0-9_-]+$).titlebecomes<original> (YYYY-MM-DD HH:MM:SS)so the rename is obvious to humans.- The response body now also returns the final
nameandtitleplus awarningfield describing the rename (ornullwhen no rename happened). - The previous
409 Conflictresponse with a structureddetailobject is removed — the duplicate-name case is handled transparently.
- Dataset Management page: when the backend renames a duplicate dataset, the create form shows a dedicated yellow warning banner prefixed with "WARNING:" instead of the green success banner, so the user immediately notices that the stored
nameandtitlediffer from the ones they submitted.
Fixed
- Dataset Management page: creating a dataset that triggered a backend error with a structured
detailpayload used to display the meaningless string "Failed to create dataset: [object Object]". A new helper now flattens structured detail objects into a readable message before showing them to the user.
Docker
docker pull rbardaji/ndp-ep-api:0.17.0 (also published as :latest).
v0.16.0
Changed
- Dataset Management page: the "Resources" input on the Create/Edit dataset form no longer requires the user to write JSON
- Default editor is a guided list of resource cards with URL, Name, Format and Description inputs and Add/Remove controls, mirroring the field set already exposed by the inline resource editor on the dataset detail row
- An "Advanced (JSON)" toggle still exposes the raw textarea for resources that need fields the simple editor does not show (mimetype, size, …)
- When editing an existing dataset, each resource is loaded into a card and any non-canonical fields it carries are preserved on save, so a fields-mode round-trip never silently drops data
- Switching back from JSON to fields is blocked with an inline message when the JSON is invalid, is not an array, or contains non-object items, so the user is never silently downgraded
Docker image
rbardaji/ndp-ep-api:0.16.0 (also tagged :latest)
v0.15.1
Fixed
example.envnow documentsCKAN_VERIFY_SSLandPRE_CKAN_VERIFY_SSL, the existing settings that toggle TLS certificate verification for the local CKAN and Pre-CKAN instances. Both default toTruein code, so behavior is unchanged; this only makes the option discoverable for operators running against a self-signed CKAN. Closes #49.
v0.15.0
Changed
- Dataset Management page: the "Extras" input on the Create/Edit dataset form no longer requires the user to write JSON
- Default editor is a guided list of key/value rows with Add/Remove controls, so users unfamiliar with JSON can still attach metadata
- An "Advanced (JSON)" toggle still exposes the raw textarea for nested or non-text values that the simple fields cannot represent
- When editing an existing dataset whose extras are a flat primitive map, the editor opens in the guided fields mode pre-populated with the current pairs; nested or non-text values open in the advanced JSON mode instead
- Switching back from JSON to fields is blocked with an inline message when the JSON is invalid or contains nested/non-text values, so the user is never silently downgraded
Removed
- UI dead code: the unused client-side
handleSendToPreCkanflow and the unusedgetDatasetTypeBadgehelper inDatasetManagementwere removed; the Pre-CKAN publish workflow is fully driven from the backend (see 0.14.0)
Fixed
- Outstanding ESLint warnings in the UI build (
Navigation,S3ObjectManager,S3Resources,Organizations) were cleaned up so the production build now compiles without warnings
Docker image
rbardaji/ndp-ep-api:0.15.0 (also tagged :latest)
v0.14.0
Changed
POST /dataset/{dataset_id}/publishnow marks both the local dataset and the Pre-CKAN copy with astatus=submittedentry in theirextras, so an Endpoint can tell which of its datasets are pending review and Pre-CKAN reviewers can identify newly submitted datasets in their queue.- The status is stored as a CKAN-style extra (
{"key": "status", "value": "submitted"}) alongside any existing entries (ndp_user_id,ndp_group_id,ndp_creator_md5, user-provided extras). - Re-publishing a dataset that already had a
statusentry (for exampleapprovedorrejected) replaces it withsubmitted, since this represents a fresh submission to the review queue. - If creating the dataset in Pre-CKAN fails, the local dataset is left untouched.
- If the local update fails after a successful Pre-CKAN creation, the failure is logged as a warning and the publish still returns success — the Pre-CKAN copy is the source of truth for the review workflow.
- The status is stored as a CKAN-style extra (
Docker
rbardaji/ndp-ep-api:0.14.0rbardaji/ndp-ep-api:latest
v0.13.0
What's new
Added — Access request workflow (end-to-end)
Backend
- New
ENABLE_ACCESS_REQUESTSflag (off by default) so deployments without MongoDB continue to boot unchanged. POST /user/access-requestslets an authenticated user submit a request with an optional justification; duplicates are rejected with 409.GET /user/access-requestslists pending requests for administrators (?status=pending|approved|rejected|all).POST /user/access-requests/{id}/approveperforms the IDP grant using the administrator's own bearer token — either adding the requester to the endpoint group (grant_type=member) or also assigning the endpoint admin role (grant_type=admin) — and records the decision.POST /user/access-requests/{id}/rejectmarks the request as rejected without touching the IDP.require_admindependency that admits users with either thendp_adminrole or the endpoint-specific{AFFINITIES_EP_UUID}_adminrole.- Thin client for the NDP AAI API (
add_user_to_group,assign_role,list_group_members). The grant step reuses the administrator's session — no service account or new secret on the ep-api side. - MongoDB-backed persistence in the
access_requestscollection, with the connection string and database name reused from the existingCatalogSettings(no new env vars).
UI
- The AuthGuard 403 screen now offers a "Request access to this Endpoint" button with an optional justification; on success the screen switches to a green confirmation. The user's bearer token is held in memory only for this single call and never persisted to
localStorage. - A new Access Requests admin page (route
/access-requests), visible in the top nav only to users withndp_adminor the endpoint-scoped{UUID}_adminrole, lists pending/approved/rejected requests in three tabs and lets administrators approve (choosing betweenmemberoradmingrant plus optional notes) or reject (plus optional notes).
Setup notes
- Enabling the workflow requires setting
ENABLE_ACCESS_REQUESTS=Trueand running a reachable MongoDB instance (connection string picked up from the existingMONGODB_CONNECTION_STRING). - The endpoint group
{AFFINITIES_EP_UUID}must already exist in Keycloak before the first approval. Creating it automatically on first use is a candidate follow-up.
Docker
rbardaji/ndp-ep-api:0.13.0rbardaji/ndp-ep-api:latest
Changelog
See CHANGELOG.md for the full history.