Skip to content

Releases: national-data-platform/ep-api

v0.18.0

29 Apr 17:29
d8f11e7

Choose a tag to compare

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 Created and now also returns name, title and a warning describing the rename (or null when no rename happened).
    • The local status=submitted mirror is still applied on success.
  • 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

29 Apr 16:42
1e66779

Choose a tag to compare

Changed

  • UI footer: the displayed version is now read at runtime from the backend's OpenAPI document (info.version exposed 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

29 Apr 16:34
c364b44

Choose a tag to compare

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

29 Apr 16:26
a81c52f

Choose a tag to compare

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

  • Services and Organizations still 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

29 Apr 15:59
b711ae4

Choose a tag to compare

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:
    • name becomes <original>-<YYYYMMDDHHMMSS> so it still satisfies CKAN's slug constraint (^[a-z0-9_-]+$).
    • title becomes <original> (YYYY-MM-DD HH:MM:SS) so the rename is obvious to humans.
    • The response body now also returns the final name and title plus a warning field describing the rename (or null when no rename happened).
    • The previous 409 Conflict response with a structured detail object 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 name and title differ from the ones they submitted.

Fixed

  • Dataset Management page: creating a dataset that triggered a backend error with a structured detail payload 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

26 Apr 23:27
488a883

Choose a tag to compare

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

26 Apr 23:11
e232a29

Choose a tag to compare

Fixed

  • example.env now documents CKAN_VERIFY_SSL and PRE_CKAN_VERIFY_SSL, the existing settings that toggle TLS certificate verification for the local CKAN and Pre-CKAN instances. Both default to True in code, so behavior is unchanged; this only makes the option discoverable for operators running against a self-signed CKAN. Closes #49.

v0.15.0

26 Apr 22:39
12021a7

Choose a tag to compare

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 handleSendToPreCkan flow and the unused getDatasetTypeBadge helper in DatasetManagement were 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

26 Apr 10:41
3dfcda2

Choose a tag to compare

Changed

  • POST /dataset/{dataset_id}/publish now marks both the local dataset and the Pre-CKAN copy with a status=submitted entry in their extras, 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 status entry (for example approved or rejected) replaces it with submitted, 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.

Docker

  • rbardaji/ndp-ep-api:0.14.0
  • rbardaji/ndp-ep-api:latest

v0.13.0

23 Apr 19:44
3e324e7

Choose a tag to compare

What's new

Added — Access request workflow (end-to-end)

Backend

  • New ENABLE_ACCESS_REQUESTS flag (off by default) so deployments without MongoDB continue to boot unchanged.
  • POST /user/access-requests lets an authenticated user submit a request with an optional justification; duplicates are rejected with 409.
  • GET /user/access-requests lists pending requests for administrators (?status=pending|approved|rejected|all).
  • POST /user/access-requests/{id}/approve performs 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}/reject marks the request as rejected without touching the IDP.
  • require_admin dependency that admits users with either the ndp_admin role or the endpoint-specific {AFFINITIES_EP_UUID}_admin role.
  • 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_requests collection, with the connection string and database name reused from the existing CatalogSettings (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 with ndp_admin or the endpoint-scoped {UUID}_admin role, lists pending/approved/rejected requests in three tabs and lets administrators approve (choosing between member or admin grant plus optional notes) or reject (plus optional notes).

Setup notes

  • Enabling the workflow requires setting ENABLE_ACCESS_REQUESTS=True and running a reachable MongoDB instance (connection string picked up from the existing MONGODB_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.0
  • rbardaji/ndp-ep-api:latest

Changelog

See CHANGELOG.md for the full history.