cards_read
Authority to list cards and read their state. It carries no ability to change a card.
{
"type": "cards_read",
"purpose": "Answer a customer question about their cards"
}
Lists a customer's cards, freezes a card, and raises a transaction dispute. Freezing is permitted and raising a card limit is not, which is the distinction this resource exists to demonstrate.
This service is an illustration built on the CBA side of the boundary. It is not a Raidiam product. It exists to show what a resource server can demand of an agent, and to show that a refusal can always be explained.
cards_readAuthority to list cards and read their state. It carries no ability to change a card.
{
"type": "cards_read",
"purpose": "Answer a customer question about their cards"
}
cards_manageThe type the state changing tools name. It is published so a refusal is checkable against a declared requirement rather than looking arbitrary. Holding the reading authority never yields this one.
{
"type": "cards_manage",
"purpose": "Granted separately by the customer."
}
sub required The customer this authority was delegated over.root_grant optional The delegation this call belongs to, recorded on every decision.act optional The RFC 8693 actor chain, recorded on every decision.cnf.jkt optional The thumbprint of the key the access token is bound to.authorization_details[cards_read] required The authority this resource acts on.| Tool | Purpose | Requires | Effect |
|---|---|---|---|
list_cards |
List the cards held by the customer this delegation names. | cards_read |
read only |
freeze_card |
Freeze a card immediately. Protective and reversible by the customer. | cards_manage |
changes state |
dispute_txn |
Raise a dispute on a transaction. Protective, and creates a case a human works. | cards_manage |
changes state |
Calls are accepted only with an access token issued by https://netbank.demo.cba.raidiam.io and addressed to this resource as its audience. A token minted for a different resource is refused even when it is otherwise valid.
Each tool names one authorization_details type. The token must carry that type, or an umbrella type that narrows to it. Holding a scope, or holding authority for a neighbouring resource, does not admit the call.
Revocation arrives as a Shared Signals event and is applied to the delegation, not to a single token. Every token issued under a revoked delegation is refused from that moment, whatever its expiry says.
A DPoP proof is verified whenever one is presented, and is required whenever the access token names a key in its cnf.jkt claim. Each proof is accepted once, so a captured proof cannot be replayed.
Arguments are validated before any business rule runs, and the refusal names the argument at fault rather than returning a bare failure.
Freezing a card and raising a dispute reduce a customer's exposure and are reversible by a human. Raising a limit, reissuing to a new address and changing a PIN increase exposure, so they are not offered here at any authority. A compromised agent cannot reach them because the surface does not carry them.
Every admission decision, allowed and refused, is recorded with the policy that decided it and the values it turned on. Read them at /decisions.