The PartnerAPI supports connecting via gRPC by default; this allows partners to auto-generate an SDK in their language of choice, and to connect normally via a Connect RPC HTTPS proxy. However, we can open a REST API connection for partners upon request.
If you would like to connect to the gRPC endpoints using an HTTPS proxy, a Connect RPC client can be generated as follows:
Install dependencies:
brew install node grpcurl bufbuild/buf/buf npm install @bufbuild/protoc-gen-es @bufbuild/protobuf @connectrpc/connect @connectrpc/connect-nodeUse grpcurl to generate .proto files:
grpcurl \ -proto-out-dir basic-capital-protos/ \ partnerapi.basiccapital.dev:443 \ listCreate a buf configuration file:
version: v2 inputs: - directory: basic-capital-protos/ plugins: - local: protoc-gen-es opt: target=ts out: basic-capital-protosnpx buf generate(this generates_pb.tsfiles alongside the.protofiles inbasic-capital-protos/)Verify it works with a simple client:
import { createClient } from "@connectrpc/connect"; import { createConnectTransport, createGrpcTransport } from "@connectrpc/connect-node"; import { PartnerAuthIngressService } from "./basic-capital-protos/com/basiccapital/systems/ingress/partner/partner_auth_ingress_service_pb"; import { EmployerCompanyIngressService } from "./basic-capital-protos/com/basiccapital/systems/ingress/employer/company_ingress_service_pb"; import { EmployerPlanConfigIngressService } from "./basic-capital-protos/com/basiccapital/systems/ingress/employer/plan_config_ingress_service_pb"; function makeTransport(interceptors?: Parameters<typeof createGrpcTransport>[0]["interceptors"]) { return createConnectTransport({ baseUrl: "https://api.basiccapital.dev/v1/partner-rpc/", interceptors, }); } const transport = makeTransport(); const authClient = createClient(PartnerAuthIngressService, transport); const response = await authClient.exchangeApiKey({ apiKey: "PARTNER_API_KEY", }); const authToken = response.authToken; console.log("Fetched auth token");
Authorization and payroll endpoints are already available via REST. Full documentation for the REST API is coming soon.