FinBaze for Platforms

Changelog

2026-11-09: partner portal (Wave 6.4)#

  • Request id on every response. Every response carries FinBaze-Request-Id: req_… (also X-Request-Id), every GraphQL error carries extensions.requestId, and every server log line of the request carries it. Send your own FinBaze-Request-Id (req_ and 20 to 32 letters or digits) to tie a call to your logs; any other format is replaced.
  • platformRequestLogs(filter, first, after). The calls of your keys, users and embeds for 30 days: time, request id, token type, operation, company, status, error code, duration. No bodies and no variables. Needs request_logs:read; always your own platform. The portal's Logs > Requests page uses it.
  • Find by request id. PlatformEventFilter.requestId and PlatformDeliveryFilter.requestId find the events and webhook deliveries a request caused; PlatformEvent.requestId and PlatformWebhookDelivery.requestId say which request did.
  • sendPlatformTestEvent(endpointId, type). Posts a signed example event of an available type (data.test = true) to an endpoint and returns the answer. Nothing is stored.
  • platformFeatureExplain(profileId, key). The steps behind a feature key for one of your companies: environment, requires, FinBaze override, platform, allowance, company limit, default limit. Firm overrides are shown as skipped.
  • platformUsers also returns lastTokenIssuedAt, lastAuthenticatedAt, tokensRevokedAt and deprovisionedAt; revokePlatformUserTokens(userId) refuses every token issued to a user so far, keeping the user and their access.
  • platformOverview, platformDataSourceHealth, platformAlerts, setPlatformDataSourceStatus, requestPlatformDataSourceResync. Read models for the portal's overview and data-source pages; a resync sends the new event data_source.resync_requested (data.object: source, from, to) that tells your backend which days to deliver again.
  • Partner alerts and platform.alert. A job every five minutes opens an alert when an endpoint fails 10 deliveries in a row, a feed stalls for an hour, or a filing is rejected. It is sent as the new event platform.alert and by email to the owners, admins and developers of your portal. An endpoint without a success for three days is disabled (disabledReason: failing_for_days). Behaviour change: an endpoint is no longer disabled after 8 consecutive failures; it is disabled after 3 days.
  • Portal roles. AccountDeveloper.role (owner, admin, developer, support, billing), platformPortalMembers, platformPortalAccess, setPlatformPortalRole. Enforced for portal members only, behind the flag api.platforms.portal_roles_enforced (sandbox first). Platform tokens are governed by key scopes, as before. Refused operations answer PORTAL_ROLE_FORBIDDEN.
  • New scope request_logs:read (also needed for platformAlerts).