Skip to content

Shared components

These services are defined in org-runink/ui, not in PULSE. PULSE registers the shared Go handlers with its own hooks. For message fields, read the .proto files in that repository; this page covers what PULSE does with each service.

runink.ui.billing.v1.BillingService

The Billing page. See Billing.

MethodIn PULSE
ListPlans, QuotePlanWork. Pure price arithmetic.
GetOverviewThe subscription from TENANT_ID and SUBSCRIPTION_*. Usage is stated as not metered.
StartCheckout, OpenPortalNo payment provider: the answer is “not configured”, never an error or a fake URL.
ListSeats, AssignSeat, RevokeSeatPULSE keeps no seat roster.

runink.ui.datasources.v1.ConnectionsService

The Data sources tab. PULSE serves it over its own integrations table and narrows the catalog to HubSpot and GitHub.

MethodPurpose
ListConnectionTypesThe connector types offered: HubSpot and GitHub
ListConnections, ListConnectionNames, GetConnectionRead your connections
CreateConnection, UpdateConnection, DeleteConnectionManage them
RotateCredentialsReplace the stored token
TestConnectionCheck the token against the platform

A connection that sets a runner, an environment, or properties is refused, and nothing is stored.

runink.ui.datasources.v1.RunnersService

PULSE runs its connectors inside the server and has no remote runners. The service is registered so the shared page can say so. It reports no runners.

runink.ui.profile.v1.ProfileService

The Account page.

MethodIn PULSE
GetProfileYour email, display name, and role from the users table, plus your session. Tenant from TENANT_ID.
ListInstancesThe one instance this deployment serves, with your role. The app’s Admin menu entry reads this.
EndAllSessionsEnds all of your own sessions on every device

runink.ui.access.v1.AccessService

The Admin page. Admins only; the role is read fresh on every call. See Users and access.

MethodPurpose
ListMembersMembers and their roles
InviteMemberGrant a person a role. PULSE does not limit invites by seats.
SetMemberRoleChange a role. Not your own, and never the last admin.
RemoveMemberRemove a member. Not yourself, and never the last admin.