🔥 Introducing PACT: A Better Way to Design APIs That Think Like Users
APIs don’t just connect systems.
They connect intent to outcome.
And yet, so many APIs still force us to think backwards — digging through REST resources just to figure out what we’re allowed to do.
It’s time for a shift.
It’s time for PACT — Procedural Actor-Centric Transport.
🤝 What Is PACT?
PACT is an actor-first, action-oriented API design philosophy that structures your API around who’s making the call and what they want to do.
Instead of browsing resources and reverse-engineering permissions like in REST, PACT APIs answer the question:
“I’m a User, Vendor, or Admin — what can I do right now?”
It’s intuitive, explicit, and designed for clarity.
đź§ How It Works
In PACT, API methods are named and organized like this:
User.SignIn()
User.GetProfile()
Vendor.UploadInvoice()
Admin.CreateReport()
It reads like a sentence.
It’s predictable.
It’s testable.
It’s permission-aware by design.
Each role (actor) gets its own command surface — its PACT — and the system enforces what each actor can and cannot do.
🔍 Why Not REST?
Let’s compare:
Question
REST
PACT
Who can call this?
Look at docs or scopes
It’s in the namespace
What action is this?
Verb + resource (maybe)
Explicit procedure
How is access controlled?
Middleware / policies
Baked into the method map
Can I discover my available actions?
Not directly
Yes — it’s your PACT surface
🛠️ Built for Real Systems
PACT shines when:
You have clearly defined roles (user, admin, partner, etc.)
You want to separate concerns cleanly
You hate digging through bloated REST docs
You’re building a permission-sensitive product (e.g. admin portals, multi-tenant systems)
✨ Bonus: It Scales Cleanly
PACT supports role hierarchies effortlessly:
anonymous < user < admin
Anonymous can only call Anonymous.SignIn(), Anonymous.Register()
Users can access everything anonymous can, plus User.*
Admins can call Admin.* and everything below
No overloading routes. No schema gymnastics.
You grow your system like a tree, not like a spaghetti bowl.
🗣️ Final Word: Make a PACT with Your Users
Design your APIs the way users think:
“I am someone. I want to do something.”
That’s a PACT.