Skip to content

Latest commit

 

History

History
147 lines (114 loc) · 3.74 KB

File metadata and controls

147 lines (114 loc) · 3.74 KB

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.