Skip to content

profile

trestle.oscal.profile ¤

Attributes¤

Classes¤

Add ¤

Bases: OscalBaseModel

Specifies contents to be added into controls, in resolution.

Source code in trestle/oscal/profile.py
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
class Add(OscalBaseModel):
    """
    Specifies contents to be added into controls, in resolution.
    """

    class Config:
        extra = Extra.forbid

    position: Optional[PositionValidValues] = Field(
        None,
        description='Where to add the new content with respect to the targeted element (beside it or inside it).',
        title='Position'
    )
    by_id: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None, alias='by-id', description='Target location of the addition.', title='Reference by ID'
    )
    title: Optional[str] = Field(
        None,
        description='A name given to the control, which may be used by a tool for display and navigation.',
        title='Title Change'
    )
    params: Optional[List[common.Parameter]] = Field(None)
    props: Optional[List[common.Property]] = Field(None)
    links: Optional[List[common.Link]] = Field(None)
    parts: Optional[List[common.Part]] = Field(None)
Attributes¤
by_id: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='by-id', description='Target location of the addition.', title='Reference by ID') class-attribute instance-attribute ¤
params: Optional[List[common.Parameter]] = Field(None) class-attribute instance-attribute ¤
parts: Optional[List[common.Part]] = Field(None) class-attribute instance-attribute ¤
position: Optional[PositionValidValues] = Field(None, description='Where to add the new content with respect to the targeted element (beside it or inside it).', title='Position') class-attribute instance-attribute ¤
props: Optional[List[common.Property]] = Field(None) class-attribute instance-attribute ¤
title: Optional[str] = Field(None, description='A name given to the control, which may be used by a tool for display and navigation.', title='Title Change') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
151
152
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Alter ¤

Bases: OscalBaseModel

Specifies changes to be made to an included control when a profile is resolved.

Source code in trestle/oscal/profile.py
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
class Alter(OscalBaseModel):
    """
    Specifies changes to be made to an included control when a profile is resolved.
    """

    class Config:
        extra = Extra.forbid

    control_id: constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    ) = Field(
        ...,
        alias='control-id',
        description=
        'A reference to a control with a corresponding id value. When referencing an externally defined control, the Control Identifier Reference must be used in the context of the external / imported OSCAL instance (e.g., uri-reference).',
        title='Control Identifier Reference'
    )
    removes: Optional[List[Remove]] = Field(None)
    adds: Optional[List[Add]] = Field(None)
Attributes¤
adds: Optional[List[Add]] = Field(None) class-attribute instance-attribute ¤
control_id: constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$') = Field(..., alias='control-id', description='A reference to a control with a corresponding id value. When referencing an externally defined control, the Control Identifier Reference must be used in the context of the external / imported OSCAL instance (e.g., uri-reference).', title='Control Identifier Reference') class-attribute instance-attribute ¤
removes: Optional[List[Remove]] = Field(None) class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
266
267
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

BooleanDatatype ¤

Bases: OscalBaseModel

Source code in trestle/oscal/profile.py
142
143
class BooleanDatatype(OscalBaseModel):
    __root__: bool = Field(..., description='A binary value that is either: true or false.')
Attributes¤
__root__: bool = Field(..., description='A binary value that is either: true or false.') class-attribute instance-attribute ¤

CombinationMethodValidValues ¤

Bases: Enum

Source code in trestle/oscal/profile.py
136
137
138
139
class CombinationMethodValidValues(Enum):
    use_first = 'use-first'
    merge = 'merge'
    keep = 'keep'
Attributes¤
keep = 'keep' class-attribute instance-attribute ¤
merge = 'merge' class-attribute instance-attribute ¤
use_first = 'use-first' class-attribute instance-attribute ¤

Combine ¤

Bases: OscalBaseModel

A Combine element defines how to resolve duplicate instances of the same control (e.g., controls with the same ID).

Source code in trestle/oscal/profile.py
355
356
357
358
359
360
361
362
363
364
365
class Combine(OscalBaseModel):
    """
    A Combine element defines how to resolve duplicate instances of the same control (e.g., controls with the same ID).
    """

    class Config:
        extra = Extra.forbid

    method: Optional[CombinationMethodValidValues] = Field(
        None, description='Declare how clashing controls should be handled.', title='Combination Method'
    )
Attributes¤
method: Optional[CombinationMethodValidValues] = Field(None, description='Declare how clashing controls should be handled.', title='Combination Method') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
360
361
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Custom ¤

Bases: OscalBaseModel

Provides an alternate grouping structure that selected controls will be placed in.

Source code in trestle/oscal/profile.py
343
344
345
346
347
348
349
350
351
352
class Custom(OscalBaseModel):
    """
    Provides an alternate grouping structure that selected controls will be placed in.
    """

    class Config:
        extra = Extra.forbid

    groups: Optional[List[Group]] = Field(None)
    insert_controls: Optional[List[InsertControls]] = Field(None, alias='insert-controls')
Attributes¤
groups: Optional[List[Group]] = Field(None) class-attribute instance-attribute ¤
insert_controls: Optional[List[InsertControls]] = Field(None, alias='insert-controls') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
348
349
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Group ¤

Bases: OscalBaseModel

A group of (selected) controls or of groups of controls.

Source code in trestle/oscal/profile.py
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
class Group(OscalBaseModel):
    """
    A group of (selected) controls or of groups of controls.
    """

    class Config:
        extra = Extra.forbid

    id: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None, description='Identifies the group.', title='Group Identifier'
    )
    class_: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='class',
        description='A textual label that provides a sub-type or characterization of the group.',
        title='Group Class'
    )
    title: str = Field(..., description='A name to be given to the group for use in display.', title='Group Title')
    params: Optional[List[common.Parameter]] = Field(None)
    props: Optional[List[common.Property]] = Field(None)
    links: Optional[List[common.Link]] = Field(None)
    parts: Optional[List[common.Part]] = Field(None)
    groups: Optional[List[Group]] = None
    insert_controls: Optional[List[InsertControls]] = Field(None, alias='insert-controls')
Attributes¤
class_: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='class', description='A textual label that provides a sub-type or characterization of the group.', title='Group Class') class-attribute instance-attribute ¤
groups: Optional[List[Group]] = None class-attribute instance-attribute ¤
id: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, description='Identifies the group.', title='Group Identifier') class-attribute instance-attribute ¤
insert_controls: Optional[List[InsertControls]] = Field(None, alias='insert-controls') class-attribute instance-attribute ¤
params: Optional[List[common.Parameter]] = Field(None) class-attribute instance-attribute ¤
parts: Optional[List[common.Part]] = Field(None) class-attribute instance-attribute ¤
props: Optional[List[common.Property]] = Field(None) class-attribute instance-attribute ¤
title: str = Field(..., description='A name to be given to the group for use in display.', title='Group Title') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
316
317
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Import ¤

Bases: OscalBaseModel

Designates a referenced source catalog or profile that provides a source of control information for use in creating a new overlay or baseline.

Source code in trestle/oscal/profile.py
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
class Import(OscalBaseModel):
    """
    Designates a referenced source catalog or profile that provides a source of control information for use in creating a new overlay or baseline.
    """

    class Config:
        extra = Extra.forbid

    href: str = Field(
        ...,
        description='A resolvable URL reference to the base catalog or profile that this profile is tailoring.',
        title='Catalog or Profile Reference'
    )
    include_all: Optional[common.IncludeAll] = Field(None, alias='include-all')
    include_controls: Optional[List[SelectControl]] = Field(None, alias='include-controls')
    exclude_controls: Optional[List[SelectControl]] = Field(None, alias='exclude-controls')
Attributes¤
exclude_controls: Optional[List[SelectControl]] = Field(None, alias='exclude-controls') class-attribute instance-attribute ¤
href: str = Field(..., description='A resolvable URL reference to the base catalog or profile that this profile is tailoring.', title='Catalog or Profile Reference') class-attribute instance-attribute ¤
include_all: Optional[common.IncludeAll] = Field(None, alias='include-all') class-attribute instance-attribute ¤
include_controls: Optional[List[SelectControl]] = Field(None, alias='include-controls') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
199
200
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

InsertControls ¤

Bases: OscalBaseModel

Specifies which controls to use in the containing context.

Source code in trestle/oscal/profile.py
295
296
297
298
299
300
301
302
303
304
305
306
307
308
class InsertControls(OscalBaseModel):
    """
    Specifies which controls to use in the containing context.
    """

    class Config:
        extra = Extra.forbid

    order: Optional[OrderValidValues] = Field(
        None, description='A designation of how a selection of controls in a profile is to be ordered.', title='Order'
    )
    include_all: Optional[common.IncludeAll] = Field(None, alias='include-all')
    include_controls: Optional[List[SelectControl]] = Field(None, alias='include-controls')
    exclude_controls: Optional[List[SelectControl]] = Field(None, alias='exclude-controls')
Attributes¤
exclude_controls: Optional[List[SelectControl]] = Field(None, alias='exclude-controls') class-attribute instance-attribute ¤
include_all: Optional[common.IncludeAll] = Field(None, alias='include-all') class-attribute instance-attribute ¤
include_controls: Optional[List[SelectControl]] = Field(None, alias='include-controls') class-attribute instance-attribute ¤
order: Optional[OrderValidValues] = Field(None, description='A designation of how a selection of controls in a profile is to be ordered.', title='Order') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
300
301
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

ItemNameValidValues ¤

Bases: Enum

Source code in trestle/oscal/profile.py
127
128
129
130
131
132
133
class ItemNameValidValues(Enum):
    param = 'param'
    prop = 'prop'
    link = 'link'
    part = 'part'
    mapping = 'mapping'
    map = 'map'
Attributes¤
map = 'map' class-attribute instance-attribute ¤
mapping = 'mapping' class-attribute instance-attribute ¤
param = 'param' class-attribute instance-attribute ¤
part = 'part' class-attribute instance-attribute ¤
prop = 'prop' class-attribute instance-attribute ¤

Matching ¤

Bases: OscalBaseModel

Selecting a set of controls by matching their IDs with a wildcard pattern.

Source code in trestle/oscal/profile.py
114
115
116
117
118
119
120
121
122
123
124
class Matching(OscalBaseModel):
    """
    Selecting a set of controls by matching their IDs with a wildcard pattern.
    """

    class Config:
        extra = Extra.forbid

    pattern: Optional[constr(regex=r'^\S(.*\S)?$')] = Field(
        None, description='A glob expression matching the IDs of one or more controls to be selected.', title='Pattern'
    )
Attributes¤
pattern: Optional[constr(regex='^\\S(.*\\S)?$')] = Field(None, description='A glob expression matching the IDs of one or more controls to be selected.', title='Pattern') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
119
120
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Merge ¤

Bases: OscalBaseModel

Provides structuring directives that instruct how controls are organized after profile resolution.

Source code in trestle/oscal/profile.py
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
class Merge(OscalBaseModel):
    """
    Provides structuring directives that instruct how controls are organized after profile resolution.
    """

    class Config:
        extra = Extra.forbid

    combine: Optional[Combine] = Field(
        None,
        description=
        'A Combine element defines how to resolve duplicate instances of the same control (e.g., controls with the same ID).',
        title='Combination Rule'
    )
    flat: Optional[Dict[str, Any]] = Field(
        None, description='Directs that controls appear without any grouping structure.', title='Flat Without Grouping'
    )
    as_is: Optional[BooleanDatatype] = Field(
        None,
        alias='as-is',
        description=
        'Indicates that the controls selected should retain their original grouping as defined in the import source.',
        title='Group As-Is'
    )
    custom: Optional[Custom] = Field(
        None,
        description='Provides an alternate grouping structure that selected controls will be placed in.',
        title='Custom Grouping'
    )
Attributes¤
as_is: Optional[BooleanDatatype] = Field(None, alias='as-is', description='Indicates that the controls selected should retain their original grouping as defined in the import source.', title='Group As-Is') class-attribute instance-attribute ¤
combine: Optional[Combine] = Field(None, description='A Combine element defines how to resolve duplicate instances of the same control (e.g., controls with the same ID).', title='Combination Rule') class-attribute instance-attribute ¤
custom: Optional[Custom] = Field(None, description='Provides an alternate grouping structure that selected controls will be placed in.', title='Custom Grouping') class-attribute instance-attribute ¤
flat: Optional[Dict[str, Any]] = Field(None, description='Directs that controls appear without any grouping structure.', title='Flat Without Grouping') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
373
374
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Model ¤

Bases: OscalBaseModel

Source code in trestle/oscal/profile.py
420
421
class Model(OscalBaseModel):
    profile: Profile
Attributes¤
profile: Profile instance-attribute ¤

Modify ¤

Bases: OscalBaseModel

Set parameters or amend controls in resolution.

Source code in trestle/oscal/profile.py
283
284
285
286
287
288
289
290
291
292
class Modify(OscalBaseModel):
    """
    Set parameters or amend controls in resolution.
    """

    class Config:
        extra = Extra.forbid

    set_parameters: Optional[List[SetParameter]] = Field(None, alias='set-parameters')
    alters: Optional[List[Alter]] = Field(None)
Attributes¤
alters: Optional[List[Alter]] = Field(None) class-attribute instance-attribute ¤
set_parameters: Optional[List[SetParameter]] = Field(None, alias='set-parameters') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
288
289
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

OrderValidValues ¤

Bases: Enum

Source code in trestle/oscal/profile.py
108
109
110
111
class OrderValidValues(Enum):
    keep = 'keep'
    ascending = 'ascending'
    descending = 'descending'
Attributes¤
ascending = 'ascending' class-attribute instance-attribute ¤
descending = 'descending' class-attribute instance-attribute ¤
keep = 'keep' class-attribute instance-attribute ¤

PositionValidValues ¤

Bases: Enum

Source code in trestle/oscal/profile.py
101
102
103
104
105
class PositionValidValues(Enum):
    before = 'before'
    after = 'after'
    starting = 'starting'
    ending = 'ending'
Attributes¤
after = 'after' class-attribute instance-attribute ¤
before = 'before' class-attribute instance-attribute ¤
ending = 'ending' class-attribute instance-attribute ¤
starting = 'starting' class-attribute instance-attribute ¤

Profile ¤

Bases: OscalBaseModel

Each OSCAL profile is defined by a profile element.

Source code in trestle/oscal/profile.py
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
class Profile(OscalBaseModel):
    """
    Each OSCAL profile is defined by a profile element.
    """

    class Config:
        extra = Extra.forbid

    uuid: constr(regex=r'^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[45][0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$'
                 ) = Field(
                     ...,
                     description='Provides a globally unique means to identify a given profile instance.',
                     title='Profile Universally Unique Identifier'
                 )
    metadata: common.Metadata
    imports: List[Import] = Field(...)
    merge: Optional[Merge] = None
    modify: Optional[Modify] = None
    back_matter: Optional[common.BackMatter] = Field(None, alias='back-matter')
Attributes¤
back_matter: Optional[common.BackMatter] = Field(None, alias='back-matter') class-attribute instance-attribute ¤
imports: List[Import] = Field(...) class-attribute instance-attribute ¤
merge: Optional[Merge] = None class-attribute instance-attribute ¤
metadata: common.Metadata instance-attribute ¤
modify: Optional[Modify] = None class-attribute instance-attribute ¤
uuid: constr(regex='^[0-9A-Fa-f]{8}-[0-9A-Fa-f]{4}-[45][0-9A-Fa-f]{3}-[89ABab][0-9A-Fa-f]{3}-[0-9A-Fa-f]{12}$') = Field(..., description='Provides a globally unique means to identify a given profile instance.', title='Profile Universally Unique Identifier') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
404
405
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

Remove ¤

Bases: OscalBaseModel

Specifies objects to be removed from a control based on specific aspects of the object that must all match.

Source code in trestle/oscal/profile.py
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
class Remove(OscalBaseModel):
    """
    Specifies objects to be removed from a control based on specific aspects of the object that must all match.
    """

    class Config:
        extra = Extra.forbid

    by_name: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='by-name',
        description='Identify items remove by matching their assigned name.',
        title='Reference by (assigned) name'
    )
    by_class: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='by-class',
        description='Identify items to remove by matching their class.',
        title='Reference by class'
    )
    by_id: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None, alias='by-id', description='Identify items to remove indicated by their id.', title='Reference by ID'
    )
    by_item_name: Optional[ItemNameValidValues] = Field(
        None,
        alias='by-item-name',
        description="Identify items to remove by the name of the item's information object name, e.g. title or prop.",
        title='Item Name Reference'
    )
    by_ns: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='by-ns',
        description="Identify items to remove by the item's ns, which is the namespace associated with a part, or prop.",
        title='Item Namespace Reference'
    )
Attributes¤
by_class: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='by-class', description='Identify items to remove by matching their class.', title='Reference by class') class-attribute instance-attribute ¤
by_id: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='by-id', description='Identify items to remove indicated by their id.', title='Reference by ID') class-attribute instance-attribute ¤
by_item_name: Optional[ItemNameValidValues] = Field(None, alias='by-item-name', description="Identify items to remove by the name of the item's information object name, e.g. title or prop.", title='Item Name Reference') class-attribute instance-attribute ¤
by_name: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='by-name', description='Identify items remove by matching their assigned name.', title='Reference by (assigned) name') class-attribute instance-attribute ¤
by_ns: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='by-ns', description="Identify items to remove by the item's ns, which is the namespace associated with a part, or prop.", title='Item Namespace Reference') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
217
218
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

SelectControl ¤

Bases: OscalBaseModel

Select a control or controls from an imported control set.

Source code in trestle/oscal/profile.py
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
class SelectControl(OscalBaseModel):
    """
    Select a control or controls from an imported control set.
    """

    class Config:
        extra = Extra.forbid

    with_child_controls: Optional[WithChildControlsValidValues] = Field(
        None,
        alias='with-child-controls',
        description='When a control is included, whether its child (dependent) controls are also included.',
        title='Include Contained Controls with Control'
    )
    with_ids: Optional[List[WithId]] = Field(None, alias='with-ids')
    matching: Optional[List[Matching]] = Field(None)
Attributes¤
matching: Optional[List[Matching]] = Field(None) class-attribute instance-attribute ¤
with_child_controls: Optional[WithChildControlsValidValues] = Field(None, alias='with-child-controls', description='When a control is included, whether its child (dependent) controls are also included.', title='Include Contained Controls with Control') class-attribute instance-attribute ¤
with_ids: Optional[List[WithId]] = Field(None, alias='with-ids') class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
181
182
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

SetParameter ¤

Bases: OscalBaseModel

A parameter setting, to be propagated to points of insertion.

Source code in trestle/oscal/profile.py
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
class SetParameter(OscalBaseModel):
    """
    A parameter setting, to be propagated to points of insertion.
    """

    class Config:
        extra = Extra.forbid

    param_id: constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    ) = Field(..., alias='param-id', description='An identifier for the parameter.', title='Parameter ID')
    class_: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='class',
        description='A textual label that provides a characterization of the parameter.',
        title='Parameter Class'
    )
    depends_on: Optional[constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    )] = Field(
        None,
        alias='depends-on',
        description=
        '**(deprecated)** Another parameter invoking this one. This construct has been deprecated and should not be used.',
        title='Depends On'
    )
    props: Optional[List[common.Property]] = Field(None)
    links: Optional[List[common.Link]] = Field(None)
    label: Optional[str] = Field(
        None,
        description=
        'A short, placeholder name for the parameter, which can be used as a substitute for a value if no value is assigned.',
        title='Parameter Label'
    )
    usage: Optional[str] = Field(
        None, description='Describes the purpose and use of a parameter.', title='Parameter Usage Description'
    )
    constraints: Optional[List[common.ParameterConstraint]] = Field(None)
    guidelines: Optional[List[common.ParameterGuideline]] = Field(None)
    values: Optional[List[constr(regex=r'^\S(.*\S)?$')]] = Field(None)
    select: Optional[common.ParameterSelection] = None
Attributes¤
class_: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='class', description='A textual label that provides a characterization of the parameter.', title='Parameter Class') class-attribute instance-attribute ¤
constraints: Optional[List[common.ParameterConstraint]] = Field(None) class-attribute instance-attribute ¤
depends_on: Optional[constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$')] = Field(None, alias='depends-on', description='**(deprecated)** Another parameter invoking this one. This construct has been deprecated and should not be used.', title='Depends On') class-attribute instance-attribute ¤
guidelines: Optional[List[common.ParameterGuideline]] = Field(None) class-attribute instance-attribute ¤
label: Optional[str] = Field(None, description='A short, placeholder name for the parameter, which can be used as a substitute for a value if no value is assigned.', title='Parameter Label') class-attribute instance-attribute ¤
param_id: constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$') = Field(..., alias='param-id', description='An identifier for the parameter.', title='Parameter ID') class-attribute instance-attribute ¤
props: Optional[List[common.Property]] = Field(None) class-attribute instance-attribute ¤
select: Optional[common.ParameterSelection] = None class-attribute instance-attribute ¤
usage: Optional[str] = Field(None, description='Describes the purpose and use of a parameter.', title='Parameter Usage Description') class-attribute instance-attribute ¤
values: Optional[List[constr(regex='^\\S(.*\\S)?$')]] = Field(None) class-attribute instance-attribute ¤
Classes¤
Config ¤
Source code in trestle/oscal/profile.py
58
59
class Config:
    extra = Extra.forbid
Attributes¤
extra = Extra.forbid class-attribute instance-attribute ¤

WithChildControlsValidValues ¤

Bases: Enum

Source code in trestle/oscal/profile.py
48
49
50
class WithChildControlsValidValues(Enum):
    yes = 'yes'
    no = 'no'
Attributes¤
no = 'no' class-attribute instance-attribute ¤
yes = 'yes' class-attribute instance-attribute ¤

WithId ¤

Bases: OscalBaseModel

Source code in trestle/oscal/profile.py
39
40
41
42
43
44
45
class WithId(OscalBaseModel):
    __root__: constr(
        regex=
        r'^[_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD][_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\-\.0-9\u00B7\u0300-\u036F\u203F-\u2040]*$'
    ) = Field(
        ..., description='Selecting a control by its ID given as a literal.', title='Match Controls by Identifier'
    )
Attributes¤
__root__: constr(regex='^[_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][_A-Za-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-\\.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$') = Field(..., description='Selecting a control by its ID given as a literal.', title='Match Controls by Identifier') class-attribute instance-attribute ¤

handler: python