Px/

SDKs

Official SDKs for Permix with typed request models, retries, and observability hooks.

Edit this page on GitHub

Permix ships first-party SDKs with consistent method naming and response types across every supported language.

TypeScript / Node.js#

bash
npm install @permix/sdk
ts
import { PermixClient } from "@permix/sdk";

const client = new PermixClient({
  apiKey: process.env.PERMIX_API_KEY!,
  retry: { maxAttempts: 3 },
});

const decision = await client.decisions.check({
  tenantId: "tenant_prod",
  principal: { id: "user_123", roles: ["editor"] },
  resource: { type: "document", id: "doc_001" },
  action: "read",
});

Go#

bash
go get github.com/authorization-service/sdk-go
go
client := authz.NewClient(os.Getenv("PERMIX_API_KEY"))

decision, err := client.Decisions.Check(ctx, authz.CheckRequest{
  TenantID:  "tenant_prod",
  Principal: authz.Principal{ID: "user_123", Roles: []string{"editor"}},
  Resource:  authz.Resource{Type: "document", ID: "doc_001"},
  Action:    "read",
})

Python#

bash
pip install authorization-service
python
from permix import PermixClient

client = PermixClient(api_key=os.environ["PERMIX_API_KEY"])

decision = client.decisions.check(
    tenant_id="tenant_prod",
    principal={"id": "user_123", "roles": ["editor"]},
    resource={"type": "document", "id": "doc_001"},
    action="read",
)

Java (Spring Boot & Quarkus)#

The Java SDK (authorization-core) uses a declarative annotation model — no HTTP client code required.

xml
<dependency>
  <groupId>io.gitlab.ctu-iotlab</groupId>
  <artifactId>com.authorization.core</artifactId>
  <version>0.1.5</version>
</dependency>
java
@GetMapping("/documents/{id}")
@Resource(
  name        = "document:read",
  displayName = "Read Document",
  defaultRoles = {"editor", "viewer"}
)
public Document getDocument(@PathVariable String id) {
  return documentService.findById(id);
}

See the Java SDK Overview, Spring Boot Integration, and Quarkus Integration guides for full setup instructions.

SDK capabilities#

FeatureTSGoPythonJava
Typed decision client
Automatic retries
OpenTelemetry hooks
Request ID propagation
Annotation / AOP model
Auto resource registration