Skip to content

Commit 6f7f83e

Browse files
marythoughtclaude
andcommitted
chore(docs): address review feedback on Resource helpers
- Fix Java varargs notation in helper tables (fqns... → String... fqns) - Add authorizationv2 package prefix to Go entries in summary table - Clarify ephemeralId note for Java's immutable protos (.toBuilder()) - Update code_samples/authorization/get_decision.mdx to use helpers Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Mary Dickson <mary.dickson@virtru.com>
1 parent da7067a commit 6f7f83e

2 files changed

Lines changed: 19 additions & 59 deletions

File tree

code_samples/authorization/get_decision.mdx

Lines changed: 14 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,16 @@ func main() {
3434

3535
// Get Decision using v2 API
3636
// Convenience constructors live in the authorization/v2 package:
37-
// ForClientID, ForEmail, ForUserName, ForToken, WithRequestToken
37+
// Entity: ForClientID, ForEmail, ForUserName, ForToken, WithRequestToken
38+
// Resource: ForAttributeValues, ForRegisteredResourceValueFqn
3839
decisionReq := &authorization.GetDecisionRequest{
3940
EntityIdentifier: authorization.ForClientID("opentdf"),
4041
Action: &policy.Action{
4142
Name: "decrypt",
4243
},
43-
Resource: &authorization.Resource{
44-
Resource: &authorization.Resource_AttributeValues_{
45-
AttributeValues: &authorization.Resource_AttributeValues{
46-
Fqns: []string{"https://opentdf.io/attr/role/value/developer"},
47-
},
48-
},
49-
},
44+
Resource: authorization.ForAttributeValues(
45+
"https://opentdf.io/attr/role/value/developer",
46+
),
5047
}
5148

5249
decision, err := client.AuthorizationV2.GetDecision(context.Background(), decisionReq)
@@ -141,7 +138,6 @@ import io.opentdf.platform.sdk.*;
141138
import java.util.concurrent.ExecutionException;
142139

143140
import io.opentdf.platform.authorization.*;
144-
import io.opentdf.platform.entity.*;
145141
import io.opentdf.platform.policy.*;
146142

147143
public class GetDecision {
@@ -158,28 +154,13 @@ public class GetDecision {
158154

159155
// Get Decision using v2 API
160156
GetDecisionRequest request = GetDecisionRequest.newBuilder()
161-
.setEntityIdentifier(
162-
EntityIdentifier.newBuilder()
163-
.setEntityChain(
164-
EntityChain.newBuilder()
165-
.addEntities(
166-
Entity.newBuilder()
167-
.setId("entity-1")
168-
.setClientId("opentdf")
169-
)
170-
)
171-
)
157+
.setEntityIdentifier(EntityIdentifiers.forClientId("opentdf"))
172158
.setAction(
173159
Action.newBuilder()
174160
.setName("decrypt")
175161
)
176-
.setResource(
177-
Resource.newBuilder()
178-
.setAttributeValues(
179-
Resource.AttributeValues.newBuilder()
180-
.addFqns("https://opentdf.io/attr/role/value/developer")
181-
)
182-
)
162+
.setResource(Resources.forAttributeValues(
163+
"https://opentdf.io/attr/role/value/developer"))
183164
.build();
184165

185166
GetDecisionResponse resp = sdk.getServices().authorization().getDecision(request).get();
@@ -202,6 +183,7 @@ public class GetDecision {
202183
import {
203184
Decision,
204185
} from "@opentdf/sdk/platform/authorization/v2/authorization_pb.js";
186+
import { EntityIdentifiers, Resources } from "@opentdf/sdk";
205187
import { platformConnect, PlatformClient } from "@opentdf/sdk/platform";
206188

207189
async function main() {
@@ -223,33 +205,11 @@ async function main() {
223205
// Get Decision using v2 API
224206
try {
225207
const response = await platformClient.v2.authorization.getDecision({
226-
entityIdentifier: {
227-
identifier: {
228-
case: "entityChain",
229-
value: {
230-
entities: [
231-
{
232-
ephemeralId: "entity-1",
233-
entityType: {
234-
case: "clientId",
235-
value: "opentdf",
236-
},
237-
},
238-
],
239-
},
240-
},
241-
},
242-
action: {
243-
name: "decrypt",
244-
},
245-
resource: {
246-
resource: {
247-
case: "attributeValues",
248-
value: {
249-
fqns: ["https://opentdf.io/attr/role/value/developer"],
250-
},
251-
},
252-
},
208+
entityIdentifier: EntityIdentifiers.forClientId("opentdf"),
209+
action: { name: "decrypt" },
210+
resource: Resources.forAttributeValues(
211+
"https://opentdf.io/attr/role/value/developer",
212+
),
253213
});
254214

255215
const decision = response.decision;

docs/sdks/authorization.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -237,8 +237,8 @@ req := &authorizationv2.GetDecisionRequest{
237237

238238
| Helper | Description |
239239
|--------|-------------|
240-
| `Resources.forAttributeValues(fqns...)` | Resource from attribute value FQNs (e.g. those on a TDF) |
241-
| `Resources.forRegisteredResourceValueFqn(fqn)` | Resource from a registered resource value FQN in policy |
240+
| `Resources.forAttributeValues(String... fqns)` | Resource from attribute value FQNs (e.g. those on a TDF) |
241+
| `Resources.forRegisteredResourceValueFqn(String fqn)` | Resource from a registered resource value FQN in policy |
242242

243243
```java
244244
import io.opentdf.platform.sdk.Resources;
@@ -311,11 +311,11 @@ const response = await platformClient.v2.authorization.getDecision({
311311

312312
| Variant | Go | Java | JavaScript |
313313
|---------|-----|------|------------|
314-
| Attribute values | `ForAttributeValues(fqns...)` | `Resources.forAttributeValues(fqns...)` | `Resources.forAttributeValues(...fqns)` |
315-
| Registered resource | `ForRegisteredResourceValueFqn(fqn)` | `Resources.forRegisteredResourceValueFqn(fqn)` | `Resources.forRegisteredResourceValueFqn(fqn)` |
314+
| Attribute values | `authorizationv2.ForAttributeValues(fqns...)` | `Resources.forAttributeValues(String... fqns)` | `Resources.forAttributeValues(...fqns)` |
315+
| Registered resource | `authorizationv2.ForRegisteredResourceValueFqn(fqn)` | `Resources.forRegisteredResourceValueFqn(fqn)` | `Resources.forRegisteredResourceValueFqn(fqn)` |
316316

317317
:::note
318-
The helpers do not set `ephemeralId`. For [GetDecisionBulk](#getdecisionbulk) where you need to correlate requests with responses, set `ephemeralId` separately after construction or use manual construction.
318+
The helpers do not set `ephemeralId`. For [GetDecisionBulk](#getdecisionbulk) where you need to correlate requests with responses, set `ephemeralId` separately after construction (in Go, assign the field directly; in Java, use `.toBuilder().setEphemeralId(...).build()`) or use manual construction.
319319
:::
320320

321321
---

0 commit comments

Comments
 (0)