Skip to content

feat: rest + grpc for orgs, SSO, SCIM, webauthn; full protocol coverage - #10

Merged
lakhansamani merged 1 commit into
mainfrom
feat/rest-grpc-parity-2.4.0
Aug 2, 2026
Merged

feat: rest + grpc for orgs, SSO, SCIM, webauthn; full protocol coverage#10
lakhansamani merged 1 commit into
mainfrom
feat/rest-grpc-parity-2.4.0

Conversation

@lakhansamani

Copy link
Copy Markdown
Contributor

Brings the SDK to full protocol coverage against server 2.4.0.

What changed

33 operations that were graphql-only gained proto RPCs and REST bindings in authorizer #739 — organizations, org members, org domains, org OIDC/SAML connections, SCIM endpoints, WebAuthn ceremonies and TOTP setup. Their MethodSpecs move from GQL_ONLY to all three protocols.

A further 5 — admin_logout, admin_session, admin_meta, fga_get_model, fga_reset — were rest+grpc-only even though each has a GraphQL op on the server; the SDK simply carried no query for them. They now span all three too.

That leaves admin_signup, update_env and generate_jwt_keys graphql-only. They are the only admin operations with no proto RPC, so this is full coverage.

Response unwrapping

The unwrap differs per endpoint and is the easy thing to get wrong. A single nested payload is unwrapped (organization, org_member, org_domain, challenge, org_oidc_connection, org_saml_connection, scim_endpoint, webauthn_credentials); flat messages are read whole — paginated lists, and the SCIM create/rotate pair carrying endpoint plus one-time token, where unwrapping either field would drop the other.

Each is pinned by a live test running over every protocol. Mutation-tested: setting create_organization's unwrap to None fails rest and grpc while graphql still passes.

Not added

No reader for _env. Like _update_env, its resolver is a tombstone returning deprecated. please configure env via cli args — v2 configures everything through CLI flags. I built it, found this live, and reverted it.

Verification

201 tests pass, including 21 new live tests (7 scenarios × 3 protocols) against a real 2.4.0 server. ruff and mypy clean.

Requires authorizer-proto 0.2.0rc0 (released).

33 operations were graphql-only because the server had no RPC for them.
Server 2.4.0 (authorizer #739) added the proto RPCs and REST bindings for
organizations, org members, org domains, org OIDC/SAML connections, SCIM
endpoints, WebAuthn ceremonies and TOTP setup, so their MethodSpecs move
from GQL_ONLY to all three protocols.

A further 5 -- admin_logout, admin_session, admin_meta, fga_get_model and
fga_reset -- were rest+grpc-only despite each having a GraphQL op on the
server; the SDK simply carried no query for them. That leaves admin_signup,
update_env and generate_jwt_keys graphql-only, the only admin operations
with no proto RPC.

The response unwrap differs per endpoint and is the easy thing to get
wrong, so each is pinned by a live test running over every protocol: a
single nested payload is unwrapped (organization, org_member, org_domain,
challenge, org_oidc_connection, org_saml_connection, scim_endpoint,
webauthn_credentials) while flat messages are read whole -- paginated
lists, and the SCIM create/rotate pair carrying endpoint plus one-time
token, where unwrapping either field would drop the other.

No reader was added for _env: like _update_env, its resolver is a tombstone
returning "deprecated. please configure env via cli args".

Requires authorizer-proto 0.2.0rc0. CI now runs against 2.4.0-rc.13.
@lakhansamani
lakhansamani force-pushed the feat/rest-grpc-parity-2.4.0 branch from 3af3734 to 57d5a37 Compare August 2, 2026 05:03
@lakhansamani
lakhansamani merged commit b399415 into main Aug 2, 2026
6 checks passed
@lakhansamani
lakhansamani deleted the feat/rest-grpc-parity-2.4.0 branch August 2, 2026 16:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant