Open
Conversation
Pull from buerokratt/dev
Pull from buerokratt/dev
|
17 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Task: #918
Overview
Implements the API Registry page — a centralized view for managing, testing, and monitoring common endpoints. Changes span the GUI frontend, Ruuter DSL flows, Resql SQL queries, and Liquibase database migrations.
This PR doesn't have implementation related to the "Create new endpoint" button and "Edit" button. It will be implemented in a separate task (#928).
*Reused some changes from an existing PR: #937
GUI (
GUI/src/)New page: API Registry
pages/ApiRegistryPage.tsx— Main page with search bar, "Create new endpoint" button, delete confirmation modal, and orchestration of all actions (test, copy, edit, delete)pages/ApiRegistryPage/ApiRegistryTable.tsx— Sortable, paginated data table with:dd.MM.yyyy HH:mm:ss),---in red when never tested; defaults to descending sort on first click---last);---for untestedappearance="text")pages/ApiRegistryPage/columns.tsx—formatLastTestdate formatterstore/api-registry.store.ts— Zustand store handling:testValuefrom definitions,serviceIdfallback)verificationMapfor keeping test metadata separate from endpoint dataresources/api-constants.ts— AddedtestEndpointUrl,getCommonEndpointsURL constantsresources/routes-constants.ts— Registered/api-registryrouteRootComponent.tsx— Added route entry forApiRegistryPagei18n/en/common.json,i18n/et/common.json— Added allapiRegistry.*translation keys (column headers, action labels, toast messages)Ruuter (
DSL/Ruuter/)POST/services/test-endpoint.yml(new)New flow for testing an endpoint:
{ endpointId, request: { url, method, headers, params, body } }GET,POST,PUT,DELETE)test_endpoint), storingverificationStatus,lastStatusCode, andresponseSchemaPOST/endpoints/common.yml(modified)The existing create/update endpoint flow is used by the copy action.
Resql (
DSL/Resql/services/POST/endpoints/)get_common_endpoints.sql(modified)service_id,verification_status,last_status_code,last_test_at,response_schema_capturedCASE WHEN :sorting = '...'pattern for:created_at,namelastTestAtlastStatusCode(withnameas secondary sort)schemaCaptured(withnameas secondary sort)LOWER(name) LIKE LOWER('%' || :search || '%')total_pageswindow function calculationtest_endpoint.sql(new)UPDATE query saving test results:
last_test_at,verification_status,last_status_code, and conditionallyresponse_schema/response_schema_captured.create_endpoint.sql(modified)Uses
NULLIF(:serviceId, '')::uuidto safely handle optionalservice_id.Liquibase Migrations (
DSL/Liquibase/)20260417121000_add-endpoint-test-fieldslast_test_at,verification_status,last_status_code,response_schema_captured,response_schemacolumns toendpointstable20260421121000_make_service_id_nullable_in_endpoint_tableNOT NULLconstraint fromservice_idto support endpoints without an associated serviceBoth migrations include rollback scripts.