import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; import SdkVersion from '@site/src/components/SdkVersion';
Create a Subject Condition Set
Signature
client.SubjectMapping.CreateSubjectConditionSet(ctx, &subjectmapping.CreateSubjectConditionSetRequest{...})sdk.getServices().subjectMappings().createSubjectConditionSetBlocking(req, metadata).execute()await platform.v1.subjectMapping.createSubjectConditionSet({ ... })Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
subjectConditionSet.subjectSets |
[]SubjectSet |
Yes | One or more subject sets. Each contains condition groups with conditions that match against entity token claims. Subject sets are evaluated with AND logic. See Condition Structure. |
metadata |
Metadata |
No | Optional labels. |
Example
import (
"github.com/opentdf/platform/protocol/go/policy"
"github.com/opentdf/platform/protocol/go/policy/subjectmapping"
)
// Create Subject Condition Set
conditionset := &subjectmapping.CreateSubjectConditionSetRequest{
SubjectConditionSet: &subjectmapping.SubjectConditionSetCreate{
SubjectSets: []*policy.SubjectSet{
{
ConditionGroups: []*policy.ConditionGroup{
{
BooleanOperator: policy.BooleanAnd,
Conditions: []*policy.Condition{
{
SubjectExternalSelectorValue: ".clientId",
Operator: policy.OperatorIn,
SubjectExternalValues: []string{"opentdf"},
},
},
},
},
},
},
},
}
resp, err := client.SubjectMapping.CreateSubjectConditionSet(context.Background(), conditionset)
if err != nil {
log.Fatal(err)
}
log.Printf("Created Subject Condition Set with ID: %s\n", resp.GetSubjectConditionSet().GetId())import CreateSubjectConditionSetExample from '@site/code_samples/java/create-subject-condition-set.mdx';
import { create } from '@bufbuild/protobuf';
import {
ConditionBooleanTypeEnum,
SubjectMappingOperatorEnum,
} from '@opentdf/sdk';
import {
CreateSubjectConditionSetRequestSchema,
} from '@opentdf/sdk/platform/policy/subjectmapping/subject_mapping_pb.js';
// Create Subject Condition Set
// Using create() from @bufbuild/protobuf for proper type handling
const request = create(CreateSubjectConditionSetRequestSchema, {
subjectConditionSet: {
subjectSets: [
{
conditionGroups: [
{
booleanOperator: ConditionBooleanTypeEnum.AND,
conditions: [
{
subjectExternalSelectorValue: '.clientId',
operator: SubjectMappingOperatorEnum.IN,
subjectExternalValues: ['opentdf'],
},
],
},
],
},
],
},
});
const resp = await platform.v1.subjectMapping.createSubjectConditionSet(request);
console.log(
'Created Subject Condition Set with ID:',
resp.subjectConditionSet?.id
);Returns
The created Subject Condition Set object.