Builders¶
builders
¶
Map our domain signals onto OCSF event models (one typed builder per class).
Each build_* returns a typed, already-valid model instance. All OCSF-specific
knowledge (field names, *_id integers, defaults) is confined to this module,
defaults, and the generated _catalog (per-class activity enums).
build_observable
¶
build_observable(observable: Observable) -> Observable
Map one domain Observable to an OCSF observable model.
OCSF observable.name is the attribute name/path and is required. When the
caller does not supply one we fall back to the observable type's label (e.g.
"ip_address").
Source code in src/ocsf_emitter/builders.py
build_attack
¶
build_attack(attack: MitreAttack) -> Attack
Map a MitreAttack to an OCSF attack object (technique [+ tactic]).
Source code in src/ocsf_emitter/builders.py
build_user
¶
build_user(user: UserRef) -> User
Map a domain UserRef to an OCSF user object (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_device
¶
build_device(device: DeviceRef) -> Device
Map a domain DeviceRef to an OCSF device object (requires hostname or uid).
Source code in src/ocsf_emitter/builders.py
build_file
¶
build_file(file: FileRef) -> File
Map a domain FileRef to an OCSF file object.
Source code in src/ocsf_emitter/builders.py
build_api
¶
build_api(api: ApiCall) -> Api
Map a domain ApiCall to an OCSF api object.
Source code in src/ocsf_emitter/builders.py
build_web_resource
¶
build_web_resource(resource: WebResourceRef) -> WebResource
Map a domain WebResourceRef to an OCSF web_resource object (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_endpoint
¶
build_endpoint(endpoint: EndpointRef) -> NetworkEndpoint
Map a domain EndpointRef to an OCSF network_endpoint (requires ip/hostname/uid).
Source code in src/ocsf_emitter/builders.py
build_compliance
¶
build_compliance(compliance: ComplianceRef) -> Compliance
Map a domain ComplianceRef to an OCSF compliance object.
Source code in src/ocsf_emitter/builders.py
build_process
¶
build_process(process: ProcessRef) -> Process
Map a domain ProcessRef to an OCSF process object (requires pid or uid).
Source code in src/ocsf_emitter/builders.py
build_email
¶
build_email(email: EmailRef) -> Email
Map a domain EmailRef to an OCSF email object (requires from or to; from is aliased).
Source code in src/ocsf_emitter/builders.py
build_vulnerability
¶
build_vulnerability(
vuln: VulnerabilityRef,
) -> Vulnerability
Map a domain VulnerabilityRef to an OCSF vulnerability (just one of cve/cwe/advisory).
Source code in src/ocsf_emitter/builders.py
build_connection_info
¶
build_connection_info(
conn: ConnectionInfoRef,
) -> NetworkConnectionInfo
Map a domain ConnectionInfoRef to an OCSF network_connection_info object.
Source code in src/ocsf_emitter/builders.py
build_group
¶
build_group(group: GroupRef) -> Group
Map a domain GroupRef to an OCSF group object (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_database
¶
build_database(database: DatabaseRef) -> Database
Map a domain DatabaseRef to an OCSF database object (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_resource_details
¶
build_resource_details(
resource: ResourceDetailsRef,
) -> ResourceDetails
Map a domain ResourceDetailsRef to an OCSF resource_details (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_job
¶
build_job(job: JobRef) -> Job
Map a domain JobRef to an OCSF job object (requires name + file).
build_kernel
¶
build_kernel(kernel: KernelRef) -> Kernel
Map a domain KernelRef to an OCSF kernel object (requires name + type_id).
build_module
¶
build_module(module: ModuleRef) -> Module
Map a domain ModuleRef to an OCSF module object (requires load_type_id).
Source code in src/ocsf_emitter/builders.py
build_script
¶
build_script(script: ScriptRef) -> Script
Map a domain ScriptRef to an OCSF script object (requires script_content + type_id).
Source code in src/ocsf_emitter/builders.py
build_scan
¶
build_scan(scan: ScanRef) -> Scan
Map a domain ScanRef to an OCSF scan object (requires type_id, and name or uid).
Source code in src/ocsf_emitter/builders.py
build_osint
¶
build_osint(osint: OsintRef) -> Osint
Map a domain OsintRef to an OCSF osint object (requires type_id + value).
build_managed_entity
¶
build_managed_entity(
entity: ManagedEntityRef,
) -> ManagedEntity
Map a domain ManagedEntityRef to an OCSF managed_entity object (requires name or uid).
Source code in src/ocsf_emitter/builders.py
build_query_evidence
¶
build_query_evidence(
query: QueryEvidenceRef,
) -> QueryEvidence
Map a domain QueryEvidenceRef to an OCSF query_evidence (just one queried object).
Source code in src/ocsf_emitter/builders.py
build_kernel_driver
¶
build_kernel_driver(
driver: KernelDriverRef,
) -> KernelDriver
Map a domain KernelDriverRef to an OCSF kernel_driver object (requires file).
build_uas
¶
build_uas(uas: UasRef) -> UnmannedAerialSystem
Map a domain UasRef to an OCSF unmanned_aerial_system (requires name/serial_number/uid).
Source code in src/ocsf_emitter/builders.py
build_detection_finding
¶
build_detection_finding(
*,
title: str,
severity: Severity,
message: str,
uid: str | None = None,
observables: Sequence[Observable] | None = None,
activity: Activity = CREATE,
status: Status = NEW,
description: str | None = None,
time_ms: int | None = None,
data_sources: Sequence[str] | None = None,
confidence: Confidence | None = None,
confidence_score: int | None = None,
risk_level: RiskLevel | None = None,
risk_score: int | None = None,
attacks: Sequence[MitreAttack] | None = None,
count: int | None = None,
first_seen_ms: int | None = None,
last_seen_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> DetectionFinding
Build a typed, valid OCSF Detection Finding from our fields.
This is the primary entry point. It stamps house defaults (metadata, product, schema version, activity/severity/status mappings, event time) so every finding leaves with a consistent shape.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
title
|
str
|
Short human-facing finding title. |
required |
severity
|
Severity
|
Our severity; mapped to OCSF |
required |
message
|
str
|
Human-readable description of the detection. |
required |
uid
|
str | None
|
Stable unique id (OCSF |
None
|
observables
|
Sequence[Observable] | None
|
Entities the finding refers to. |
None
|
activity
|
Activity
|
Lifecycle activity; drives |
CREATE
|
status
|
Status
|
Triage status; mapped to OCSF |
NEW
|
description
|
str | None
|
Longer detail, stored on |
None
|
time_ms
|
int | None
|
Event time (epoch ms). Defaults to |
None
|
data_sources
|
Sequence[str] | None
|
Provenance, stored on |
None
|
confidence
|
Confidence | None
|
Detector confidence; mapped to |
None
|
confidence_score
|
int | None
|
Numeric confidence (0-100), stored on |
None
|
risk_level
|
RiskLevel | None
|
Risk assessment; mapped to |
None
|
risk_score
|
int | None
|
Numeric risk score, stored on |
None
|
attacks
|
Sequence[MitreAttack] | None
|
MITRE ATT&CK references, stored on |
None
|
count
|
int | None
|
Observation count, stored on |
None
|
first_seen_ms
|
int | None
|
First observation time (epoch ms) -> finding_info.first_seen_time. |
None
|
last_seen_ms
|
int | None
|
Last observation time (epoch ms) -> finding_info.last_seen_time. |
None
|
product
|
Product | None
|
OCSF Product to stamp; defaults to the process-wide product set
via |
None
|
clock
|
Callable[[], int]
|
Injectable time source (epoch ms) for deterministic tests. |
_now_ms
|
uid_factory
|
Callable[[], str]
|
Injectable uid source for deterministic tests. |
_new_uid
|
Returns:
| Type | Description |
|---|---|
DetectionFinding
|
A |
DetectionFinding
|
construction; call :func: |
DetectionFinding
|
for the full pre-flight check. |
Source code in src/ocsf_emitter/builders.py
448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 | |
build_from_signal
¶
build_from_signal(
signal: DetectionSignal,
*,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DetectionFinding
Build an OCSF Detection Finding from a fully-formed domain signal.
product overrides the process-wide default set via
defaults.configure_product. If neither is set, raises
:class:OcsfEmitterError rather than emitting an unattributed finding.
Source code in src/ocsf_emitter/builders.py
build_authentication
¶
build_authentication(
*,
user: UserRef,
severity: Severity,
activity: AuthenticationAction = LOGON,
message: str | None = None,
service_name: str | None = None,
dst_endpoint: EndpointRef | None = None,
is_mfa: bool | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> Authentication
Build an OCSF Authentication (3002) event.
OCSF requires user and at least one of service/dst_endpoint; a
default service is synthesized from service_name (or "unknown") when
neither is supplied so the constraint always holds.
Source code in src/ocsf_emitter/builders.py
build_account_change
¶
build_account_change(
*,
user: UserRef,
severity: Severity,
activity: AccountChangeAction = CREATE,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> AccountChange
Build an OCSF Account Change (3001) event. Requires user.
Source code in src/ocsf_emitter/builders.py
build_patch_state
¶
build_patch_state(
*,
device: DeviceRef,
severity: Severity,
activity: PatchStateAction = LOG,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> PatchState
Build an OCSF Operating System Patch State (5004) event.
Requires device; OCSF also constrains "at least one of os.sp_name /
os.sp_ver / os.version", so populate one of the os_* fields on the
:class:DeviceRef.
Source code in src/ocsf_emitter/builders.py
build_api_activity
¶
build_api_activity(
*,
api: ApiCall,
severity: Severity,
activity: ApiActivityAction = READ,
src_endpoint: EndpointRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ApiActivity
Build an OCSF API Activity (6003) event.
Requires api, actor, and src_endpoint -- an empty
src_endpoint/actor is synthesized when not supplied so the OCSF base
requirements hold; pass actor_user / src_endpoint to populate them.
Source code in src/ocsf_emitter/builders.py
build_web_resources_activity
¶
build_web_resources_activity(
*,
web_resources: Sequence[WebResourceRef],
severity: Severity,
activity: WebResourcesActivityAction = READ,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> WebResourcesActivity
Build an OCSF Web Resources Activity (6001) event.
Requires web_resources (a non-empty list).
Source code in src/ocsf_emitter/builders.py
build_file_hosting
¶
build_file_hosting(
*,
file: FileRef,
severity: Severity,
activity: FileHostingAction = SHARE,
src_endpoint: EndpointRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> FileHosting
Build an OCSF File Hosting Activity (6006) event.
Requires file, actor, and src_endpoint -- an empty
actor/src_endpoint is synthesized when not supplied so the OCSF base
requirements hold; pass actor_user / src_endpoint to populate them.
Source code in src/ocsf_emitter/builders.py
build_compliance_finding
¶
build_compliance_finding(
*,
title: str,
compliance: ComplianceRef,
severity: Severity,
activity: Activity = CREATE,
uid: str | None = None,
message: str | None = None,
description: str | None = None,
observables: Sequence[Observable] | None = None,
data_sources: Sequence[str] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> ComplianceFinding
Build an OCSF Compliance Finding (2003) event.
Requires compliance (with at least one standard) and finding_info.
Shares the Findings Activity vocabulary (Create/Update/Close).
Source code in src/ocsf_emitter/builders.py
build_file_activity
¶
build_file_activity(
*,
file: FileRef,
severity: Severity,
activity: FileActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> FileActivity
Build an OCSF File System Activity (1001) event.
Source code in src/ocsf_emitter/builders.py
build_kernel_extension_activity
¶
build_kernel_extension_activity(
*,
driver: KernelDriverRef,
severity: Severity,
activity: KernelExtensionActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> KernelExtensionActivity
Build an OCSF Kernel Extension Activity (1002) event.
Source code in src/ocsf_emitter/builders.py
build_kernel_activity
¶
build_kernel_activity(
*,
kernel: KernelRef,
severity: Severity,
activity: KernelActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> KernelActivity
Build an OCSF Kernel Activity (1003) event.
Source code in src/ocsf_emitter/builders.py
build_memory_activity
¶
build_memory_activity(
*,
process: ProcessRef,
severity: Severity,
activity: MemoryActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> MemoryActivity
Build an OCSF Memory Activity (1004) event.
Source code in src/ocsf_emitter/builders.py
build_module_activity
¶
build_module_activity(
*,
module: ModuleRef,
severity: Severity,
activity: ModuleActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ModuleActivity
Build an OCSF Module Activity (1005) event.
Source code in src/ocsf_emitter/builders.py
build_scheduled_job_activity
¶
build_scheduled_job_activity(
*,
job: JobRef,
severity: Severity,
activity: ScheduledJobActivityAction,
device: DeviceRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ScheduledJobActivity
Build an OCSF Scheduled Job Activity (1006) event.
Source code in src/ocsf_emitter/builders.py
build_process_activity
¶
build_process_activity(
*,
process: ProcessRef,
severity: Severity,
activity: ProcessActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ProcessActivity
Build an OCSF Process Activity (1007) event.
Source code in src/ocsf_emitter/builders.py
build_event_log_activity
¶
build_event_log_activity(
*,
log_name: str,
severity: Severity,
activity: EventLogActvityAction,
log_provider: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> EventLogActvity
Build an OCSF Event Log Activity (1008) event (requires a log identifier).
Source code in src/ocsf_emitter/builders.py
build_script_activity
¶
build_script_activity(
*,
script: ScriptRef,
severity: Severity,
activity: ScriptActivityAction,
device: DeviceRef,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ScriptActivity
Build an OCSF Script Activity (1009) event.
Source code in src/ocsf_emitter/builders.py
build_vulnerability_finding
¶
build_vulnerability_finding(
*,
title: str,
vulnerabilities: Sequence[VulnerabilityRef],
severity: Severity,
activity: VulnerabilityFindingAction,
uid: str | None = None,
description: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> VulnerabilityFinding
Build an OCSF Vulnerability Finding (2002) event.
Source code in src/ocsf_emitter/builders.py
build_incident_finding
¶
build_incident_finding(
*,
title: str,
severity: Severity,
activity: IncidentFindingAction,
assignee: UserRef | None = None,
assignee_group: GroupRef | None = None,
status: Status = NEW,
uid: str | None = None,
description: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> IncidentFinding
Build an OCSF Incident Finding (2005) event (requires an assignee or assignee_group).
Source code in src/ocsf_emitter/builders.py
build_data_security_finding
¶
build_data_security_finding(
*,
title: str,
severity: Severity,
activity: DataSecurityFindingAction,
uid: str | None = None,
description: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> DataSecurityFinding
Build an OCSF Data Security Finding (2006) event.
Source code in src/ocsf_emitter/builders.py
build_application_security_posture_finding
¶
build_application_security_posture_finding(
*,
title: str,
severity: Severity,
activity: ApplicationSecurityPostureFindingAction,
compliance: ComplianceRef | None = None,
vulnerabilities: Sequence[VulnerabilityRef]
| None = None,
uid: str | None = None,
description: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
uid_factory: Callable[[], str] = _new_uid,
) -> ApplicationSecurityPostureFinding
Build an OCSF App Security Posture Finding (2007); needs compliance or vulnerabilities.
Source code in src/ocsf_emitter/builders.py
build_authorize_session
¶
build_authorize_session(
*,
user: UserRef,
severity: Severity,
activity: AuthorizeSessionAction,
privileges: Sequence[str] | None = None,
group: GroupRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> AuthorizeSession
Build an OCSF Authorize Session (3003) event (requires exactly one of privileges/group).
Source code in src/ocsf_emitter/builders.py
build_entity_management
¶
build_entity_management(
*,
entity: ManagedEntityRef,
severity: Severity,
activity: EntityManagementAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> EntityManagement
Build an OCSF Entity Management (3004) event.
Source code in src/ocsf_emitter/builders.py
build_user_access
¶
build_user_access(
*,
user: UserRef,
privileges: Sequence[str],
severity: Severity,
activity: UserAccessAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> UserAccess
Build an OCSF User Access Management (3005) event.
Source code in src/ocsf_emitter/builders.py
build_group_management
¶
build_group_management(
*,
group: GroupRef,
severity: Severity,
activity: GroupManagementAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> GroupManagement
Build an OCSF Group Management (3006) event.
Source code in src/ocsf_emitter/builders.py
build_network_activity
¶
build_network_activity(
*,
severity: Severity,
activity: NetworkActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> NetworkActivity
Build an OCSF Network Activity (4001) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_http_activity
¶
build_http_activity(
*,
severity: Severity,
activity: HttpActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> HttpActivity
Build an OCSF HTTP Activity (4002) event.
Source code in src/ocsf_emitter/builders.py
build_dns_activity
¶
build_dns_activity(
*,
severity: Severity,
activity: DnsActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DnsActivity
Build an OCSF DNS Activity (4003) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_dhcp_activity
¶
build_dhcp_activity(
*,
severity: Severity,
activity: DhcpActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DhcpActivity
Build an OCSF DHCP Activity (4004) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_rdp_activity
¶
build_rdp_activity(
*,
severity: Severity,
activity: RdpActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> RdpActivity
Build an OCSF RDP Activity (4005) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_smb_activity
¶
build_smb_activity(
*,
severity: Severity,
activity: SmbActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> SmbActivity
Build an OCSF SMB Activity (4006) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_ssh_activity
¶
build_ssh_activity(
*,
severity: Severity,
activity: SshActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> SshActivity
Build an OCSF SSH Activity (4007) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_ftp_activity
¶
build_ftp_activity(
*,
severity: Severity,
activity: FtpActivityAction,
src_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> FtpActivity
Build an OCSF FTP Activity (4008) event (requires src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_email_activity
¶
build_email_activity(
*,
email: EmailRef,
direction_id: int,
severity: Severity,
activity: EmailActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> EmailActivity
Build an OCSF Email Activity (4009) event (requires email + direction_id).
Source code in src/ocsf_emitter/builders.py
build_ntp_activity
¶
build_ntp_activity(
*,
version: str,
src_endpoint: EndpointRef,
severity: Severity,
activity: NtpActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> NtpActivity
Build an OCSF NTP Activity (4013) event (requires version + src or dst endpoint).
Source code in src/ocsf_emitter/builders.py
build_tunnel_activity
¶
build_tunnel_activity(
*,
src_endpoint: EndpointRef,
severity: Severity,
activity: TunnelActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> TunnelActivity
Build an OCSF Tunnel Activity (4014) event (requires a src_endpoint/session/…).
Source code in src/ocsf_emitter/builders.py
build_inventory_info
¶
build_inventory_info(
*,
device: DeviceRef,
severity: Severity,
activity: InventoryInfoAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> InventoryInfo
Build an OCSF Device Inventory Info (5001) event.
Source code in src/ocsf_emitter/builders.py
build_user_inventory
¶
build_user_inventory(
*,
user: UserRef,
severity: Severity,
activity: UserInventoryAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> UserInventory
Build an OCSF User Inventory Info (5003) event.
Source code in src/ocsf_emitter/builders.py
build_device_config_state_change
¶
build_device_config_state_change(
*,
device: DeviceRef,
severity: Severity,
activity: DeviceConfigStateChangeAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DeviceConfigStateChange
Build an OCSF Device Config State Change (5019) event.
Source code in src/ocsf_emitter/builders.py
build_software_info
¶
build_software_info(
*,
device: DeviceRef,
severity: Severity,
activity: SoftwareInfoAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> SoftwareInfo
Build an OCSF Software Inventory Info (5020) event.
Source code in src/ocsf_emitter/builders.py
build_osint_inventory_info
¶
build_osint_inventory_info(
*,
osint: Sequence[OsintRef],
severity: Severity,
activity: OsintInventoryInfoAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> OsintInventoryInfo
Build an OCSF OSINT Inventory Info (5021) event.
Source code in src/ocsf_emitter/builders.py
build_cloud_resources_inventory_info
¶
build_cloud_resources_inventory_info(
*,
resources: Sequence[ResourceDetailsRef],
severity: Severity,
activity: CloudResourcesInventoryInfoAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> CloudResourcesInventoryInfo
Build an OCSF Cloud Resources Inventory Info (5023) event (requires resources/…).
Source code in src/ocsf_emitter/builders.py
build_evidence_info
¶
build_evidence_info(
*,
query_evidence: QueryEvidenceRef,
query_result_id: int,
severity: Severity,
activity: EvidenceInfoAction,
device: DeviceRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> EvidenceInfo
Build an OCSF Live Evidence Info (5040) event.
Source code in src/ocsf_emitter/builders.py
build_application_lifecycle
¶
build_application_lifecycle(
*,
app_name: str,
severity: Severity,
activity: ApplicationLifecycleAction,
app_version: str | None = None,
app_vendor: str | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ApplicationLifecycle
Build an OCSF Application Lifecycle (6002) event (app is an OCSF product).
Source code in src/ocsf_emitter/builders.py
build_datastore_activity
¶
build_datastore_activity(
*,
database: DatabaseRef,
src_endpoint: EndpointRef,
severity: Severity,
activity: DatastoreActivityAction,
actor_user: UserRef | None = None,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DatastoreActivity
Build an OCSF Datastore Activity (6005) event (requires a database/databucket/table).
Source code in src/ocsf_emitter/builders.py
build_scan_activity
¶
build_scan_activity(
*,
scan: ScanRef,
severity: Severity,
activity: ScanActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ScanActivity
Build an OCSF Scan Activity (6007) event.
Source code in src/ocsf_emitter/builders.py
build_application_error
¶
build_application_error(
*,
severity: Severity,
activity: ApplicationErrorAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ApplicationError
Build an OCSF Application Error (6008) event.
Source code in src/ocsf_emitter/builders.py
build_remediation_activity
¶
build_remediation_activity(
*,
command_uid: str,
severity: Severity,
activity: RemediationActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> RemediationActivity
Build an OCSF Remediation Activity (7001) event (requires command_uid).
Source code in src/ocsf_emitter/builders.py
build_file_remediation_activity
¶
build_file_remediation_activity(
*,
command_uid: str,
file: FileRef,
severity: Severity,
activity: FileRemediationActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> FileRemediationActivity
Build an OCSF File Remediation Activity (7002) event.
Source code in src/ocsf_emitter/builders.py
build_process_remediation_activity
¶
build_process_remediation_activity(
*,
command_uid: str,
process: ProcessRef,
severity: Severity,
activity: ProcessRemediationActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> ProcessRemediationActivity
Build an OCSF Process Remediation Activity (7003) event.
Source code in src/ocsf_emitter/builders.py
build_network_remediation_activity
¶
build_network_remediation_activity(
*,
command_uid: str,
connection_info: ConnectionInfoRef,
severity: Severity,
activity: NetworkRemediationActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> NetworkRemediationActivity
Build an OCSF Network Remediation Activity (7004) event.
Source code in src/ocsf_emitter/builders.py
build_drone_flights_activity
¶
build_drone_flights_activity(
*,
uas: UasRef,
operator: UserRef,
severity: Severity,
activity: DroneFlightsActivityAction,
dst_endpoint: EndpointRef,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> DroneFlightsActivity
Build an OCSF Drone Flights Activity (8001) event.
Source code in src/ocsf_emitter/builders.py
build_airborne_broadcast_activity
¶
build_airborne_broadcast_activity(
*,
uas: UasRef,
operator: UserRef,
severity: Severity,
activity: AirborneBroadcastActivityAction,
message: str | None = None,
observables: Sequence[Observable] | None = None,
time_ms: int | None = None,
product: Product | None = None,
clock: Callable[[], int] = _now_ms,
) -> AirborneBroadcastActivity
Build an OCSF Airborne Broadcast Activity (8002) event.