You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2026/01/26 09:53:25 UTC

(camel) 01/01: CAMEL-22903 - Add OCSF (Open Cybersecurity Schema Framework) DataFormat component

This is an automated email from the ASF dual-hosted git repository.

acosentino pushed a commit to branch siem
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 78f497f2761f3485157d7b78dfc890f98f38a95b
Author: Andrea Cosentino <an...@gmail.com>
AuthorDate: Sun Jan 25 16:17:59 2026 +0100

    CAMEL-22903 - Add OCSF (Open Cybersecurity Schema Framework) DataFormat component
    
    Signed-off-by: Andrea Cosentino <an...@gmail.com>
---
 bom/camel-bom/pom.xml                              |    5 +
 catalog/camel-allcomponents/pom.xml                |    5 +
 .../apache/camel/catalog/dataformats.properties    |    1 +
 .../org/apache/camel/catalog/dataformats/ocsf.json |   30 +
 .../org/apache/camel/catalog/models.properties     |    1 +
 .../org/apache/camel/catalog/models/ocsf.json      |   27 +
 .../apache/camel/catalog/schemas/camel-spring.xsd  |  105 +
 .../apache/camel/catalog/schemas/camel-xml-io.xsd  |  105 +
 components/camel-ocsf/pom.xml                      |  124 +
 .../dataformat/ocsf/OcsfDataFormatConfigurer.java  |  119 +
 .../camel/dataformat/ocsf/model/Account.java       |  408 ++++
 .../camel/dataformat/ocsf/model/AccountChange.java |  635 +++++
 .../apache/camel/dataformat/ocsf/model/Actor.java  |  493 ++++
 .../camel/dataformat/ocsf/model/Advisory.java      |  109 +
 .../camel/dataformat/ocsf/model/AffectedCode.java  |  109 +
 .../dataformat/ocsf/model/AffectedPackage.java     |  109 +
 .../apache/camel/dataformat/ocsf/model/Agent.java  |  487 ++++
 .../camel/dataformat/ocsf/model/Analytic.java      |  619 +++++
 .../camel/dataformat/ocsf/model/Ancestry.java      |  109 +
 .../dataformat/ocsf/model/AnomalyAnalyasis.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/Answer.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Api.java    |  403 +++
 .../camel/dataformat/ocsf/model/ApiActivity.java   |  558 +++++
 .../camel/dataformat/ocsf/model/Assessment.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/Attack.java |  376 +++
 .../camel/dataformat/ocsf/model/AttackGraph.java   |  109 +
 .../camel/dataformat/ocsf/model/AuthFactor.java    |  540 +++++
 .../dataformat/ocsf/model/Authentication.java      | 1194 +++++++++
 .../dataformat/ocsf/model/AuthenticationToken.java |  109 +
 .../camel/dataformat/ocsf/model/Authorization.java |  230 ++
 .../dataformat/ocsf/model/AuthorizeSession.java    |  654 +++++
 .../dataformat/ocsf/model/AutonomousSystem.java    |  109 +
 .../camel/dataformat/ocsf/model/AvgTimespan.java   |  109 +
 .../camel/dataformat/ocsf/model/CategoryId.java    |  128 +
 .../camel/dataformat/ocsf/model/Certificate.java   |  584 +++++
 .../apache/camel/dataformat/ocsf/model/Check.java  |  109 +
 .../camel/dataformat/ocsf/model/CisControl.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/CisCsc.java |  109 +
 .../dataformat/ocsf/model/ClassificationId.java    |   64 +
 .../camel/dataformat/ocsf/model/ClientHassh.java   |  109 +
 .../apache/camel/dataformat/ocsf/model/Cloud.java  |  449 ++++
 .../camel/dataformat/ocsf/model/Compliance.java    |  804 ++++++
 .../dataformat/ocsf/model/ComplianceFinding.java   |  778 ++++++
 .../dataformat/ocsf/model/ConnectionInfo.java      |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__1.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__2.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__3.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__4.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__5.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__6.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__7.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__8.java   |  109 +
 .../dataformat/ocsf/model/ConnectionInfo__9.java   |  109 +
 .../camel/dataformat/ocsf/model/Container.java     |  671 +++++
 .../dataformat/ocsf/model/ControlParameter.java    |  109 +
 .../dataformat/ocsf/model/Countermeasure.java      |  109 +
 .../dataformat/ocsf/model/CumulativeTraffic.java   |  109 +
 .../ocsf/model/CumulativeTraffic__1.java           |  109 +
 .../ocsf/model/CumulativeTraffic__2.java           |  109 +
 .../ocsf/model/CumulativeTraffic__3.java           |  109 +
 .../ocsf/model/CumulativeTraffic__4.java           |  109 +
 .../ocsf/model/CumulativeTraffic__5.java           |  109 +
 .../ocsf/model/CumulativeTraffic__6.java           |  109 +
 .../ocsf/model/CumulativeTraffic__7.java           |  109 +
 .../ocsf/model/CumulativeTraffic__8.java           |  109 +
 .../ocsf/model/CumulativeTraffic__9.java           |  109 +
 .../apache/camel/dataformat/ocsf/model/Cve.java    |  748 ++++++
 .../apache/camel/dataformat/ocsf/model/Cvss.java   |  591 +++++
 .../apache/camel/dataformat/ocsf/model/Cwe.java    |  274 +++
 .../camel/dataformat/ocsf/model/Database.java      |  109 +
 .../camel/dataformat/ocsf/model/Databucket.java    |  109 +
 .../dataformat/ocsf/model/DatastoreActivity.java   |  665 +++++
 .../apache/camel/dataformat/ocsf/model/DceRpc.java |  109 +
 .../dataformat/ocsf/model/DetectionFinding.java    | 1180 +++++++++
 .../apache/camel/dataformat/ocsf/model/Device.java | 2564 ++++++++++++++++++++
 .../camel/dataformat/ocsf/model/DhcpActivity.java  |  842 +++++++
 .../camel/dataformat/ocsf/model/Display.java       |  362 +++
 .../camel/dataformat/ocsf/model/DnsActivity.java   |  930 +++++++
 .../camel/dataformat/ocsf/model/DnsQuery.java      |  406 ++++
 .../apache/camel/dataformat/ocsf/model/Driver.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Email.java  |  109 +
 .../camel/dataformat/ocsf/model/EmailActivity.java |  840 +++++++
 .../camel/dataformat/ocsf/model/EmailAuth.java     |  109 +
 .../dataformat/ocsf/model/EncryptionDetails.java   |  109 +
 .../camel/dataformat/ocsf/model/Endpoint.java      |  992 ++++++++
 .../camel/dataformat/ocsf/model/Enrichment.java    |  582 +++++
 .../apache/camel/dataformat/ocsf/model/Entity.java |  109 +
 .../dataformat/ocsf/model/EntityManagement.java    |  618 +++++
 .../camel/dataformat/ocsf/model/EntityResult.java  |  109 +
 .../dataformat/ocsf/model/EnvironmentVariable.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Epss.java   |  318 +++
 .../camel/dataformat/ocsf/model/Evidence.java      |  109 +
 .../camel/dataformat/ocsf/model/Evidence__1.java   |  109 +
 .../camel/dataformat/ocsf/model/Extension.java     |  109 +
 .../camel/dataformat/ocsf/model/Feature.java       |  274 +++
 .../apache/camel/dataformat/ocsf/model/File.java   | 1795 ++++++++++++++
 .../camel/dataformat/ocsf/model/FileActivity.java  |  658 +++++
 .../camel/dataformat/ocsf/model/Finding.java       |  109 +
 .../camel/dataformat/ocsf/model/FindingInfo.java   | 1061 ++++++++
 .../camel/dataformat/ocsf/model/Fingerprint.java   |  274 +++
 .../camel/dataformat/ocsf/model/FtpActivity.java   |  974 ++++++++
 .../dataformat/ocsf/model/FunctionInvocation.java  |  109 +
 .../apache/camel/dataformat/ocsf/model/Group.java  |  408 ++++
 .../dataformat/ocsf/model/GroupManagement.java     |  654 +++++
 .../camel/dataformat/ocsf/model/HostedService.java |  109 +
 .../camel/dataformat/ocsf/model/HttpActivity.java  |  884 +++++++
 .../camel/dataformat/ocsf/model/HttpCooky.java     |  109 +
 .../camel/dataformat/ocsf/model/HttpHeader.java    |  230 ++
 .../camel/dataformat/ocsf/model/HttpRequest.java   |  685 ++++++
 .../camel/dataformat/ocsf/model/HttpResponse.java  |  496 ++++
 .../apache/camel/dataformat/ocsf/model/HwInfo.java |  109 +
 .../camel/dataformat/ocsf/model/HwInfo__1.java     |  109 +
 .../camel/dataformat/ocsf/model/HwInfo__2.java     |  109 +
 .../apache/camel/dataformat/ocsf/model/Idp.java    |  710 ++++++
 .../apache/camel/dataformat/ocsf/model/Image.java  |  408 ++++
 .../dataformat/ocsf/model/IncidentFinding.java     | 1176 +++++++++
 .../dataformat/ocsf/model/Ja4Fingerprint.java      |  450 ++++
 .../apache/camel/dataformat/ocsf/model/Job.java    |  109 +
 .../camel/dataformat/ocsf/model/KbArticle.java     |  737 ++++++
 .../apache/camel/dataformat/ocsf/model/Kernel.java |  109 +
 .../dataformat/ocsf/model/KernelActivity.java      |  376 +++
 .../ocsf/model/KernelExtensionActivity.java        |  376 +++
 .../camel/dataformat/ocsf/model/KeyboardInfo.java  |  109 +
 .../dataformat/ocsf/model/KillChainPhase.java      |  230 ++
 .../camel/dataformat/ocsf/model/LdapPerson.java    |  109 +
 .../camel/dataformat/ocsf/model/Location.java      |  936 +++++++
 .../apache/camel/dataformat/ocsf/model/Logger.java |  801 ++++++
 .../camel/dataformat/ocsf/model/Malware.java       |  628 +++++
 .../dataformat/ocsf/model/MalwareScanInfo.java     |  109 +
 .../dataformat/ocsf/model/MemoryActivity.java      |  571 +++++
 .../camel/dataformat/ocsf/model/Metadata.java      | 1521 ++++++++++++
 .../apache/camel/dataformat/ocsf/model/Metric.java |  109 +
 .../camel/dataformat/ocsf/model/Mitigation.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/Module.java |  474 ++++
 .../dataformat/ocsf/model/ModuleActivity.java      |  395 +++
 .../dataformat/ocsf/model/NetworkActivity.java     |  754 ++++++
 .../dataformat/ocsf/model/NetworkEndpoint.java     | 1348 ++++++++++
 .../dataformat/ocsf/model/NetworkFileActivity.java |  797 ++++++
 .../dataformat/ocsf/model/NetworkInterface.java    |  584 +++++
 .../camel/dataformat/ocsf/model/NtpActivity.java   |  887 +++++++
 .../camel/dataformat/ocsf/model/Observable.java    |  450 ++++
 .../camel/dataformat/ocsf/model/OcsfEvent.java     | 1296 ++++++++++
 .../camel/dataformat/ocsf/model/OpenPort.java      |  109 +
 .../camel/dataformat/ocsf/model/Organization.java  |  318 +++
 .../org/apache/camel/dataformat/ocsf/model/Os.java |  714 ++++++
 .../camel/dataformat/ocsf/model/Package.java       |  890 +++++++
 .../apache/camel/dataformat/ocsf/model/Policy.java |  494 ++++
 .../camel/dataformat/ocsf/model/Process.java       | 1177 +++++++++
 .../dataformat/ocsf/model/ProcessActivity.java     |  746 ++++++
 .../camel/dataformat/ocsf/model/Product.java       |  538 ++++
 .../ocsf/model/ProgrammaticCredential.java         |  109 +
 .../apache/camel/dataformat/ocsf/model/Proxy.java  |  109 +
 .../camel/dataformat/ocsf/model/ProxyEndpoint.java |  109 +
 .../camel/dataformat/ocsf/model/Proxy__1.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__2.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__3.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__4.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__5.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__6.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__7.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__8.java      |  109 +
 .../camel/dataformat/ocsf/model/Proxy__9.java      |  109 +
 .../camel/dataformat/ocsf/model/QueryInfo.java     |  109 +
 .../camel/dataformat/ocsf/model/RdpActivity.java   | 1125 +++++++++
 .../camel/dataformat/ocsf/model/RelatedEvent.java  |  109 +
 .../camel/dataformat/ocsf/model/Remediation.java   |  345 +++
 .../dataformat/ocsf/model/RemediationActivity.java |  440 ++++
 .../camel/dataformat/ocsf/model/Reporter.java      |  109 +
 .../camel/dataformat/ocsf/model/Reputation.java    |  318 +++
 .../camel/dataformat/ocsf/model/Request.java       |  320 +++
 .../dataformat/ocsf/model/ResourceDetails.java     | 1037 ++++++++
 .../ocsf/model/ResourceRelationship.java           |  109 +
 .../camel/dataformat/ocsf/model/Response.java      |  452 ++++
 .../apache/camel/dataformat/ocsf/model/Rule.java   |  406 ++++
 .../apache/camel/dataformat/ocsf/model/San.java    |  230 ++
 .../apache/camel/dataformat/ocsf/model/Scan.java   |  318 +++
 .../camel/dataformat/ocsf/model/ScanActivity.java  |  880 +++++++
 .../ocsf/model/ScheduledJobActivity.java           |  376 +++
 .../apache/camel/dataformat/ocsf/model/Scim.java   |  109 +
 .../dataformat/ocsf/model/SecurityFinding.java     | 1249 ++++++++++
 .../camel/dataformat/ocsf/model/ServerHassh.java   |  109 +
 .../camel/dataformat/ocsf/model/Service.java       |  364 +++
 .../camel/dataformat/ocsf/model/Session.java       |  714 ++++++
 .../camel/dataformat/ocsf/model/Signature.java     |  109 +
 .../camel/dataformat/ocsf/model/SmbActivity.java   | 1129 +++++++++
 .../camel/dataformat/ocsf/model/SshActivity.java   |  890 +++++++
 .../apache/camel/dataformat/ocsf/model/Sso.java    |  109 +
 .../camel/dataformat/ocsf/model/SubTechnique.java  |  274 +++
 .../apache/camel/dataformat/ocsf/model/Table.java  |  109 +
 .../apache/camel/dataformat/ocsf/model/Tactic.java |  274 +++
 .../apache/camel/dataformat/ocsf/model/Tag.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__1.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__2.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__3.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__4.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__5.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__6.java |  109 +
 .../apache/camel/dataformat/ocsf/model/Tag__7.java |  109 +
 .../camel/dataformat/ocsf/model/Technique.java     |  274 +++
 .../apache/camel/dataformat/ocsf/model/Ticket.java |  496 ++++
 .../apache/camel/dataformat/ocsf/model/Tls.java    |  802 ++++++
 .../camel/dataformat/ocsf/model/TlsExtension.java  |  109 +
 .../camel/dataformat/ocsf/model/Traffic.java       |  109 +
 .../camel/dataformat/ocsf/model/Traffic__1.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__2.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__3.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__4.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__5.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__6.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__7.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__8.java    |  109 +
 .../camel/dataformat/ocsf/model/Traffic__9.java    |  109 +
 .../apache/camel/dataformat/ocsf/model/Trait.java  |  109 +
 .../dataformat/ocsf/model/TransformationInfo.java  |  109 +
 .../camel/dataformat/ocsf/model/Unmapped.java      |  114 +
 .../apache/camel/dataformat/ocsf/model/Url.java    |  628 +++++
 .../apache/camel/dataformat/ocsf/model/User.java   | 1047 ++++++++
 .../camel/dataformat/ocsf/model/UserAccess.java    |  602 +++++
 .../dataformat/ocsf/model/VendorAttributes.java    |  230 ++
 .../camel/dataformat/ocsf/model/Vulnerability.java | 1324 ++++++++++
 .../ocsf/model/VulnerabilityFinding.java           |  682 ++++++
 .../camel/dataformat/ocsf/model/WebResource.java   |  109 +
 .../ocsf/model/WebResourcesActivity.java           |  569 +++++
 .../dataformat/ocsf/model/WebResourcesResult.java  |  109 +
 .../camel/dataformat/ocsf/model/Xattributes.java   |  109 +
 .../dataformat/ocsf/model/Xattributes__1.java      |  109 +
 .../org/apache/camel/dataformat/ocsf/ocsf.json     |   30 +
 .../org/apache/camel/configurer/ocsf-dataformat    |    2 +
 .../org/apache/camel/dataformat.properties         |    7 +
 .../services/org/apache/camel/dataformat/ocsf      |    2 +
 .../camel-ocsf/src/main/docs/ocsf-dataformat.adoc  |  258 ++
 .../camel/dataformat/ocsf/OcsfConstants.java       |   92 +
 .../camel/dataformat/ocsf/OcsfDataFormat.java      |  453 ++++
 .../src/main/resources/schema/Account.json         |   42 +
 .../src/main/resources/schema/AccountChange.json   |   65 +
 .../src/main/resources/schema/Actor.json           |   42 +
 .../src/main/resources/schema/Agent.json           |   46 +
 .../src/main/resources/schema/Analytic.json        |   58 +
 .../camel-ocsf/src/main/resources/schema/Api.json  |   31 +
 .../src/main/resources/schema/ApiActivity.json     |   55 +
 .../src/main/resources/schema/Attack.json          |   35 +
 .../src/main/resources/schema/AuthFactor.json      |   50 +
 .../src/main/resources/schema/Authentication.json  |  111 +
 .../src/main/resources/schema/Authorization.json   |   18 +
 .../main/resources/schema/AuthorizeSession.json    |   61 +
 .../src/main/resources/schema/Certificate.json     |   57 +
 .../src/main/resources/schema/Cloud.json           |   37 +
 .../src/main/resources/schema/Compliance.json      |   98 +
 .../main/resources/schema/ComplianceFinding.json   |   79 +
 .../src/main/resources/schema/Container.json       |   65 +
 .../camel-ocsf/src/main/resources/schema/Cve.json  |   73 +
 .../camel-ocsf/src/main/resources/schema/Cvss.json |   56 +
 .../camel-ocsf/src/main/resources/schema/Cwe.json  |   23 +
 .../main/resources/schema/DatastoreActivity.json   |   69 +
 .../main/resources/schema/DetectionFinding.json    |  131 +
 .../src/main/resources/schema/Device.json          |  245 ++
 .../src/main/resources/schema/DhcpActivity.json    |   89 +
 .../src/main/resources/schema/Display.json         |   31 +
 .../src/main/resources/schema/DnsActivity.json     |  101 +
 .../src/main/resources/schema/DnsQuery.json        |   35 +
 .../src/main/resources/schema/EmailActivity.json   |   89 +
 .../src/main/resources/schema/Endpoint.json        |   93 +
 .../src/main/resources/schema/Enrichment.json      |   58 +
 .../main/resources/schema/EntityManagement.json    |   65 +
 .../camel-ocsf/src/main/resources/schema/Epss.json |   27 +
 .../src/main/resources/schema/Extension.json       |   23 +
 .../src/main/resources/schema/Feature.json         |   23 +
 .../camel-ocsf/src/main/resources/schema/File.json |  168 ++
 .../src/main/resources/schema/FileActivity.json    |   62 +
 .../src/main/resources/schema/FindingInfo.json     |  124 +
 .../src/main/resources/schema/Fingerprint.json     |   24 +
 .../src/main/resources/schema/FtpActivity.json     |  109 +
 .../src/main/resources/schema/Group.json           |   38 +
 .../src/main/resources/schema/GroupManagement.json |   61 +
 .../src/main/resources/schema/HttpActivity.json    |   95 +
 .../src/main/resources/schema/HttpHeader.json      |   19 +
 .../src/main/resources/schema/HttpRequest.json     |   72 +
 .../src/main/resources/schema/HttpResponse.json    |   46 +
 .../camel-ocsf/src/main/resources/schema/Idp.json  |   69 +
 .../src/main/resources/schema/Image.json           |   42 +
 .../src/main/resources/schema/IncidentFinding.json |  119 +
 .../src/main/resources/schema/Ja4Fingerprint.json  |   39 +
 .../src/main/resources/schema/KbArticle.json       |   65 +
 .../src/main/resources/schema/KernelActivity.json  |   40 +
 .../resources/schema/KernelExtensionActivity.json  |   40 +
 .../src/main/resources/schema/KillChainPhase.json  |   19 +
 .../src/main/resources/schema/Location.json        |   86 +
 .../src/main/resources/schema/Logger.json          |   69 +
 .../src/main/resources/schema/Malware.json         |   92 +
 .../src/main/resources/schema/MemoryActivity.json  |   55 +
 .../src/main/resources/schema/Metadata.json        |  160 ++
 .../src/main/resources/schema/Module.json          |   42 +
 .../src/main/resources/schema/ModuleActivity.json  |   39 +
 .../src/main/resources/schema/NetworkActivity.json |   81 +
 .../src/main/resources/schema/NetworkEndpoint.json |  135 ++
 .../main/resources/schema/NetworkFileActivity.json |   84 +
 .../main/resources/schema/NetworkInterface.json    |   57 +
 .../src/main/resources/schema/NtpActivity.json     |   94 +
 .../src/main/resources/schema/Observable.json      |   38 +
 .../src/main/resources/schema/OcsfEvent.json       |  140 ++
 .../src/main/resources/schema/Organization.json    |   27 +
 .../camel-ocsf/src/main/resources/schema/Os.json   |   63 +
 .../src/main/resources/schema/Package.json         |   78 +
 .../src/main/resources/schema/Policy.json          |   50 +
 .../src/main/resources/schema/Process.json         |  122 +
 .../src/main/resources/schema/ProcessActivity.json |   70 +
 .../src/main/resources/schema/Product.json         |   46 +
 .../src/main/resources/schema/RdpActivity.json     |  118 +
 .../src/main/resources/schema/Remediation.json     |   44 +
 .../main/resources/schema/RemediationActivity.json |   48 +
 .../src/main/resources/schema/Reputation.json      |   27 +
 .../src/main/resources/schema/Request.json         |   41 +
 .../src/main/resources/schema/ResourceDetails.json |  112 +
 .../src/main/resources/schema/Response.json        |   53 +
 .../camel-ocsf/src/main/resources/schema/Rule.json |   35 +
 .../camel-ocsf/src/main/resources/schema/San.json  |   19 +
 .../camel-ocsf/src/main/resources/schema/Scan.json |   27 +
 .../src/main/resources/schema/ScanActivity.json    |   84 +
 .../resources/schema/ScheduledJobActivity.json     |   40 +
 .../src/main/resources/schema/SecurityFinding.json |  156 ++
 .../src/main/resources/schema/Service.json         |   38 +
 .../src/main/resources/schema/Session.json         |   64 +
 .../src/main/resources/schema/SmbActivity.json     |  119 +
 .../src/main/resources/schema/SshActivity.json     |   97 +
 .../src/main/resources/schema/SubTechnique.json    |   23 +
 .../src/main/resources/schema/Tactic.json          |   23 +
 .../src/main/resources/schema/Technique.json       |   23 +
 .../src/main/resources/schema/Ticket.json          |   46 +
 .../camel-ocsf/src/main/resources/schema/Tls.json  |   88 +
 .../camel-ocsf/src/main/resources/schema/Url.json  |  152 ++
 .../camel-ocsf/src/main/resources/schema/User.json |  102 +
 .../src/main/resources/schema/UserAccess.json      |   62 +
 .../main/resources/schema/VendorAttributes.json    |   19 +
 .../src/main/resources/schema/Vulnerability.json   |  143 ++
 .../resources/schema/VulnerabilityFinding.json     |   72 +
 .../resources/schema/WebResourcesActivity.json     |   61 +
 .../src/main/script/generate-ocsf-schemas.py       |  678 ++++++
 .../camel/dataformat/ocsf/OcsfDataFormatTest.java  |  203 ++
 .../dataformat/ocsf/OcsfEventExampleTest.java      |  308 +++
 .../src/test/resources/log4j2.properties           |   28 +
 .../resources/ocsf-detection-finding-example.json  |  168 ++
 components/pom.xml                                 |    1 +
 .../org/apache/camel/model/dataformat/ocsf.json    |   27 +
 .../services/org/apache/camel/model.properties     |    1 +
 .../org/apache/camel/model/dataformat/jaxb.index   |    1 +
 .../camel/builder/DataFormatBuilderFactory.java    |    8 +
 .../org/apache/camel/builder/DataFormatClause.java |   19 +
 .../camel/model/dataformat/OcsfDataFormat.java     |  414 ++++
 .../reifier/dataformat/DataFormatReifier.java      |    2 +
 .../reifier/dataformat/OcsfDataFormatReifier.java  |   43 +
 .../org/apache/camel/main/dataformats.properties   |    1 +
 .../java/org/apache/camel/xml/in/ModelParser.java  |   15 +
 .../java/org/apache/camel/xml/out/ModelWriter.java |   17 +
 .../org/apache/camel/yaml/out/ModelWriter.java     |   17 +
 .../modules/dataformats/examples/json/ocsf.json    |    1 +
 docs/components/modules/dataformats/nav.adoc       |    1 +
 .../modules/dataformats/pages/ocsf-dataformat.adoc |    1 +
 .../dsl/yaml/deserializers/ModelDeserializers.java |   94 +
 .../deserializers/ModelDeserializersResolver.java  |    2 +
 .../generated/resources/schema/camelYamlDsl.json   |   62 +
 parent/pom.xml                                     |    5 +
 361 files changed, 91649 insertions(+)

diff --git a/bom/camel-bom/pom.xml b/bom/camel-bom/pom.xml
index 2c4a3edcd3c8..ef796794bedb 100644
--- a/bom/camel-bom/pom.xml
+++ b/bom/camel-bom/pom.xml
@@ -1702,6 +1702,11 @@
         <artifactId>camel-observation</artifactId>
         <version>4.18.0-SNAPSHOT</version>
       </dependency>
+      <dependency>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>camel-ocsf</artifactId>
+        <version>4.18.0-SNAPSHOT</version>
+      </dependency>
       <dependency>
         <groupId>org.apache.camel</groupId>
         <artifactId>camel-ognl</artifactId>
diff --git a/catalog/camel-allcomponents/pom.xml b/catalog/camel-allcomponents/pom.xml
index d6b44a79065b..83fff97272da 100644
--- a/catalog/camel-allcomponents/pom.xml
+++ b/catalog/camel-allcomponents/pom.xml
@@ -1502,6 +1502,11 @@
             <artifactId>camel-observation</artifactId>
             <version>${project.version}</version>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-ocsf</artifactId>
+            <version>${project.version}</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-ognl</artifactId>
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats.properties
index 95f2e595b066..ba3381db70dd 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats.properties
@@ -30,6 +30,7 @@ jsonApi
 jsonb
 lzf
 mimeMultipart
+ocsf
 parquetAvro
 pgp
 pqc
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/ocsf.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/ocsf.json
new file mode 100644
index 000000000000..7c6f91004514
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/dataformats/ocsf.json
@@ -0,0 +1,30 @@
+{
+  "dataformat": {
+    "kind": "dataformat",
+    "name": "ocsf",
+    "title": "OCSF",
+    "description": "Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to\/from JSON.",
+    "deprecated": false,
+    "firstVersion": "4.18.0",
+    "label": "dataformat,transformation,json,security",
+    "javaType": "org.apache.camel.dataformat.ocsf.OcsfDataFormat",
+    "supportLevel": "Preview",
+    "groupId": "org.apache.camel",
+    "artifactId": "camel-ocsf",
+    "version": "4.18.0-SNAPSHOT",
+    "modelName": "ocsf",
+    "modelJavaType": "org.apache.camel.model.dataformat.OcsfDataFormat"
+  },
+  "properties": {
+    "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" },
+    "objectMapper": { "index": 1, "kind": "attribute", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Lookup and use the existing ObjectMapper with the given id when using Jackson." },
+    "useDefaultObjectMapper": { "index": 2, "kind": "attribute", "displayName": "Use Default Object Mapper", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to lookup and use default Jackson ObjectMapper from the registry." },
+    "unmarshalType": { "index": 3, "kind": "attribute", "displayName": "Unmarshal Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Class name of the OCSF event type to use when unmarshalling. Defaults to OcsfEvent." },
+    "collectionType": { "index": 4, "kind": "attribute", "displayName": "Collection Type", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default." },
+    "useList": { "index": 5, "kind": "attribute", "displayName": "Use List", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To unmarshal to a List of OCSF events." },
+    "allowUnmarshallType": { "index": 6, "kind": "attribute", "displayName": "Allow Unmarshall Type", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled then the unmarshal type can be specified via the CamelOcsfUnmarshalType header. This should only be enabled when desired to be used." },
+    "prettyPrint": { "index": 7, "kind": "attribute", "displayName": "Pretty Print", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To enable pretty printing output nicely formatted. Is by default false." },
+    "enableFeatures": { "index": 8, "kind": "attribute", "displayName": "Enable Features", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.Deserializatio [...]
+    "disableFeatures": { "index": 9, "kind": "attribute", "displayName": "Disable Features", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.Deserializa [...]
+  }
+}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
index 0b18bc571da9..a7d37b28f16d 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models.properties
@@ -112,6 +112,7 @@ mutualTLS
 mvel
 noErrorHandler
 oauth2
+ocsf
 ognl
 onCompletion
 onException
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/ocsf.json b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/ocsf.json
new file mode 100644
index 000000000000..51e0dcdc6397
--- /dev/null
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/models/ocsf.json
@@ -0,0 +1,27 @@
+{
+  "model": {
+    "kind": "model",
+    "name": "ocsf",
+    "title": "OCSF",
+    "description": "Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to\/from JSON.",
+    "deprecated": false,
+    "firstVersion": "4.18.0",
+    "label": "dataformat,transformation,json,security",
+    "javaType": "org.apache.camel.model.dataformat.OcsfDataFormat",
+    "abstract": false,
+    "input": false,
+    "output": false
+  },
+  "properties": {
+    "id": { "index": 0, "kind": "attribute", "displayName": "Id", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "The id of this node" },
+    "objectMapper": { "index": 1, "kind": "attribute", "displayName": "Object Mapper", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Lookup and use the existing ObjectMapper with the given id when using Jackson." },
+    "useDefaultObjectMapper": { "index": 2, "kind": "attribute", "displayName": "Use Default Object Mapper", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": true, "description": "Whether to lookup and use default Jackson ObjectMapper from the registry." },
+    "unmarshalType": { "index": 3, "kind": "attribute", "displayName": "Unmarshal Type", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Class name of the OCSF event type to use when unmarshalling. Defaults to OcsfEvent." },
+    "collectionType": { "index": 4, "kind": "attribute", "displayName": "Collection Type", "group": "advanced", "label": "advanced", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to use different collection types than java.util.Collection based as default." },
+    "useList": { "index": 5, "kind": "attribute", "displayName": "Use List", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To unmarshal to a List of OCSF events." },
+    "allowUnmarshallType": { "index": 6, "kind": "attribute", "displayName": "Allow Unmarshall Type", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "If enabled then the unmarshal type can be specified via the CamelOcsfUnmarshalType header. This should only be enabled when desired to be used." },
+    "prettyPrint": { "index": 7, "kind": "attribute", "displayName": "Pretty Print", "group": "common", "required": false, "type": "boolean", "javaType": "java.lang.Boolean", "deprecated": false, "autowired": false, "secret": false, "defaultValue": false, "description": "To enable pretty printing output nicely formatted. Is by default false." },
+    "enableFeatures": { "index": 8, "kind": "attribute", "displayName": "Enable Features", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.Deserializatio [...]
+    "disableFeatures": { "index": 9, "kind": "attribute", "displayName": "Disable Features", "group": "common", "required": false, "type": "string", "javaType": "java.lang.String", "deprecated": false, "autowired": false, "secret": false, "description": "Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that matches a enum from com.fasterxml.jackson.databind.SerializationFeature, com.fasterxml.jackson.databind.Deserializa [...]
+  }
+}
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
index dd4276567137..32dd64d4f969 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-spring.xsd
@@ -1120,6 +1120,15 @@ To not use an error handler.
       <xs:documentation xml:lang="en">
 <![CDATA[
 Rest security OAuth2 definition
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ocsf" type="tns:ocsfDataFormat">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to/from JSON.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -17264,6 +17273,102 @@ Set a reference to a custom Expression to use.
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
+  <xs:complexType name="ocsfDataFormat">
+    <xs:complexContent>
+      <xs:extension base="tns:dataFormat">
+        <xs:sequence/>
+        <xs:attribute name="objectMapper" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Lookup and use the existing ObjectMapper with the given id when using Jackson.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useDefaultObjectMapper" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to lookup and use default Jackson ObjectMapper from the registry. Default value: true
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="unmarshalType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Class name of the OCSF event type to use when unmarshalling. Defaults to OcsfEvent.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="collectionType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to
+use different collection types than java.util.Collection based as default.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useList" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+To unmarshal to a List of OCSF events. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="allowUnmarshallType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+If enabled then the unmarshal type can be specified via the CamelOcsfUnmarshalType header. This should only be enabled
+when desired to be used. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="prettyPrint" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+To enable pretty printing output nicely formatted. Is by default false. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="enableFeatures" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that
+matches a enum from com.fasterxml.jackson.databind.SerializationFeature,
+com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features
+can be separated by comma.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="disableFeatures" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name
+that matches a enum from com.fasterxml.jackson.databind.SerializationFeature,
+com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features
+can be separated by comma.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
   <xs:complexType name="pqcDataFormat">
     <xs:complexContent>
       <xs:extension base="tns:dataFormat">
diff --git a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
index 76d1debb63ff..ffc63b3223c5 100644
--- a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
+++ b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/schemas/camel-xml-io.xsd
@@ -1057,6 +1057,15 @@ To not use an error handler.
       <xs:documentation xml:lang="en">
 <![CDATA[
 Rest security OAuth2 definition
+]]>
+      </xs:documentation>
+    </xs:annotation>
+  </xs:element>
+  <xs:element name="ocsf" type="tns:ocsfDataFormat">
+    <xs:annotation>
+      <xs:documentation xml:lang="en">
+<![CDATA[
+Marshal and unmarshal OCSF (Open Cybersecurity Schema Framework) security events to/from JSON.
 ]]>
       </xs:documentation>
     </xs:annotation>
@@ -15958,6 +15967,102 @@ Set a reference to a custom Expression to use.
       </xs:choice>
     </xs:sequence>
   </xs:complexType>
+  <xs:complexType name="ocsfDataFormat">
+    <xs:complexContent>
+      <xs:extension base="tns:dataFormat">
+        <xs:sequence/>
+        <xs:attribute name="objectMapper" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Lookup and use the existing ObjectMapper with the given id when using Jackson.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useDefaultObjectMapper" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Whether to lookup and use default Jackson ObjectMapper from the registry. Default value: true
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="unmarshalType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Class name of the OCSF event type to use when unmarshalling. Defaults to OcsfEvent.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="collectionType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Refers to a custom collection type to lookup in the registry to use. This option should rarely be used, but allows to
+use different collection types than java.util.Collection based as default.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="useList" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+To unmarshal to a List of OCSF events. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="allowUnmarshallType" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+If enabled then the unmarshal type can be specified via the CamelOcsfUnmarshalType header. This should only be enabled
+when desired to be used. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="prettyPrint" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+To enable pretty printing output nicely formatted. Is by default false. Default value: false
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="enableFeatures" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set of features to enable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name that
+matches a enum from com.fasterxml.jackson.databind.SerializationFeature,
+com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features
+can be separated by comma.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+        <xs:attribute name="disableFeatures" type="xs:string">
+          <xs:annotation>
+            <xs:documentation xml:lang="en">
+<![CDATA[
+Set of features to disable on the Jackson com.fasterxml.jackson.databind.ObjectMapper. The features should be a name
+that matches a enum from com.fasterxml.jackson.databind.SerializationFeature,
+com.fasterxml.jackson.databind.DeserializationFeature, or com.fasterxml.jackson.databind.MapperFeature Multiple features
+can be separated by comma.
+]]>
+            </xs:documentation>
+          </xs:annotation>
+        </xs:attribute>
+      </xs:extension>
+    </xs:complexContent>
+  </xs:complexType>
   <xs:complexType name="pqcDataFormat">
     <xs:complexContent>
       <xs:extension base="tns:dataFormat">
diff --git a/components/camel-ocsf/pom.xml b/components/camel-ocsf/pom.xml
new file mode 100644
index 000000000000..2263e9054d27
--- /dev/null
+++ b/components/camel-ocsf/pom.xml
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <artifactId>components</artifactId>
+        <groupId>org.apache.camel</groupId>
+        <version>4.18.0-SNAPSHOT</version>
+    </parent>
+
+    <artifactId>camel-ocsf</artifactId>
+    <packaging>jar</packaging>
+    <name>Camel :: OCSF</name>
+    <description>Camel OCSF (Open Cybersecurity Schema Framework) DataFormat</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-support</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-annotations</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>com.fasterxml.jackson.core</groupId>
+            <artifactId>jackson-databind</artifactId>
+        </dependency>
+
+        <!-- testing -->
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-test-junit5</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.junit.jupiter</groupId>
+            <artifactId>junit-jupiter</artifactId>
+            <scope>test</scope>
+        </dependency>
+        <dependency>
+            <groupId>org.assertj</groupId>
+            <artifactId>assertj-core</artifactId>
+            <version>${assertj-version}</version>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <!-- Exclude Python script from license check (it has its own header) -->
+	<!--<plugin>
+                <groupId>com.mycila</groupId>
+                <artifactId>license-maven-plugin</artifactId>
+                <configuration>
+                    <excludes combine.children="append">
+                        <exclude>src/main/script/**</exclude>
+                    </excludes>
+                </configuration>
+	</plugin>-->
+        </plugins>
+    </build>
+
+    <profiles>
+        <!-- Profile to regenerate OCSF model classes from JSON schemas -->
+        <!-- Usage: mvn generate-sources -Pgenerate-ocsf-model -->
+        <profile>
+            <id>generate-ocsf-model</id>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.jsonschema2pojo</groupId>
+                        <artifactId>jsonschema2pojo-maven-plugin</artifactId>
+                        <version>1.2.2</version>
+                        <configuration>
+                            <sourceDirectory>${basedir}/src/main/resources/schema</sourceDirectory>
+                            <targetPackage>org.apache.camel.dataformat.ocsf.model</targetPackage>
+                            <outputDirectory>${basedir}/src/generated/java</outputDirectory>
+                            <generateBuilders>true</generateBuilders>
+                            <includeAdditionalProperties>true</includeAdditionalProperties>
+                            <includeConstructors>true</includeConstructors>
+                            <includeHashcodeAndEquals>true</includeHashcodeAndEquals>
+                            <includeToString>true</includeToString>
+                            <useTitleAsClassname>true</useTitleAsClassname>
+                            <useInnerClassBuilders>true</useInnerClassBuilders>
+                            <initializeCollections>true</initializeCollections>
+                            <annotationStyle>jackson2</annotationStyle>
+                            <inclusionLevel>NON_NULL</inclusionLevel>
+                            <dateTimeType>java.time.Instant</dateTimeType>
+                        </configuration>
+                        <executions>
+                            <execution>
+                                <goals>
+                                    <goal>generate</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java
new file mode 100644
index 000000000000..1d3cb9bc7baa
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/OcsfDataFormatConfigurer.java
@@ -0,0 +1,119 @@
+/* Generated by camel build tools - do NOT edit this file! */
+package org.apache.camel.dataformat.ocsf;
+
+import javax.annotation.processing.Generated;
+import java.util.Map;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
+import org.apache.camel.spi.PropertyConfigurerGetter;
+import org.apache.camel.spi.ConfigurerStrategy;
+import org.apache.camel.spi.GeneratedPropertyConfigurer;
+import org.apache.camel.util.CaseInsensitiveMap;
+import org.apache.camel.support.component.PropertyConfigurerSupport;
+
+/**
+ * Generated by camel build tools - do NOT edit this file!
+ */
+@Generated("org.apache.camel.maven.packaging.PackageDataFormatMojo")
+@SuppressWarnings("unchecked")
+public class OcsfDataFormatConfigurer extends org.apache.camel.support.component.PropertyConfigurerSupport implements GeneratedPropertyConfigurer, ExtendedPropertyConfigurerGetter {
+
+    private static final Map<String, Object> ALL_OPTIONS;
+    static {
+        Map<String, Object> map = new CaseInsensitiveMap();
+        map.put("AllowUnmarshallType", boolean.class);
+        map.put("CollectionType", java.lang.Class.class);
+        map.put("DisableFeatures", java.lang.String.class);
+        map.put("EnableFeatures", java.lang.String.class);
+        map.put("ObjectMapper", com.fasterxml.jackson.databind.ObjectMapper.class);
+        map.put("PrettyPrint", boolean.class);
+        map.put("UnmarshalType", java.lang.Class.class);
+        map.put("UseDefaultObjectMapper", boolean.class);
+        map.put("UseList", boolean.class);
+        ALL_OPTIONS = map;
+    }
+
+    @Override
+    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
+        OcsfDataFormat target = (OcsfDataFormat) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowunmarshalltype":
+        case "allowUnmarshallType": target.setAllowUnmarshallType(property(camelContext, boolean.class, value)); return true;
+        case "collectiontype":
+        case "collectionType": target.setCollectionType(property(camelContext, java.lang.Class.class, value)); return true;
+        case "disablefeatures":
+        case "disableFeatures": target.setDisableFeatures(property(camelContext, java.lang.String.class, value)); return true;
+        case "enablefeatures":
+        case "enableFeatures": target.setEnableFeatures(property(camelContext, java.lang.String.class, value)); return true;
+        case "objectmapper":
+        case "objectMapper": target.setObjectMapper(property(camelContext, com.fasterxml.jackson.databind.ObjectMapper.class, value)); return true;
+        case "prettyprint":
+        case "prettyPrint": target.setPrettyPrint(property(camelContext, boolean.class, value)); return true;
+        case "unmarshaltype":
+        case "unmarshalType": target.setUnmarshalType(property(camelContext, java.lang.Class.class, value)); return true;
+        case "usedefaultobjectmapper":
+        case "useDefaultObjectMapper": target.setUseDefaultObjectMapper(property(camelContext, boolean.class, value)); return true;
+        case "uselist":
+        case "useList": target.setUseList(property(camelContext, boolean.class, value)); return true;
+        default: return false;
+        }
+    }
+
+    @Override
+    public Map<String, Object> getAllOptions(Object target) {
+        return ALL_OPTIONS;
+    }
+
+    @Override
+    public Class<?> getOptionType(String name, boolean ignoreCase) {
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowunmarshalltype":
+        case "allowUnmarshallType": return boolean.class;
+        case "collectiontype":
+        case "collectionType": return java.lang.Class.class;
+        case "disablefeatures":
+        case "disableFeatures": return java.lang.String.class;
+        case "enablefeatures":
+        case "enableFeatures": return java.lang.String.class;
+        case "objectmapper":
+        case "objectMapper": return com.fasterxml.jackson.databind.ObjectMapper.class;
+        case "prettyprint":
+        case "prettyPrint": return boolean.class;
+        case "unmarshaltype":
+        case "unmarshalType": return java.lang.Class.class;
+        case "usedefaultobjectmapper":
+        case "useDefaultObjectMapper": return boolean.class;
+        case "uselist":
+        case "useList": return boolean.class;
+        default: return null;
+        }
+    }
+
+    @Override
+    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
+        OcsfDataFormat target = (OcsfDataFormat) obj;
+        switch (ignoreCase ? name.toLowerCase() : name) {
+        case "allowunmarshalltype":
+        case "allowUnmarshallType": return target.isAllowUnmarshallType();
+        case "collectiontype":
+        case "collectionType": return target.getCollectionType();
+        case "disablefeatures":
+        case "disableFeatures": return target.getDisableFeatures();
+        case "enablefeatures":
+        case "enableFeatures": return target.getEnableFeatures();
+        case "objectmapper":
+        case "objectMapper": return target.getObjectMapper();
+        case "prettyprint":
+        case "prettyPrint": return target.isPrettyPrint();
+        case "unmarshaltype":
+        case "unmarshalType": return target.getUnmarshalType();
+        case "usedefaultobjectmapper":
+        case "useDefaultObjectMapper": return target.isUseDefaultObjectMapper();
+        case "uselist":
+        case "useList": return target.isUseList();
+        default: return null;
+        }
+    }
+}
+
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Account.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Account.java
new file mode 100644
index 000000000000..d898c76aa589
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Account.java
@@ -0,0 +1,408 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Account
+ * <p>
+ * The Account object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "type",
+    "uid",
+    "labels",
+    "tags",
+    "type_id"
+})
+@Generated("jsonschema2pojo")
+public class Account {
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    private String name;
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    private String type;
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    private String uid;
+    /**
+     * Labels
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("labels")
+    private List<String> labels = new ArrayList<String>();
+    /**
+     * Tags
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("tags")
+    private List<Tag> tags = new ArrayList<Tag>();
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    private Integer typeId;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Account() {
+    }
+
+    /**
+     * 
+     * @param uid
+     *     Unique ID.
+     * @param name
+     *     Name.
+     * @param typeId
+     *     Type ID.
+     * @param type
+     *     Type.
+     * @param labels
+     *     Labels.
+     * @param tags
+     *     Tags.
+     */
+    public Account(String name, String type, String uid, List<String> labels, List<Tag> tags, Integer typeId) {
+        super();
+        this.name = name;
+        this.type = type;
+        this.uid = uid;
+        this.labels = labels;
+        this.tags = tags;
+        this.typeId = typeId;
+    }
+
+    public static Account.AccountBuilderBase builder() {
+        return new Account.AccountBuilder();
+    }
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public String getUid() {
+        return uid;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    /**
+     * Labels
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("labels")
+    public List<String> getLabels() {
+        return labels;
+    }
+
+    /**
+     * Labels
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("labels")
+    public void setLabels(List<String> labels) {
+        this.labels = labels;
+    }
+
+    /**
+     * Tags
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("tags")
+    public List<Tag> getTags() {
+        return tags;
+    }
+
+    /**
+     * Tags
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("tags")
+    public void setTags(List<Tag> tags) {
+        this.tags = tags;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public Integer getTypeId() {
+        return typeId;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public void setTypeId(Integer typeId) {
+        this.typeId = typeId;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Account.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("name");
+        sb.append('=');
+        sb.append(((this.name == null)?"<null>":this.name));
+        sb.append(',');
+        sb.append("type");
+        sb.append('=');
+        sb.append(((this.type == null)?"<null>":this.type));
+        sb.append(',');
+        sb.append("uid");
+        sb.append('=');
+        sb.append(((this.uid == null)?"<null>":this.uid));
+        sb.append(',');
+        sb.append("labels");
+        sb.append('=');
+        sb.append(((this.labels == null)?"<null>":this.labels));
+        sb.append(',');
+        sb.append("tags");
+        sb.append('=');
+        sb.append(((this.tags == null)?"<null>":this.tags));
+        sb.append(',');
+        sb.append("typeId");
+        sb.append('=');
+        sb.append(((this.typeId == null)?"<null>":this.typeId));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.uid == null)? 0 :this.uid.hashCode()));
+        result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
+        result = ((result* 31)+((this.typeId == null)? 0 :this.typeId.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode()));
+        result = ((result* 31)+((this.labels == null)? 0 :this.labels.hashCode()));
+        result = ((result* 31)+((this.tags == null)? 0 :this.tags.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Account) == false) {
+            return false;
+        }
+        Account rhs = ((Account) other);
+        return ((((((((this.uid == rhs.uid)||((this.uid!= null)&&this.uid.equals(rhs.uid)))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.typeId == rhs.typeId)||((this.typeId!= null)&&this.typeId.equals(rhs.typeId))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type))) [...]
+    }
+
+    public static class AccountBuilder
+        extends Account.AccountBuilderBase<Account>
+    {
+
+
+        public AccountBuilder() {
+            super();
+        }
+
+        public AccountBuilder(String name, String type, String uid, List<String> labels, List<Tag> tags, Integer typeId) {
+            super(name, type, uid, labels, tags, typeId);
+        }
+
+    }
+
+    public static abstract class AccountBuilderBase<T extends Account >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AccountBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Account.AccountBuilder.class)) {
+                this.instance = ((T) new Account());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AccountBuilderBase(String name, String type, String uid, List<String> labels, List<Tag> tags, Integer typeId) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Account.AccountBuilder.class)) {
+                this.instance = ((T) new Account(name, type, uid, labels, tags, typeId));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Account.AccountBuilderBase withName(String name) {
+            ((Account) this.instance).name = name;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withType(String type) {
+            ((Account) this.instance).type = type;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withUid(String uid) {
+            ((Account) this.instance).uid = uid;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withLabels(List<String> labels) {
+            ((Account) this.instance).labels = labels;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withTags(List<Tag> tags) {
+            ((Account) this.instance).tags = tags;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withTypeId(Integer typeId) {
+            ((Account) this.instance).typeId = typeId;
+            return this;
+        }
+
+        public Account.AccountBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Account) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AccountChange.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AccountChange.java
new file mode 100644
index 000000000000..8429151d5417
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AccountChange.java
@@ -0,0 +1,635 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * AccountChange
+ * <p>
+ * AccountChange event class.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "actor",
+    "raw_data_size",
+    "http_response",
+    "policies",
+    "enrichments",
+    "http_request",
+    "src_endpoint",
+    "user",
+    "auth_factors",
+    "user_result",
+    "raw_data_hash",
+    "policy"
+})
+@Generated("jsonschema2pojo")
+public class AccountChange {
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    @JsonPropertyDescription("The Actor object.")
+    private Actor actor;
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    private Integer rawDataSize;
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    @JsonPropertyDescription("The HTTP Response object.")
+    private HttpResponse httpResponse;
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    @JsonPropertyDescription("")
+    private List<Policy> policies = new ArrayList<Policy>();
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    @JsonPropertyDescription("")
+    private List<Enrichment> enrichments = new ArrayList<Enrichment>();
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    @JsonPropertyDescription("The HTTP Request object.")
+    private HttpRequest httpRequest;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint srcEndpoint;
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    @JsonPropertyDescription("The User object.")
+    private User user;
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    @JsonPropertyDescription("")
+    private List<AuthFactor> authFactors = new ArrayList<AuthFactor>();
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user_result")
+    @JsonPropertyDescription("The User object.")
+    private User userResult;
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    @JsonPropertyDescription("The Fingerprint object.")
+    private Fingerprint rawDataHash;
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    @JsonPropertyDescription("The Policy object.")
+    private Policy policy;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public AccountChange() {
+    }
+
+    /**
+     * 
+     * @param rawDataSize
+     *     Raw Data Size.
+     */
+    public AccountChange(Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Policy> policies, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, User user, List<AuthFactor> authFactors, User userResult, Fingerprint rawDataHash, Policy policy) {
+        super();
+        this.actor = actor;
+        this.rawDataSize = rawDataSize;
+        this.httpResponse = httpResponse;
+        this.policies = policies;
+        this.enrichments = enrichments;
+        this.httpRequest = httpRequest;
+        this.srcEndpoint = srcEndpoint;
+        this.user = user;
+        this.authFactors = authFactors;
+        this.userResult = userResult;
+        this.rawDataHash = rawDataHash;
+        this.policy = policy;
+    }
+
+    public static AccountChange.AccountChangeBuilderBase builder() {
+        return new AccountChange.AccountChangeBuilder();
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public Actor getActor() {
+        return actor;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public void setActor(Actor actor) {
+        this.actor = actor;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public Integer getRawDataSize() {
+        return rawDataSize;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public void setRawDataSize(Integer rawDataSize) {
+        this.rawDataSize = rawDataSize;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public HttpResponse getHttpResponse() {
+        return httpResponse;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public void setHttpResponse(HttpResponse httpResponse) {
+        this.httpResponse = httpResponse;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    public List<Policy> getPolicies() {
+        return policies;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    public void setPolicies(List<Policy> policies) {
+        this.policies = policies;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public List<Enrichment> getEnrichments() {
+        return enrichments;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public void setEnrichments(List<Enrichment> enrichments) {
+        this.enrichments = enrichments;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public HttpRequest getHttpRequest() {
+        return httpRequest;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public void setHttpRequest(HttpRequest httpRequest) {
+        this.httpRequest = httpRequest;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public NetworkEndpoint getSrcEndpoint() {
+        return srcEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public void setSrcEndpoint(NetworkEndpoint srcEndpoint) {
+        this.srcEndpoint = srcEndpoint;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public User getUser() {
+        return user;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    public List<AuthFactor> getAuthFactors() {
+        return authFactors;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    public void setAuthFactors(List<AuthFactor> authFactors) {
+        this.authFactors = authFactors;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user_result")
+    public User getUserResult() {
+        return userResult;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user_result")
+    public void setUserResult(User userResult) {
+        this.userResult = userResult;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public Fingerprint getRawDataHash() {
+        return rawDataHash;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public void setRawDataHash(Fingerprint rawDataHash) {
+        this.rawDataHash = rawDataHash;
+    }
+
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    public Policy getPolicy() {
+        return policy;
+    }
+
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    public void setPolicy(Policy policy) {
+        this.policy = policy;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AccountChange.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("actor");
+        sb.append('=');
+        sb.append(((this.actor == null)?"<null>":this.actor));
+        sb.append(',');
+        sb.append("rawDataSize");
+        sb.append('=');
+        sb.append(((this.rawDataSize == null)?"<null>":this.rawDataSize));
+        sb.append(',');
+        sb.append("httpResponse");
+        sb.append('=');
+        sb.append(((this.httpResponse == null)?"<null>":this.httpResponse));
+        sb.append(',');
+        sb.append("policies");
+        sb.append('=');
+        sb.append(((this.policies == null)?"<null>":this.policies));
+        sb.append(',');
+        sb.append("enrichments");
+        sb.append('=');
+        sb.append(((this.enrichments == null)?"<null>":this.enrichments));
+        sb.append(',');
+        sb.append("httpRequest");
+        sb.append('=');
+        sb.append(((this.httpRequest == null)?"<null>":this.httpRequest));
+        sb.append(',');
+        sb.append("srcEndpoint");
+        sb.append('=');
+        sb.append(((this.srcEndpoint == null)?"<null>":this.srcEndpoint));
+        sb.append(',');
+        sb.append("user");
+        sb.append('=');
+        sb.append(((this.user == null)?"<null>":this.user));
+        sb.append(',');
+        sb.append("authFactors");
+        sb.append('=');
+        sb.append(((this.authFactors == null)?"<null>":this.authFactors));
+        sb.append(',');
+        sb.append("userResult");
+        sb.append('=');
+        sb.append(((this.userResult == null)?"<null>":this.userResult));
+        sb.append(',');
+        sb.append("rawDataHash");
+        sb.append('=');
+        sb.append(((this.rawDataHash == null)?"<null>":this.rawDataHash));
+        sb.append(',');
+        sb.append("policy");
+        sb.append('=');
+        sb.append(((this.policy == null)?"<null>":this.policy));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.rawDataSize == null)? 0 :this.rawDataSize.hashCode()));
+        result = ((result* 31)+((this.authFactors == null)? 0 :this.authFactors.hashCode()));
+        result = ((result* 31)+((this.policies == null)? 0 :this.policies.hashCode()));
+        result = ((result* 31)+((this.actor == null)? 0 :this.actor.hashCode()));
+        result = ((result* 31)+((this.srcEndpoint == null)? 0 :this.srcEndpoint.hashCode()));
+        result = ((result* 31)+((this.rawDataHash == null)? 0 :this.rawDataHash.hashCode()));
+        result = ((result* 31)+((this.userResult == null)? 0 :this.userResult.hashCode()));
+        result = ((result* 31)+((this.httpRequest == null)? 0 :this.httpRequest.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.httpResponse == null)? 0 :this.httpResponse.hashCode()));
+        result = ((result* 31)+((this.user == null)? 0 :this.user.hashCode()));
+        result = ((result* 31)+((this.enrichments == null)? 0 :this.enrichments.hashCode()));
+        result = ((result* 31)+((this.policy == null)? 0 :this.policy.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AccountChange) == false) {
+            return false;
+        }
+        AccountChange rhs = ((AccountChange) other);
+        return ((((((((((((((this.rawDataSize == rhs.rawDataSize)||((this.rawDataSize!= null)&&this.rawDataSize.equals(rhs.rawDataSize)))&&((this.authFactors == rhs.authFactors)||((this.authFactors!= null)&&this.authFactors.equals(rhs.authFactors))))&&((this.policies == rhs.policies)||((this.policies!= null)&&this.policies.equals(rhs.policies))))&&((this.actor == rhs.actor)||((this.actor!= null)&&this.actor.equals(rhs.actor))))&&((this.srcEndpoint == rhs.srcEndpoint)||((this.srcEndpoint! [...]
+    }
+
+    public static class AccountChangeBuilder
+        extends AccountChange.AccountChangeBuilderBase<AccountChange>
+    {
+
+
+        public AccountChangeBuilder() {
+            super();
+        }
+
+        public AccountChangeBuilder(Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Policy> policies, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, User user, List<AuthFactor> authFactors, User userResult, Fingerprint rawDataHash, Policy policy) {
+            super(actor, rawDataSize, httpResponse, policies, enrichments, httpRequest, srcEndpoint, user, authFactors, userResult, rawDataHash, policy);
+        }
+
+    }
+
+    public static abstract class AccountChangeBuilderBase<T extends AccountChange >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AccountChangeBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AccountChange.AccountChangeBuilder.class)) {
+                this.instance = ((T) new AccountChange());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AccountChangeBuilderBase(Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Policy> policies, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, User user, List<AuthFactor> authFactors, User userResult, Fingerprint rawDataHash, Policy policy) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AccountChange.AccountChangeBuilder.class)) {
+                this.instance = ((T) new AccountChange(actor, rawDataSize, httpResponse, policies, enrichments, httpRequest, srcEndpoint, user, authFactors, userResult, rawDataHash, policy));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withActor(Actor actor) {
+            ((AccountChange) this.instance).actor = actor;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withRawDataSize(Integer rawDataSize) {
+            ((AccountChange) this.instance).rawDataSize = rawDataSize;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withHttpResponse(HttpResponse httpResponse) {
+            ((AccountChange) this.instance).httpResponse = httpResponse;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withPolicies(List<Policy> policies) {
+            ((AccountChange) this.instance).policies = policies;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withEnrichments(List<Enrichment> enrichments) {
+            ((AccountChange) this.instance).enrichments = enrichments;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withHttpRequest(HttpRequest httpRequest) {
+            ((AccountChange) this.instance).httpRequest = httpRequest;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withSrcEndpoint(NetworkEndpoint srcEndpoint) {
+            ((AccountChange) this.instance).srcEndpoint = srcEndpoint;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withUser(User user) {
+            ((AccountChange) this.instance).user = user;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withAuthFactors(List<AuthFactor> authFactors) {
+            ((AccountChange) this.instance).authFactors = authFactors;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withUserResult(User userResult) {
+            ((AccountChange) this.instance).userResult = userResult;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withRawDataHash(Fingerprint rawDataHash) {
+            ((AccountChange) this.instance).rawDataHash = rawDataHash;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withPolicy(Policy policy) {
+            ((AccountChange) this.instance).policy = policy;
+            return this;
+        }
+
+        public AccountChange.AccountChangeBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AccountChange) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Actor.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Actor.java
new file mode 100644
index 000000000000..f0cc5f079ae2
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Actor.java
@@ -0,0 +1,493 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Actor
+ * <p>
+ * The Actor object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "process",
+    "session",
+    "user",
+    "app_name",
+    "app_uid",
+    "authorizations",
+    "idp",
+    "invoked_by"
+})
+@Generated("jsonschema2pojo")
+public class Actor {
+
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("process")
+    @JsonPropertyDescription("The Process object.")
+    private Process process;
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    @JsonPropertyDescription("The Session object.")
+    private Session session;
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    @JsonPropertyDescription("The User object.")
+    private User user;
+    /**
+     * Application Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_name")
+    private String appName;
+    /**
+     * Application ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_uid")
+    private String appUid;
+    /**
+     * Authorization Information
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("authorizations")
+    private List<Authorization> authorizations = new ArrayList<Authorization>();
+    /**
+     * Idp
+     * <p>
+     * The Identity Provider object.
+     * 
+     */
+    @JsonProperty("idp")
+    @JsonPropertyDescription("The Identity Provider object.")
+    private Idp idp;
+    /**
+     * Invoked by
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("invoked_by")
+    private String invokedBy;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Actor() {
+    }
+
+    /**
+     * 
+     * @param appName
+     *     Application Name.
+     * @param authorizations
+     *     Authorization Information.
+     * @param appUid
+     *     Application ID.
+     * @param invokedBy
+     *     Invoked by.
+     */
+    public Actor(Process process, Session session, User user, String appName, String appUid, List<Authorization> authorizations, Idp idp, String invokedBy) {
+        super();
+        this.process = process;
+        this.session = session;
+        this.user = user;
+        this.appName = appName;
+        this.appUid = appUid;
+        this.authorizations = authorizations;
+        this.idp = idp;
+        this.invokedBy = invokedBy;
+    }
+
+    public static Actor.ActorBuilderBase builder() {
+        return new Actor.ActorBuilder();
+    }
+
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("process")
+    public Process getProcess() {
+        return process;
+    }
+
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("process")
+    public void setProcess(Process process) {
+        this.process = process;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public Session getSession() {
+        return session;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public void setSession(Session session) {
+        this.session = session;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public User getUser() {
+        return user;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    /**
+     * Application Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_name")
+    public String getAppName() {
+        return appName;
+    }
+
+    /**
+     * Application Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_name")
+    public void setAppName(String appName) {
+        this.appName = appName;
+    }
+
+    /**
+     * Application ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_uid")
+    public String getAppUid() {
+        return appUid;
+    }
+
+    /**
+     * Application ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("app_uid")
+    public void setAppUid(String appUid) {
+        this.appUid = appUid;
+    }
+
+    /**
+     * Authorization Information
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("authorizations")
+    public List<Authorization> getAuthorizations() {
+        return authorizations;
+    }
+
+    /**
+     * Authorization Information
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("authorizations")
+    public void setAuthorizations(List<Authorization> authorizations) {
+        this.authorizations = authorizations;
+    }
+
+    /**
+     * Idp
+     * <p>
+     * The Identity Provider object.
+     * 
+     */
+    @JsonProperty("idp")
+    public Idp getIdp() {
+        return idp;
+    }
+
+    /**
+     * Idp
+     * <p>
+     * The Identity Provider object.
+     * 
+     */
+    @JsonProperty("idp")
+    public void setIdp(Idp idp) {
+        this.idp = idp;
+    }
+
+    /**
+     * Invoked by
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("invoked_by")
+    public String getInvokedBy() {
+        return invokedBy;
+    }
+
+    /**
+     * Invoked by
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("invoked_by")
+    public void setInvokedBy(String invokedBy) {
+        this.invokedBy = invokedBy;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Actor.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("process");
+        sb.append('=');
+        sb.append(((this.process == null)?"<null>":this.process));
+        sb.append(',');
+        sb.append("session");
+        sb.append('=');
+        sb.append(((this.session == null)?"<null>":this.session));
+        sb.append(',');
+        sb.append("user");
+        sb.append('=');
+        sb.append(((this.user == null)?"<null>":this.user));
+        sb.append(',');
+        sb.append("appName");
+        sb.append('=');
+        sb.append(((this.appName == null)?"<null>":this.appName));
+        sb.append(',');
+        sb.append("appUid");
+        sb.append('=');
+        sb.append(((this.appUid == null)?"<null>":this.appUid));
+        sb.append(',');
+        sb.append("authorizations");
+        sb.append('=');
+        sb.append(((this.authorizations == null)?"<null>":this.authorizations));
+        sb.append(',');
+        sb.append("idp");
+        sb.append('=');
+        sb.append(((this.idp == null)?"<null>":this.idp));
+        sb.append(',');
+        sb.append("invokedBy");
+        sb.append('=');
+        sb.append(((this.invokedBy == null)?"<null>":this.invokedBy));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.process == null)? 0 :this.process.hashCode()));
+        result = ((result* 31)+((this.idp == null)? 0 :this.idp.hashCode()));
+        result = ((result* 31)+((this.session == null)? 0 :this.session.hashCode()));
+        result = ((result* 31)+((this.appName == null)? 0 :this.appName.hashCode()));
+        result = ((result* 31)+((this.authorizations == null)? 0 :this.authorizations.hashCode()));
+        result = ((result* 31)+((this.appUid == null)? 0 :this.appUid.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.invokedBy == null)? 0 :this.invokedBy.hashCode()));
+        result = ((result* 31)+((this.user == null)? 0 :this.user.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Actor) == false) {
+            return false;
+        }
+        Actor rhs = ((Actor) other);
+        return ((((((((((this.process == rhs.process)||((this.process!= null)&&this.process.equals(rhs.process)))&&((this.idp == rhs.idp)||((this.idp!= null)&&this.idp.equals(rhs.idp))))&&((this.session == rhs.session)||((this.session!= null)&&this.session.equals(rhs.session))))&&((this.appName == rhs.appName)||((this.appName!= null)&&this.appName.equals(rhs.appName))))&&((this.authorizations == rhs.authorizations)||((this.authorizations!= null)&&this.authorizations.equals(rhs.authorizat [...]
+    }
+
+    public static class ActorBuilder
+        extends Actor.ActorBuilderBase<Actor>
+    {
+
+
+        public ActorBuilder() {
+            super();
+        }
+
+        public ActorBuilder(Process process, Session session, User user, String appName, String appUid, List<Authorization> authorizations, Idp idp, String invokedBy) {
+            super(process, session, user, appName, appUid, authorizations, idp, invokedBy);
+        }
+
+    }
+
+    public static abstract class ActorBuilderBase<T extends Actor >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public ActorBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Actor.ActorBuilder.class)) {
+                this.instance = ((T) new Actor());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public ActorBuilderBase(Process process, Session session, User user, String appName, String appUid, List<Authorization> authorizations, Idp idp, String invokedBy) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Actor.ActorBuilder.class)) {
+                this.instance = ((T) new Actor(process, session, user, appName, appUid, authorizations, idp, invokedBy));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Actor.ActorBuilderBase withProcess(Process process) {
+            ((Actor) this.instance).process = process;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withSession(Session session) {
+            ((Actor) this.instance).session = session;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withUser(User user) {
+            ((Actor) this.instance).user = user;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withAppName(String appName) {
+            ((Actor) this.instance).appName = appName;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withAppUid(String appUid) {
+            ((Actor) this.instance).appUid = appUid;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withAuthorizations(List<Authorization> authorizations) {
+            ((Actor) this.instance).authorizations = authorizations;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withIdp(Idp idp) {
+            ((Actor) this.instance).idp = idp;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withInvokedBy(String invokedBy) {
+            ((Actor) this.instance).invokedBy = invokedBy;
+            return this;
+        }
+
+        public Actor.ActorBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Actor) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Advisory.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Advisory.java
new file mode 100644
index 000000000000..5594d564d290
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Advisory.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class Advisory {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static Advisory.AdvisoryBuilderBase builder() {
+        return new Advisory.AdvisoryBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Advisory.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Advisory) == false) {
+            return false;
+        }
+        Advisory rhs = ((Advisory) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AdvisoryBuilder
+        extends Advisory.AdvisoryBuilderBase<Advisory>
+    {
+
+
+        public AdvisoryBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AdvisoryBuilderBase<T extends Advisory >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AdvisoryBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Advisory.AdvisoryBuilder.class)) {
+                this.instance = ((T) new Advisory());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Advisory.AdvisoryBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Advisory) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedCode.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedCode.java
new file mode 100644
index 000000000000..edd55ceefb80
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedCode.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AffectedCode {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AffectedCode.AffectedCodeBuilderBase builder() {
+        return new AffectedCode.AffectedCodeBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AffectedCode.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AffectedCode) == false) {
+            return false;
+        }
+        AffectedCode rhs = ((AffectedCode) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AffectedCodeBuilder
+        extends AffectedCode.AffectedCodeBuilderBase<AffectedCode>
+    {
+
+
+        public AffectedCodeBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AffectedCodeBuilderBase<T extends AffectedCode >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AffectedCodeBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AffectedCode.AffectedCodeBuilder.class)) {
+                this.instance = ((T) new AffectedCode());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AffectedCode.AffectedCodeBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AffectedCode) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedPackage.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedPackage.java
new file mode 100644
index 000000000000..149687e58ca4
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AffectedPackage.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AffectedPackage {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AffectedPackage.AffectedPackageBuilderBase builder() {
+        return new AffectedPackage.AffectedPackageBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AffectedPackage.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AffectedPackage) == false) {
+            return false;
+        }
+        AffectedPackage rhs = ((AffectedPackage) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AffectedPackageBuilder
+        extends AffectedPackage.AffectedPackageBuilderBase<AffectedPackage>
+    {
+
+
+        public AffectedPackageBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AffectedPackageBuilderBase<T extends AffectedPackage >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AffectedPackageBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AffectedPackage.AffectedPackageBuilder.class)) {
+                this.instance = ((T) new AffectedPackage());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AffectedPackage.AffectedPackageBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AffectedPackage) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Agent.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Agent.java
new file mode 100644
index 000000000000..ff126525f08e
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Agent.java
@@ -0,0 +1,487 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Agent
+ * <p>
+ * The Agent object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "type",
+    "version",
+    "uid",
+    "type_id",
+    "policies",
+    "uid_alt",
+    "vendor_name"
+})
+@Generated("jsonschema2pojo")
+public class Agent {
+
+    /**
+     * Agent Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    private String name;
+    /**
+     * Agent Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    private String type;
+    /**
+     * Agent Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    private String version;
+    /**
+     * Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    private String uid;
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    private Integer typeId;
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    @JsonPropertyDescription("")
+    private List<Policy> policies = new ArrayList<Policy>();
+    /**
+     * Alternate Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid_alt")
+    private String uidAlt;
+    /**
+     * Vendor Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("vendor_name")
+    private String vendorName;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Agent() {
+    }
+
+    /**
+     * 
+     * @param uid
+     *     Agent ID.
+     * @param uidAlt
+     *     Alternate Agent ID.
+     * @param name
+     *     Agent Name.
+     * @param typeId
+     *     Type ID.
+     * @param type
+     *     Agent Type.
+     * @param vendorName
+     *     Vendor Name.
+     * @param version
+     *     Agent Version.
+     */
+    public Agent(String name, String type, String version, String uid, Integer typeId, List<Policy> policies, String uidAlt, String vendorName) {
+        super();
+        this.name = name;
+        this.type = type;
+        this.version = version;
+        this.uid = uid;
+        this.typeId = typeId;
+        this.policies = policies;
+        this.uidAlt = uidAlt;
+        this.vendorName = vendorName;
+    }
+
+    public static Agent.AgentBuilderBase builder() {
+        return new Agent.AgentBuilder();
+    }
+
+    /**
+     * Agent Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Agent Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Agent Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Agent Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    /**
+     * Agent Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Agent Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public String getUid() {
+        return uid;
+    }
+
+    /**
+     * Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public Integer getTypeId() {
+        return typeId;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public void setTypeId(Integer typeId) {
+        this.typeId = typeId;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    public List<Policy> getPolicies() {
+        return policies;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("policies")
+    public void setPolicies(List<Policy> policies) {
+        this.policies = policies;
+    }
+
+    /**
+     * Alternate Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid_alt")
+    public String getUidAlt() {
+        return uidAlt;
+    }
+
+    /**
+     * Alternate Agent ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid_alt")
+    public void setUidAlt(String uidAlt) {
+        this.uidAlt = uidAlt;
+    }
+
+    /**
+     * Vendor Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("vendor_name")
+    public String getVendorName() {
+        return vendorName;
+    }
+
+    /**
+     * Vendor Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("vendor_name")
+    public void setVendorName(String vendorName) {
+        this.vendorName = vendorName;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Agent.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("name");
+        sb.append('=');
+        sb.append(((this.name == null)?"<null>":this.name));
+        sb.append(',');
+        sb.append("type");
+        sb.append('=');
+        sb.append(((this.type == null)?"<null>":this.type));
+        sb.append(',');
+        sb.append("version");
+        sb.append('=');
+        sb.append(((this.version == null)?"<null>":this.version));
+        sb.append(',');
+        sb.append("uid");
+        sb.append('=');
+        sb.append(((this.uid == null)?"<null>":this.uid));
+        sb.append(',');
+        sb.append("typeId");
+        sb.append('=');
+        sb.append(((this.typeId == null)?"<null>":this.typeId));
+        sb.append(',');
+        sb.append("policies");
+        sb.append('=');
+        sb.append(((this.policies == null)?"<null>":this.policies));
+        sb.append(',');
+        sb.append("uidAlt");
+        sb.append('=');
+        sb.append(((this.uidAlt == null)?"<null>":this.uidAlt));
+        sb.append(',');
+        sb.append("vendorName");
+        sb.append('=');
+        sb.append(((this.vendorName == null)?"<null>":this.vendorName));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.uid == null)? 0 :this.uid.hashCode()));
+        result = ((result* 31)+((this.uidAlt == null)? 0 :this.uidAlt.hashCode()));
+        result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
+        result = ((result* 31)+((this.policies == null)? 0 :this.policies.hashCode()));
+        result = ((result* 31)+((this.typeId == null)? 0 :this.typeId.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode()));
+        result = ((result* 31)+((this.vendorName == null)? 0 :this.vendorName.hashCode()));
+        result = ((result* 31)+((this.version == null)? 0 :this.version.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Agent) == false) {
+            return false;
+        }
+        Agent rhs = ((Agent) other);
+        return ((((((((((this.uid == rhs.uid)||((this.uid!= null)&&this.uid.equals(rhs.uid)))&&((this.uidAlt == rhs.uidAlt)||((this.uidAlt!= null)&&this.uidAlt.equals(rhs.uidAlt))))&&((this.name == rhs.name)||((this.name!= null)&&this.name.equals(rhs.name))))&&((this.policies == rhs.policies)||((this.policies!= null)&&this.policies.equals(rhs.policies))))&&((this.typeId == rhs.typeId)||((this.typeId!= null)&&this.typeId.equals(rhs.typeId))))&&((this.additionalProperties == rhs.additional [...]
+    }
+
+    public static class AgentBuilder
+        extends Agent.AgentBuilderBase<Agent>
+    {
+
+
+        public AgentBuilder() {
+            super();
+        }
+
+        public AgentBuilder(String name, String type, String version, String uid, Integer typeId, List<Policy> policies, String uidAlt, String vendorName) {
+            super(name, type, version, uid, typeId, policies, uidAlt, vendorName);
+        }
+
+    }
+
+    public static abstract class AgentBuilderBase<T extends Agent >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AgentBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Agent.AgentBuilder.class)) {
+                this.instance = ((T) new Agent());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AgentBuilderBase(String name, String type, String version, String uid, Integer typeId, List<Policy> policies, String uidAlt, String vendorName) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Agent.AgentBuilder.class)) {
+                this.instance = ((T) new Agent(name, type, version, uid, typeId, policies, uidAlt, vendorName));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Agent.AgentBuilderBase withName(String name) {
+            ((Agent) this.instance).name = name;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withType(String type) {
+            ((Agent) this.instance).type = type;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withVersion(String version) {
+            ((Agent) this.instance).version = version;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withUid(String uid) {
+            ((Agent) this.instance).uid = uid;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withTypeId(Integer typeId) {
+            ((Agent) this.instance).typeId = typeId;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withPolicies(List<Policy> policies) {
+            ((Agent) this.instance).policies = policies;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withUidAlt(String uidAlt) {
+            ((Agent) this.instance).uidAlt = uidAlt;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withVendorName(String vendorName) {
+            ((Agent) this.instance).vendorName = vendorName;
+            return this;
+        }
+
+        public Agent.AgentBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Agent) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Analytic.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Analytic.java
new file mode 100644
index 000000000000..478bf53418e0
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Analytic.java
@@ -0,0 +1,619 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Analytic
+ * <p>
+ * The Analytic object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "name",
+    "type",
+    "version",
+    "state",
+    "desc",
+    "uid",
+    "category",
+    "algorithm",
+    "type_id",
+    "related_analytics",
+    "state_id"
+})
+@Generated("jsonschema2pojo")
+public class Analytic {
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    private String name;
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    private String type;
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    private String version;
+    /**
+     * State
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state")
+    private String state;
+    /**
+     * Description
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("desc")
+    private String desc;
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    private String uid;
+    /**
+     * Category
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("category")
+    private String category;
+    /**
+     * Algorithm
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("algorithm")
+    private String algorithm;
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    private Integer typeId;
+    /**
+     * 
+     */
+    @JsonProperty("related_analytics")
+    @JsonPropertyDescription("")
+    private List<Analytic> relatedAnalytics = new ArrayList<Analytic>();
+    /**
+     * State ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state_id")
+    private Integer stateId;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Analytic() {
+    }
+
+    /**
+     * 
+     * @param uid
+     *     Unique ID.
+     * @param stateId
+     *     State ID.
+     * @param name
+     *     Name.
+     * @param typeId
+     *     Type ID.
+     * @param state
+     *     State.
+     * @param type
+     *     Type.
+     * @param category
+     *     Category.
+     * @param version
+     *     Version.
+     * @param desc
+     *     Description.
+     * @param algorithm
+     *     Algorithm.
+     */
+    public Analytic(String name, String type, String version, String state, String desc, String uid, String category, String algorithm, Integer typeId, List<Analytic> relatedAnalytics, Integer stateId) {
+        super();
+        this.name = name;
+        this.type = type;
+        this.version = version;
+        this.state = state;
+        this.desc = desc;
+        this.uid = uid;
+        this.category = category;
+        this.algorithm = algorithm;
+        this.typeId = typeId;
+        this.relatedAnalytics = relatedAnalytics;
+        this.stateId = stateId;
+    }
+
+    public static Analytic.AnalyticBuilderBase builder() {
+        return new Analytic.AnalyticBuilder();
+    }
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("name")
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public String getType() {
+        return type;
+    }
+
+    /**
+     * Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type")
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * State
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state")
+    public String getState() {
+        return state;
+    }
+
+    /**
+     * State
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state")
+    public void setState(String state) {
+        this.state = state;
+    }
+
+    /**
+     * Description
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("desc")
+    public String getDesc() {
+        return desc;
+    }
+
+    /**
+     * Description
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("desc")
+    public void setDesc(String desc) {
+        this.desc = desc;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public String getUid() {
+        return uid;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    /**
+     * Category
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("category")
+    public String getCategory() {
+        return category;
+    }
+
+    /**
+     * Category
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("category")
+    public void setCategory(String category) {
+        this.category = category;
+    }
+
+    /**
+     * Algorithm
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("algorithm")
+    public String getAlgorithm() {
+        return algorithm;
+    }
+
+    /**
+     * Algorithm
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("algorithm")
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public Integer getTypeId() {
+        return typeId;
+    }
+
+    /**
+     * Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("type_id")
+    public void setTypeId(Integer typeId) {
+        this.typeId = typeId;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("related_analytics")
+    public List<Analytic> getRelatedAnalytics() {
+        return relatedAnalytics;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("related_analytics")
+    public void setRelatedAnalytics(List<Analytic> relatedAnalytics) {
+        this.relatedAnalytics = relatedAnalytics;
+    }
+
+    /**
+     * State ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state_id")
+    public Integer getStateId() {
+        return stateId;
+    }
+
+    /**
+     * State ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("state_id")
+    public void setStateId(Integer stateId) {
+        this.stateId = stateId;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Analytic.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("name");
+        sb.append('=');
+        sb.append(((this.name == null)?"<null>":this.name));
+        sb.append(',');
+        sb.append("type");
+        sb.append('=');
+        sb.append(((this.type == null)?"<null>":this.type));
+        sb.append(',');
+        sb.append("version");
+        sb.append('=');
+        sb.append(((this.version == null)?"<null>":this.version));
+        sb.append(',');
+        sb.append("state");
+        sb.append('=');
+        sb.append(((this.state == null)?"<null>":this.state));
+        sb.append(',');
+        sb.append("desc");
+        sb.append('=');
+        sb.append(((this.desc == null)?"<null>":this.desc));
+        sb.append(',');
+        sb.append("uid");
+        sb.append('=');
+        sb.append(((this.uid == null)?"<null>":this.uid));
+        sb.append(',');
+        sb.append("category");
+        sb.append('=');
+        sb.append(((this.category == null)?"<null>":this.category));
+        sb.append(',');
+        sb.append("algorithm");
+        sb.append('=');
+        sb.append(((this.algorithm == null)?"<null>":this.algorithm));
+        sb.append(',');
+        sb.append("typeId");
+        sb.append('=');
+        sb.append(((this.typeId == null)?"<null>":this.typeId));
+        sb.append(',');
+        sb.append("relatedAnalytics");
+        sb.append('=');
+        sb.append(((this.relatedAnalytics == null)?"<null>":this.relatedAnalytics));
+        sb.append(',');
+        sb.append("stateId");
+        sb.append('=');
+        sb.append(((this.stateId == null)?"<null>":this.stateId));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.stateId == null)? 0 :this.stateId.hashCode()));
+        result = ((result* 31)+((this.type == null)? 0 :this.type.hashCode()));
+        result = ((result* 31)+((this.version == null)? 0 :this.version.hashCode()));
+        result = ((result* 31)+((this.uid == null)? 0 :this.uid.hashCode()));
+        result = ((result* 31)+((this.relatedAnalytics == null)? 0 :this.relatedAnalytics.hashCode()));
+        result = ((result* 31)+((this.name == null)? 0 :this.name.hashCode()));
+        result = ((result* 31)+((this.typeId == null)? 0 :this.typeId.hashCode()));
+        result = ((result* 31)+((this.state == null)? 0 :this.state.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.category == null)? 0 :this.category.hashCode()));
+        result = ((result* 31)+((this.desc == null)? 0 :this.desc.hashCode()));
+        result = ((result* 31)+((this.algorithm == null)? 0 :this.algorithm.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Analytic) == false) {
+            return false;
+        }
+        Analytic rhs = ((Analytic) other);
+        return (((((((((((((this.stateId == rhs.stateId)||((this.stateId!= null)&&this.stateId.equals(rhs.stateId)))&&((this.type == rhs.type)||((this.type!= null)&&this.type.equals(rhs.type))))&&((this.version == rhs.version)||((this.version!= null)&&this.version.equals(rhs.version))))&&((this.uid == rhs.uid)||((this.uid!= null)&&this.uid.equals(rhs.uid))))&&((this.relatedAnalytics == rhs.relatedAnalytics)||((this.relatedAnalytics!= null)&&this.relatedAnalytics.equals(rhs.relatedAnalyti [...]
+    }
+
+    public static class AnalyticBuilder
+        extends Analytic.AnalyticBuilderBase<Analytic>
+    {
+
+
+        public AnalyticBuilder() {
+            super();
+        }
+
+        public AnalyticBuilder(String name, String type, String version, String state, String desc, String uid, String category, String algorithm, Integer typeId, List<Analytic> relatedAnalytics, Integer stateId) {
+            super(name, type, version, state, desc, uid, category, algorithm, typeId, relatedAnalytics, stateId);
+        }
+
+    }
+
+    public static abstract class AnalyticBuilderBase<T extends Analytic >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AnalyticBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Analytic.AnalyticBuilder.class)) {
+                this.instance = ((T) new Analytic());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AnalyticBuilderBase(String name, String type, String version, String state, String desc, String uid, String category, String algorithm, Integer typeId, List<Analytic> relatedAnalytics, Integer stateId) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Analytic.AnalyticBuilder.class)) {
+                this.instance = ((T) new Analytic(name, type, version, state, desc, uid, category, algorithm, typeId, relatedAnalytics, stateId));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Analytic.AnalyticBuilderBase withName(String name) {
+            ((Analytic) this.instance).name = name;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withType(String type) {
+            ((Analytic) this.instance).type = type;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withVersion(String version) {
+            ((Analytic) this.instance).version = version;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withState(String state) {
+            ((Analytic) this.instance).state = state;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withDesc(String desc) {
+            ((Analytic) this.instance).desc = desc;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withUid(String uid) {
+            ((Analytic) this.instance).uid = uid;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withCategory(String category) {
+            ((Analytic) this.instance).category = category;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withAlgorithm(String algorithm) {
+            ((Analytic) this.instance).algorithm = algorithm;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withTypeId(Integer typeId) {
+            ((Analytic) this.instance).typeId = typeId;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withRelatedAnalytics(List<Analytic> relatedAnalytics) {
+            ((Analytic) this.instance).relatedAnalytics = relatedAnalytics;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withStateId(Integer stateId) {
+            ((Analytic) this.instance).stateId = stateId;
+            return this;
+        }
+
+        public Analytic.AnalyticBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Analytic) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Ancestry.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Ancestry.java
new file mode 100644
index 000000000000..d429abe21d73
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Ancestry.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class Ancestry {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static Ancestry.AncestryBuilderBase builder() {
+        return new Ancestry.AncestryBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Ancestry.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Ancestry) == false) {
+            return false;
+        }
+        Ancestry rhs = ((Ancestry) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AncestryBuilder
+        extends Ancestry.AncestryBuilderBase<Ancestry>
+    {
+
+
+        public AncestryBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AncestryBuilderBase<T extends Ancestry >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AncestryBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Ancestry.AncestryBuilder.class)) {
+                this.instance = ((T) new Ancestry());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Ancestry.AncestryBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Ancestry) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AnomalyAnalyasis.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AnomalyAnalyasis.java
new file mode 100644
index 000000000000..66b832aa49f4
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AnomalyAnalyasis.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AnomalyAnalyasis {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AnomalyAnalyasis.AnomalyAnalyasisBuilderBase builder() {
+        return new AnomalyAnalyasis.AnomalyAnalyasisBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AnomalyAnalyasis.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AnomalyAnalyasis) == false) {
+            return false;
+        }
+        AnomalyAnalyasis rhs = ((AnomalyAnalyasis) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AnomalyAnalyasisBuilder
+        extends AnomalyAnalyasis.AnomalyAnalyasisBuilderBase<AnomalyAnalyasis>
+    {
+
+
+        public AnomalyAnalyasisBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AnomalyAnalyasisBuilderBase<T extends AnomalyAnalyasis >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AnomalyAnalyasisBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AnomalyAnalyasis.AnomalyAnalyasisBuilder.class)) {
+                this.instance = ((T) new AnomalyAnalyasis());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AnomalyAnalyasis.AnomalyAnalyasisBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AnomalyAnalyasis) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Answer.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Answer.java
new file mode 100644
index 000000000000..78a2d2d09354
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Answer.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class Answer {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static Answer.AnswerBuilderBase builder() {
+        return new Answer.AnswerBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Answer.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Answer) == false) {
+            return false;
+        }
+        Answer rhs = ((Answer) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AnswerBuilder
+        extends Answer.AnswerBuilderBase<Answer>
+    {
+
+
+        public AnswerBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AnswerBuilderBase<T extends Answer >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AnswerBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Answer.AnswerBuilder.class)) {
+                this.instance = ((T) new Answer());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Answer.AnswerBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Answer) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Api.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Api.java
new file mode 100644
index 000000000000..5bd9eb7703ec
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Api.java
@@ -0,0 +1,403 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Api
+ * <p>
+ * The API object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "version",
+    "request",
+    "service",
+    "group",
+    "response",
+    "operation"
+})
+@Generated("jsonschema2pojo")
+public class Api {
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    private String version;
+    /**
+     * Request
+     * <p>
+     * The Request Elements object.
+     * 
+     */
+    @JsonProperty("request")
+    @JsonPropertyDescription("The Request Elements object.")
+    private Request request;
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    @JsonPropertyDescription("The Service object.")
+    private Service service;
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    @JsonPropertyDescription("The Group object.")
+    private Group group;
+    /**
+     * Response
+     * <p>
+     * The Response Elements object.
+     * 
+     */
+    @JsonProperty("response")
+    @JsonPropertyDescription("The Response Elements object.")
+    private Response response;
+    /**
+     * Operation
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("operation")
+    private String operation;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Api() {
+    }
+
+    /**
+     * 
+     * @param version
+     *     Version.
+     * @param operation
+     *     Operation.
+     */
+    public Api(String version, Request request, Service service, Group group, Response response, String operation) {
+        super();
+        this.version = version;
+        this.request = request;
+        this.service = service;
+        this.group = group;
+        this.response = response;
+        this.operation = operation;
+    }
+
+    public static Api.ApiBuilderBase builder() {
+        return new Api.ApiBuilder();
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * Request
+     * <p>
+     * The Request Elements object.
+     * 
+     */
+    @JsonProperty("request")
+    public Request getRequest() {
+        return request;
+    }
+
+    /**
+     * Request
+     * <p>
+     * The Request Elements object.
+     * 
+     */
+    @JsonProperty("request")
+    public void setRequest(Request request) {
+        this.request = request;
+    }
+
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    public Service getService() {
+        return service;
+    }
+
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    public void setService(Service service) {
+        this.service = service;
+    }
+
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    public Group getGroup() {
+        return group;
+    }
+
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    public void setGroup(Group group) {
+        this.group = group;
+    }
+
+    /**
+     * Response
+     * <p>
+     * The Response Elements object.
+     * 
+     */
+    @JsonProperty("response")
+    public Response getResponse() {
+        return response;
+    }
+
+    /**
+     * Response
+     * <p>
+     * The Response Elements object.
+     * 
+     */
+    @JsonProperty("response")
+    public void setResponse(Response response) {
+        this.response = response;
+    }
+
+    /**
+     * Operation
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("operation")
+    public String getOperation() {
+        return operation;
+    }
+
+    /**
+     * Operation
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("operation")
+    public void setOperation(String operation) {
+        this.operation = operation;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Api.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("version");
+        sb.append('=');
+        sb.append(((this.version == null)?"<null>":this.version));
+        sb.append(',');
+        sb.append("request");
+        sb.append('=');
+        sb.append(((this.request == null)?"<null>":this.request));
+        sb.append(',');
+        sb.append("service");
+        sb.append('=');
+        sb.append(((this.service == null)?"<null>":this.service));
+        sb.append(',');
+        sb.append("group");
+        sb.append('=');
+        sb.append(((this.group == null)?"<null>":this.group));
+        sb.append(',');
+        sb.append("response");
+        sb.append('=');
+        sb.append(((this.response == null)?"<null>":this.response));
+        sb.append(',');
+        sb.append("operation");
+        sb.append('=');
+        sb.append(((this.operation == null)?"<null>":this.operation));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.request == null)? 0 :this.request.hashCode()));
+        result = ((result* 31)+((this.service == null)? 0 :this.service.hashCode()));
+        result = ((result* 31)+((this.response == null)? 0 :this.response.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.version == null)? 0 :this.version.hashCode()));
+        result = ((result* 31)+((this.operation == null)? 0 :this.operation.hashCode()));
+        result = ((result* 31)+((this.group == null)? 0 :this.group.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Api) == false) {
+            return false;
+        }
+        Api rhs = ((Api) other);
+        return ((((((((this.request == rhs.request)||((this.request!= null)&&this.request.equals(rhs.request)))&&((this.service == rhs.service)||((this.service!= null)&&this.service.equals(rhs.service))))&&((this.response == rhs.response)||((this.response!= null)&&this.response.equals(rhs.response))))&&((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties))))&&((this.version == rhs.version) [...]
+    }
+
+    public static class ApiBuilder
+        extends Api.ApiBuilderBase<Api>
+    {
+
+
+        public ApiBuilder() {
+            super();
+        }
+
+        public ApiBuilder(String version, Request request, Service service, Group group, Response response, String operation) {
+            super(version, request, service, group, response, operation);
+        }
+
+    }
+
+    public static abstract class ApiBuilderBase<T extends Api >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public ApiBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Api.ApiBuilder.class)) {
+                this.instance = ((T) new Api());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public ApiBuilderBase(String version, Request request, Service service, Group group, Response response, String operation) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Api.ApiBuilder.class)) {
+                this.instance = ((T) new Api(version, request, service, group, response, operation));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Api.ApiBuilderBase withVersion(String version) {
+            ((Api) this.instance).version = version;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withRequest(Request request) {
+            ((Api) this.instance).request = request;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withService(Service service) {
+            ((Api) this.instance).service = service;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withGroup(Group group) {
+            ((Api) this.instance).group = group;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withResponse(Response response) {
+            ((Api) this.instance).response = response;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withOperation(String operation) {
+            ((Api) this.instance).operation = operation;
+            return this;
+        }
+
+        public Api.ApiBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Api) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/ApiActivity.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/ApiActivity.java
new file mode 100644
index 000000000000..8997207fedd2
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/ApiActivity.java
@@ -0,0 +1,558 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * ApiActivity
+ * <p>
+ * ApiActivity event class.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "actor",
+    "resources",
+    "raw_data_size",
+    "http_response",
+    "enrichments",
+    "http_request",
+    "api",
+    "src_endpoint",
+    "dst_endpoint",
+    "raw_data_hash"
+})
+@Generated("jsonschema2pojo")
+public class ApiActivity {
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    @JsonPropertyDescription("The Actor object.")
+    private Actor actor;
+    /**
+     * 
+     */
+    @JsonProperty("resources")
+    @JsonPropertyDescription("")
+    private List<ResourceDetails> resources = new ArrayList<ResourceDetails>();
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    private Integer rawDataSize;
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    @JsonPropertyDescription("The HTTP Response object.")
+    private HttpResponse httpResponse;
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    @JsonPropertyDescription("")
+    private List<Enrichment> enrichments = new ArrayList<Enrichment>();
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    @JsonPropertyDescription("The HTTP Request object.")
+    private HttpRequest httpRequest;
+    /**
+     * Api
+     * <p>
+     * The API object.
+     * 
+     */
+    @JsonProperty("api")
+    @JsonPropertyDescription("The API object.")
+    private Api api;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint srcEndpoint;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint dstEndpoint;
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    @JsonPropertyDescription("The Fingerprint object.")
+    private Fingerprint rawDataHash;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public ApiActivity() {
+    }
+
+    /**
+     * 
+     * @param rawDataSize
+     *     Raw Data Size.
+     */
+    public ApiActivity(Actor actor, List<ResourceDetails> resources, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, Api api, NetworkEndpoint srcEndpoint, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+        super();
+        this.actor = actor;
+        this.resources = resources;
+        this.rawDataSize = rawDataSize;
+        this.httpResponse = httpResponse;
+        this.enrichments = enrichments;
+        this.httpRequest = httpRequest;
+        this.api = api;
+        this.srcEndpoint = srcEndpoint;
+        this.dstEndpoint = dstEndpoint;
+        this.rawDataHash = rawDataHash;
+    }
+
+    public static ApiActivity.ApiActivityBuilderBase builder() {
+        return new ApiActivity.ApiActivityBuilder();
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public Actor getActor() {
+        return actor;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public void setActor(Actor actor) {
+        this.actor = actor;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("resources")
+    public List<ResourceDetails> getResources() {
+        return resources;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("resources")
+    public void setResources(List<ResourceDetails> resources) {
+        this.resources = resources;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public Integer getRawDataSize() {
+        return rawDataSize;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public void setRawDataSize(Integer rawDataSize) {
+        this.rawDataSize = rawDataSize;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public HttpResponse getHttpResponse() {
+        return httpResponse;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public void setHttpResponse(HttpResponse httpResponse) {
+        this.httpResponse = httpResponse;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public List<Enrichment> getEnrichments() {
+        return enrichments;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public void setEnrichments(List<Enrichment> enrichments) {
+        this.enrichments = enrichments;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public HttpRequest getHttpRequest() {
+        return httpRequest;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public void setHttpRequest(HttpRequest httpRequest) {
+        this.httpRequest = httpRequest;
+    }
+
+    /**
+     * Api
+     * <p>
+     * The API object.
+     * 
+     */
+    @JsonProperty("api")
+    public Api getApi() {
+        return api;
+    }
+
+    /**
+     * Api
+     * <p>
+     * The API object.
+     * 
+     */
+    @JsonProperty("api")
+    public void setApi(Api api) {
+        this.api = api;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public NetworkEndpoint getSrcEndpoint() {
+        return srcEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public void setSrcEndpoint(NetworkEndpoint srcEndpoint) {
+        this.srcEndpoint = srcEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public NetworkEndpoint getDstEndpoint() {
+        return dstEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public void setDstEndpoint(NetworkEndpoint dstEndpoint) {
+        this.dstEndpoint = dstEndpoint;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public Fingerprint getRawDataHash() {
+        return rawDataHash;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public void setRawDataHash(Fingerprint rawDataHash) {
+        this.rawDataHash = rawDataHash;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(ApiActivity.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("actor");
+        sb.append('=');
+        sb.append(((this.actor == null)?"<null>":this.actor));
+        sb.append(',');
+        sb.append("resources");
+        sb.append('=');
+        sb.append(((this.resources == null)?"<null>":this.resources));
+        sb.append(',');
+        sb.append("rawDataSize");
+        sb.append('=');
+        sb.append(((this.rawDataSize == null)?"<null>":this.rawDataSize));
+        sb.append(',');
+        sb.append("httpResponse");
+        sb.append('=');
+        sb.append(((this.httpResponse == null)?"<null>":this.httpResponse));
+        sb.append(',');
+        sb.append("enrichments");
+        sb.append('=');
+        sb.append(((this.enrichments == null)?"<null>":this.enrichments));
+        sb.append(',');
+        sb.append("httpRequest");
+        sb.append('=');
+        sb.append(((this.httpRequest == null)?"<null>":this.httpRequest));
+        sb.append(',');
+        sb.append("api");
+        sb.append('=');
+        sb.append(((this.api == null)?"<null>":this.api));
+        sb.append(',');
+        sb.append("srcEndpoint");
+        sb.append('=');
+        sb.append(((this.srcEndpoint == null)?"<null>":this.srcEndpoint));
+        sb.append(',');
+        sb.append("dstEndpoint");
+        sb.append('=');
+        sb.append(((this.dstEndpoint == null)?"<null>":this.dstEndpoint));
+        sb.append(',');
+        sb.append("rawDataHash");
+        sb.append('=');
+        sb.append(((this.rawDataHash == null)?"<null>":this.rawDataHash));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.actor == null)? 0 :this.actor.hashCode()));
+        result = ((result* 31)+((this.srcEndpoint == null)? 0 :this.srcEndpoint.hashCode()));
+        result = ((result* 31)+((this.rawDataHash == null)? 0 :this.rawDataHash.hashCode()));
+        result = ((result* 31)+((this.rawDataSize == null)? 0 :this.rawDataSize.hashCode()));
+        result = ((result* 31)+((this.resources == null)? 0 :this.resources.hashCode()));
+        result = ((result* 31)+((this.httpRequest == null)? 0 :this.httpRequest.hashCode()));
+        result = ((result* 31)+((this.api == null)? 0 :this.api.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.httpResponse == null)? 0 :this.httpResponse.hashCode()));
+        result = ((result* 31)+((this.dstEndpoint == null)? 0 :this.dstEndpoint.hashCode()));
+        result = ((result* 31)+((this.enrichments == null)? 0 :this.enrichments.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof ApiActivity) == false) {
+            return false;
+        }
+        ApiActivity rhs = ((ApiActivity) other);
+        return ((((((((((((this.actor == rhs.actor)||((this.actor!= null)&&this.actor.equals(rhs.actor)))&&((this.srcEndpoint == rhs.srcEndpoint)||((this.srcEndpoint!= null)&&this.srcEndpoint.equals(rhs.srcEndpoint))))&&((this.rawDataHash == rhs.rawDataHash)||((this.rawDataHash!= null)&&this.rawDataHash.equals(rhs.rawDataHash))))&&((this.rawDataSize == rhs.rawDataSize)||((this.rawDataSize!= null)&&this.rawDataSize.equals(rhs.rawDataSize))))&&((this.resources == rhs.resources)||((this.res [...]
+    }
+
+    public static class ApiActivityBuilder
+        extends ApiActivity.ApiActivityBuilderBase<ApiActivity>
+    {
+
+
+        public ApiActivityBuilder() {
+            super();
+        }
+
+        public ApiActivityBuilder(Actor actor, List<ResourceDetails> resources, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, Api api, NetworkEndpoint srcEndpoint, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+            super(actor, resources, rawDataSize, httpResponse, enrichments, httpRequest, api, srcEndpoint, dstEndpoint, rawDataHash);
+        }
+
+    }
+
+    public static abstract class ApiActivityBuilderBase<T extends ApiActivity >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public ApiActivityBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(ApiActivity.ApiActivityBuilder.class)) {
+                this.instance = ((T) new ApiActivity());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public ApiActivityBuilderBase(Actor actor, List<ResourceDetails> resources, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, Api api, NetworkEndpoint srcEndpoint, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(ApiActivity.ApiActivityBuilder.class)) {
+                this.instance = ((T) new ApiActivity(actor, resources, rawDataSize, httpResponse, enrichments, httpRequest, api, srcEndpoint, dstEndpoint, rawDataHash));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withActor(Actor actor) {
+            ((ApiActivity) this.instance).actor = actor;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withResources(List<ResourceDetails> resources) {
+            ((ApiActivity) this.instance).resources = resources;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withRawDataSize(Integer rawDataSize) {
+            ((ApiActivity) this.instance).rawDataSize = rawDataSize;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withHttpResponse(HttpResponse httpResponse) {
+            ((ApiActivity) this.instance).httpResponse = httpResponse;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withEnrichments(List<Enrichment> enrichments) {
+            ((ApiActivity) this.instance).enrichments = enrichments;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withHttpRequest(HttpRequest httpRequest) {
+            ((ApiActivity) this.instance).httpRequest = httpRequest;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withApi(Api api) {
+            ((ApiActivity) this.instance).api = api;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withSrcEndpoint(NetworkEndpoint srcEndpoint) {
+            ((ApiActivity) this.instance).srcEndpoint = srcEndpoint;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withDstEndpoint(NetworkEndpoint dstEndpoint) {
+            ((ApiActivity) this.instance).dstEndpoint = dstEndpoint;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withRawDataHash(Fingerprint rawDataHash) {
+            ((ApiActivity) this.instance).rawDataHash = rawDataHash;
+            return this;
+        }
+
+        public ApiActivity.ApiActivityBuilderBase withAdditionalProperty(String name, Object value) {
+            ((ApiActivity) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Assessment.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Assessment.java
new file mode 100644
index 000000000000..70df71c3c1a8
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Assessment.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class Assessment {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static Assessment.AssessmentBuilderBase builder() {
+        return new Assessment.AssessmentBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Assessment.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Assessment) == false) {
+            return false;
+        }
+        Assessment rhs = ((Assessment) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AssessmentBuilder
+        extends Assessment.AssessmentBuilderBase<Assessment>
+    {
+
+
+        public AssessmentBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AssessmentBuilderBase<T extends Assessment >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AssessmentBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Assessment.AssessmentBuilder.class)) {
+                this.instance = ((T) new Assessment());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Assessment.AssessmentBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Assessment) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Attack.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Attack.java
new file mode 100644
index 000000000000..d5f055da28ab
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Attack.java
@@ -0,0 +1,376 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Attack
+ * <p>
+ * The MITRE ATT&CK® & ATLAS™ object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "version",
+    "tactics",
+    "technique",
+    "mitigation",
+    "sub_technique",
+    "tactic"
+})
+@Generated("jsonschema2pojo")
+public class Attack {
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    private String version;
+    /**
+     * 
+     */
+    @JsonProperty("tactics")
+    @JsonPropertyDescription("")
+    private List<Tactic> tactics = new ArrayList<Tactic>();
+    /**
+     * Technique
+     * <p>
+     * The MITRE Technique object.
+     * 
+     */
+    @JsonProperty("technique")
+    @JsonPropertyDescription("The MITRE Technique object.")
+    private Technique technique;
+    @JsonProperty("mitigation")
+    private Mitigation mitigation;
+    /**
+     * SubTechnique
+     * <p>
+     * The MITRE Sub-technique object.
+     * 
+     */
+    @JsonProperty("sub_technique")
+    @JsonPropertyDescription("The MITRE Sub-technique object.")
+    private SubTechnique subTechnique;
+    /**
+     * Tactic
+     * <p>
+     * The MITRE Tactic object.
+     * 
+     */
+    @JsonProperty("tactic")
+    @JsonPropertyDescription("The MITRE Tactic object.")
+    private Tactic tactic;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Attack() {
+    }
+
+    /**
+     * 
+     * @param version
+     *     Version.
+     */
+    public Attack(String version, List<Tactic> tactics, Technique technique, Mitigation mitigation, SubTechnique subTechnique, Tactic tactic) {
+        super();
+        this.version = version;
+        this.tactics = tactics;
+        this.technique = technique;
+        this.mitigation = mitigation;
+        this.subTechnique = subTechnique;
+        this.tactic = tactic;
+    }
+
+    public static Attack.AttackBuilderBase builder() {
+        return new Attack.AttackBuilder();
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("tactics")
+    public List<Tactic> getTactics() {
+        return tactics;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("tactics")
+    public void setTactics(List<Tactic> tactics) {
+        this.tactics = tactics;
+    }
+
+    /**
+     * Technique
+     * <p>
+     * The MITRE Technique object.
+     * 
+     */
+    @JsonProperty("technique")
+    public Technique getTechnique() {
+        return technique;
+    }
+
+    /**
+     * Technique
+     * <p>
+     * The MITRE Technique object.
+     * 
+     */
+    @JsonProperty("technique")
+    public void setTechnique(Technique technique) {
+        this.technique = technique;
+    }
+
+    @JsonProperty("mitigation")
+    public Mitigation getMitigation() {
+        return mitigation;
+    }
+
+    @JsonProperty("mitigation")
+    public void setMitigation(Mitigation mitigation) {
+        this.mitigation = mitigation;
+    }
+
+    /**
+     * SubTechnique
+     * <p>
+     * The MITRE Sub-technique object.
+     * 
+     */
+    @JsonProperty("sub_technique")
+    public SubTechnique getSubTechnique() {
+        return subTechnique;
+    }
+
+    /**
+     * SubTechnique
+     * <p>
+     * The MITRE Sub-technique object.
+     * 
+     */
+    @JsonProperty("sub_technique")
+    public void setSubTechnique(SubTechnique subTechnique) {
+        this.subTechnique = subTechnique;
+    }
+
+    /**
+     * Tactic
+     * <p>
+     * The MITRE Tactic object.
+     * 
+     */
+    @JsonProperty("tactic")
+    public Tactic getTactic() {
+        return tactic;
+    }
+
+    /**
+     * Tactic
+     * <p>
+     * The MITRE Tactic object.
+     * 
+     */
+    @JsonProperty("tactic")
+    public void setTactic(Tactic tactic) {
+        this.tactic = tactic;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Attack.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("version");
+        sb.append('=');
+        sb.append(((this.version == null)?"<null>":this.version));
+        sb.append(',');
+        sb.append("tactics");
+        sb.append('=');
+        sb.append(((this.tactics == null)?"<null>":this.tactics));
+        sb.append(',');
+        sb.append("technique");
+        sb.append('=');
+        sb.append(((this.technique == null)?"<null>":this.technique));
+        sb.append(',');
+        sb.append("mitigation");
+        sb.append('=');
+        sb.append(((this.mitigation == null)?"<null>":this.mitigation));
+        sb.append(',');
+        sb.append("subTechnique");
+        sb.append('=');
+        sb.append(((this.subTechnique == null)?"<null>":this.subTechnique));
+        sb.append(',');
+        sb.append("tactic");
+        sb.append('=');
+        sb.append(((this.tactic == null)?"<null>":this.tactic));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.mitigation == null)? 0 :this.mitigation.hashCode()));
+        result = ((result* 31)+((this.tactics == null)? 0 :this.tactics.hashCode()));
+        result = ((result* 31)+((this.technique == null)? 0 :this.technique.hashCode()));
+        result = ((result* 31)+((this.subTechnique == null)? 0 :this.subTechnique.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.version == null)? 0 :this.version.hashCode()));
+        result = ((result* 31)+((this.tactic == null)? 0 :this.tactic.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Attack) == false) {
+            return false;
+        }
+        Attack rhs = ((Attack) other);
+        return ((((((((this.mitigation == rhs.mitigation)||((this.mitigation!= null)&&this.mitigation.equals(rhs.mitigation)))&&((this.tactics == rhs.tactics)||((this.tactics!= null)&&this.tactics.equals(rhs.tactics))))&&((this.technique == rhs.technique)||((this.technique!= null)&&this.technique.equals(rhs.technique))))&&((this.subTechnique == rhs.subTechnique)||((this.subTechnique!= null)&&this.subTechnique.equals(rhs.subTechnique))))&&((this.additionalProperties == rhs.additionalPrope [...]
+    }
+
+    public static class AttackBuilder
+        extends Attack.AttackBuilderBase<Attack>
+    {
+
+
+        public AttackBuilder() {
+            super();
+        }
+
+        public AttackBuilder(String version, List<Tactic> tactics, Technique technique, Mitigation mitigation, SubTechnique subTechnique, Tactic tactic) {
+            super(version, tactics, technique, mitigation, subTechnique, tactic);
+        }
+
+    }
+
+    public static abstract class AttackBuilderBase<T extends Attack >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AttackBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Attack.AttackBuilder.class)) {
+                this.instance = ((T) new Attack());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AttackBuilderBase(String version, List<Tactic> tactics, Technique technique, Mitigation mitigation, SubTechnique subTechnique, Tactic tactic) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Attack.AttackBuilder.class)) {
+                this.instance = ((T) new Attack(version, tactics, technique, mitigation, subTechnique, tactic));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Attack.AttackBuilderBase withVersion(String version) {
+            ((Attack) this.instance).version = version;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withTactics(List<Tactic> tactics) {
+            ((Attack) this.instance).tactics = tactics;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withTechnique(Technique technique) {
+            ((Attack) this.instance).technique = technique;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withMitigation(Mitigation mitigation) {
+            ((Attack) this.instance).mitigation = mitigation;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withSubTechnique(SubTechnique subTechnique) {
+            ((Attack) this.instance).subTechnique = subTechnique;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withTactic(Tactic tactic) {
+            ((Attack) this.instance).tactic = tactic;
+            return this;
+        }
+
+        public Attack.AttackBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Attack) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AttackGraph.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AttackGraph.java
new file mode 100644
index 000000000000..9413bed12fed
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AttackGraph.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AttackGraph {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AttackGraph.AttackGraphBuilderBase builder() {
+        return new AttackGraph.AttackGraphBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AttackGraph.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AttackGraph) == false) {
+            return false;
+        }
+        AttackGraph rhs = ((AttackGraph) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AttackGraphBuilder
+        extends AttackGraph.AttackGraphBuilderBase<AttackGraph>
+    {
+
+
+        public AttackGraphBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AttackGraphBuilderBase<T extends AttackGraph >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AttackGraphBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AttackGraph.AttackGraphBuilder.class)) {
+                this.instance = ((T) new AttackGraph());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AttackGraph.AttackGraphBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AttackGraph) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthFactor.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthFactor.java
new file mode 100644
index 000000000000..49af452a74e5
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthFactor.java
@@ -0,0 +1,540 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * AuthFactor
+ * <p>
+ * The Authentication Factor object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "device",
+    "email_addr",
+    "factor_type",
+    "factor_type_id",
+    "is_hotp",
+    "is_totp",
+    "phone_number",
+    "provider",
+    "security_questions"
+})
+@Generated("jsonschema2pojo")
+public class AuthFactor {
+
+    /**
+     * Device
+     * <p>
+     * The Device object.
+     * 
+     */
+    @JsonProperty("device")
+    @JsonPropertyDescription("The Device object.")
+    private Device device;
+    /**
+     * Email Address
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("email_addr")
+    private String emailAddr;
+    /**
+     * Factor Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type")
+    private String factorType;
+    /**
+     * Factor Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type_id")
+    private Integer factorTypeId;
+    /**
+     * HMAC-based One-time Password (HOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_hotp")
+    private Boolean isHotp;
+    /**
+     * Time-based One-time Password (TOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_totp")
+    private Boolean isTotp;
+    /**
+     * Phone Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("phone_number")
+    private String phoneNumber;
+    /**
+     * Provider
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("provider")
+    private String provider;
+    /**
+     * Security Questions
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("security_questions")
+    private List<String> securityQuestions = new ArrayList<String>();
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public AuthFactor() {
+    }
+
+    /**
+     * 
+     * @param factorTypeId
+     *     Factor Type ID.
+     * @param phoneNumber
+     *     Phone Number.
+     * @param provider
+     *     Provider.
+     * @param emailAddr
+     *     Email Address.
+     * @param isTotp
+     *     Time-based One-time Password (TOTP).
+     * @param factorType
+     *     Factor Type.
+     * @param securityQuestions
+     *     Security Questions.
+     * @param isHotp
+     *     HMAC-based One-time Password (HOTP).
+     */
+    public AuthFactor(Device device, String emailAddr, String factorType, Integer factorTypeId, Boolean isHotp, Boolean isTotp, String phoneNumber, String provider, List<String> securityQuestions) {
+        super();
+        this.device = device;
+        this.emailAddr = emailAddr;
+        this.factorType = factorType;
+        this.factorTypeId = factorTypeId;
+        this.isHotp = isHotp;
+        this.isTotp = isTotp;
+        this.phoneNumber = phoneNumber;
+        this.provider = provider;
+        this.securityQuestions = securityQuestions;
+    }
+
+    public static AuthFactor.AuthFactorBuilderBase builder() {
+        return new AuthFactor.AuthFactorBuilder();
+    }
+
+    /**
+     * Device
+     * <p>
+     * The Device object.
+     * 
+     */
+    @JsonProperty("device")
+    public Device getDevice() {
+        return device;
+    }
+
+    /**
+     * Device
+     * <p>
+     * The Device object.
+     * 
+     */
+    @JsonProperty("device")
+    public void setDevice(Device device) {
+        this.device = device;
+    }
+
+    /**
+     * Email Address
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("email_addr")
+    public String getEmailAddr() {
+        return emailAddr;
+    }
+
+    /**
+     * Email Address
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("email_addr")
+    public void setEmailAddr(String emailAddr) {
+        this.emailAddr = emailAddr;
+    }
+
+    /**
+     * Factor Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type")
+    public String getFactorType() {
+        return factorType;
+    }
+
+    /**
+     * Factor Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type")
+    public void setFactorType(String factorType) {
+        this.factorType = factorType;
+    }
+
+    /**
+     * Factor Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type_id")
+    public Integer getFactorTypeId() {
+        return factorTypeId;
+    }
+
+    /**
+     * Factor Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("factor_type_id")
+    public void setFactorTypeId(Integer factorTypeId) {
+        this.factorTypeId = factorTypeId;
+    }
+
+    /**
+     * HMAC-based One-time Password (HOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_hotp")
+    public Boolean getIsHotp() {
+        return isHotp;
+    }
+
+    /**
+     * HMAC-based One-time Password (HOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_hotp")
+    public void setIsHotp(Boolean isHotp) {
+        this.isHotp = isHotp;
+    }
+
+    /**
+     * Time-based One-time Password (TOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_totp")
+    public Boolean getIsTotp() {
+        return isTotp;
+    }
+
+    /**
+     * Time-based One-time Password (TOTP)
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_totp")
+    public void setIsTotp(Boolean isTotp) {
+        this.isTotp = isTotp;
+    }
+
+    /**
+     * Phone Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("phone_number")
+    public String getPhoneNumber() {
+        return phoneNumber;
+    }
+
+    /**
+     * Phone Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("phone_number")
+    public void setPhoneNumber(String phoneNumber) {
+        this.phoneNumber = phoneNumber;
+    }
+
+    /**
+     * Provider
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("provider")
+    public String getProvider() {
+        return provider;
+    }
+
+    /**
+     * Provider
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("provider")
+    public void setProvider(String provider) {
+        this.provider = provider;
+    }
+
+    /**
+     * Security Questions
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("security_questions")
+    public List<String> getSecurityQuestions() {
+        return securityQuestions;
+    }
+
+    /**
+     * Security Questions
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("security_questions")
+    public void setSecurityQuestions(List<String> securityQuestions) {
+        this.securityQuestions = securityQuestions;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AuthFactor.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("device");
+        sb.append('=');
+        sb.append(((this.device == null)?"<null>":this.device));
+        sb.append(',');
+        sb.append("emailAddr");
+        sb.append('=');
+        sb.append(((this.emailAddr == null)?"<null>":this.emailAddr));
+        sb.append(',');
+        sb.append("factorType");
+        sb.append('=');
+        sb.append(((this.factorType == null)?"<null>":this.factorType));
+        sb.append(',');
+        sb.append("factorTypeId");
+        sb.append('=');
+        sb.append(((this.factorTypeId == null)?"<null>":this.factorTypeId));
+        sb.append(',');
+        sb.append("isHotp");
+        sb.append('=');
+        sb.append(((this.isHotp == null)?"<null>":this.isHotp));
+        sb.append(',');
+        sb.append("isTotp");
+        sb.append('=');
+        sb.append(((this.isTotp == null)?"<null>":this.isTotp));
+        sb.append(',');
+        sb.append("phoneNumber");
+        sb.append('=');
+        sb.append(((this.phoneNumber == null)?"<null>":this.phoneNumber));
+        sb.append(',');
+        sb.append("provider");
+        sb.append('=');
+        sb.append(((this.provider == null)?"<null>":this.provider));
+        sb.append(',');
+        sb.append("securityQuestions");
+        sb.append('=');
+        sb.append(((this.securityQuestions == null)?"<null>":this.securityQuestions));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.factorTypeId == null)? 0 :this.factorTypeId.hashCode()));
+        result = ((result* 31)+((this.phoneNumber == null)? 0 :this.phoneNumber.hashCode()));
+        result = ((result* 31)+((this.provider == null)? 0 :this.provider.hashCode()));
+        result = ((result* 31)+((this.emailAddr == null)? 0 :this.emailAddr.hashCode()));
+        result = ((result* 31)+((this.isTotp == null)? 0 :this.isTotp.hashCode()));
+        result = ((result* 31)+((this.factorType == null)? 0 :this.factorType.hashCode()));
+        result = ((result* 31)+((this.securityQuestions == null)? 0 :this.securityQuestions.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.device == null)? 0 :this.device.hashCode()));
+        result = ((result* 31)+((this.isHotp == null)? 0 :this.isHotp.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AuthFactor) == false) {
+            return false;
+        }
+        AuthFactor rhs = ((AuthFactor) other);
+        return (((((((((((this.factorTypeId == rhs.factorTypeId)||((this.factorTypeId!= null)&&this.factorTypeId.equals(rhs.factorTypeId)))&&((this.phoneNumber == rhs.phoneNumber)||((this.phoneNumber!= null)&&this.phoneNumber.equals(rhs.phoneNumber))))&&((this.provider == rhs.provider)||((this.provider!= null)&&this.provider.equals(rhs.provider))))&&((this.emailAddr == rhs.emailAddr)||((this.emailAddr!= null)&&this.emailAddr.equals(rhs.emailAddr))))&&((this.isTotp == rhs.isTotp)||((this. [...]
+    }
+
+    public static class AuthFactorBuilder
+        extends AuthFactor.AuthFactorBuilderBase<AuthFactor>
+    {
+
+
+        public AuthFactorBuilder() {
+            super();
+        }
+
+        public AuthFactorBuilder(Device device, String emailAddr, String factorType, Integer factorTypeId, Boolean isHotp, Boolean isTotp, String phoneNumber, String provider, List<String> securityQuestions) {
+            super(device, emailAddr, factorType, factorTypeId, isHotp, isTotp, phoneNumber, provider, securityQuestions);
+        }
+
+    }
+
+    public static abstract class AuthFactorBuilderBase<T extends AuthFactor >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AuthFactorBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AuthFactor.AuthFactorBuilder.class)) {
+                this.instance = ((T) new AuthFactor());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AuthFactorBuilderBase(Device device, String emailAddr, String factorType, Integer factorTypeId, Boolean isHotp, Boolean isTotp, String phoneNumber, String provider, List<String> securityQuestions) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AuthFactor.AuthFactorBuilder.class)) {
+                this.instance = ((T) new AuthFactor(device, emailAddr, factorType, factorTypeId, isHotp, isTotp, phoneNumber, provider, securityQuestions));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withDevice(Device device) {
+            ((AuthFactor) this.instance).device = device;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withEmailAddr(String emailAddr) {
+            ((AuthFactor) this.instance).emailAddr = emailAddr;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withFactorType(String factorType) {
+            ((AuthFactor) this.instance).factorType = factorType;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withFactorTypeId(Integer factorTypeId) {
+            ((AuthFactor) this.instance).factorTypeId = factorTypeId;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withIsHotp(Boolean isHotp) {
+            ((AuthFactor) this.instance).isHotp = isHotp;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withIsTotp(Boolean isTotp) {
+            ((AuthFactor) this.instance).isTotp = isTotp;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withPhoneNumber(String phoneNumber) {
+            ((AuthFactor) this.instance).phoneNumber = phoneNumber;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withProvider(String provider) {
+            ((AuthFactor) this.instance).provider = provider;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withSecurityQuestions(List<String> securityQuestions) {
+            ((AuthFactor) this.instance).securityQuestions = securityQuestions;
+            return this;
+        }
+
+        public AuthFactor.AuthFactorBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AuthFactor) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authentication.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authentication.java
new file mode 100644
index 000000000000..33788169174b
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authentication.java
@@ -0,0 +1,1194 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Authentication
+ * <p>
+ * Authentication event class.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "account_switch_type_id",
+    "actor",
+    "service",
+    "auth_protocol_id",
+    "raw_data_size",
+    "http_response",
+    "enrichments",
+    "logon_process",
+    "http_request",
+    "src_endpoint",
+    "is_mfa",
+    "user",
+    "session",
+    "auth_factors",
+    "logon_type",
+    "dst_endpoint",
+    "certificate",
+    "raw_data_hash",
+    "logon_type_id",
+    "is_remote",
+    "is_new_logon",
+    "authentication_token",
+    "auth_protocol",
+    "account_switch_type",
+    "is_cleartext"
+})
+@Generated("jsonschema2pojo")
+public class Authentication {
+
+    /**
+     * Account Switch Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type_id")
+    private Integer accountSwitchTypeId;
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    @JsonPropertyDescription("The Actor object.")
+    private Actor actor;
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    @JsonPropertyDescription("The Service object.")
+    private Service service;
+    /**
+     * Auth Protocol ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol_id")
+    private Integer authProtocolId;
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    private Integer rawDataSize;
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    @JsonPropertyDescription("The HTTP Response object.")
+    private HttpResponse httpResponse;
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    @JsonPropertyDescription("")
+    private List<Enrichment> enrichments = new ArrayList<Enrichment>();
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("logon_process")
+    @JsonPropertyDescription("The Process object.")
+    private Process logonProcess;
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    @JsonPropertyDescription("The HTTP Request object.")
+    private HttpRequest httpRequest;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint srcEndpoint;
+    /**
+     * Multi Factor Authentication
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_mfa")
+    private Boolean isMfa;
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    @JsonPropertyDescription("The User object.")
+    private User user;
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    @JsonPropertyDescription("The Session object.")
+    private Session session;
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    @JsonPropertyDescription("")
+    private List<AuthFactor> authFactors = new ArrayList<AuthFactor>();
+    /**
+     * Logon Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type")
+    private String logonType;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint dstEndpoint;
+    /**
+     * Certificate
+     * <p>
+     * The Digital Certificate object.
+     * 
+     */
+    @JsonProperty("certificate")
+    @JsonPropertyDescription("The Digital Certificate object.")
+    private Certificate certificate;
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    @JsonPropertyDescription("The Fingerprint object.")
+    private Fingerprint rawDataHash;
+    /**
+     * Logon Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type_id")
+    private Integer logonTypeId;
+    /**
+     * Remote
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_remote")
+    private Boolean isRemote;
+    /**
+     * New Logon
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_new_logon")
+    private Boolean isNewLogon;
+    @JsonProperty("authentication_token")
+    private AuthenticationToken authenticationToken;
+    /**
+     * Auth Protocol
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol")
+    private String authProtocol;
+    /**
+     * Account Switch Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type")
+    private String accountSwitchType;
+    /**
+     * Cleartext Credentials
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_cleartext")
+    private Boolean isCleartext;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Authentication() {
+    }
+
+    /**
+     * 
+     * @param accountSwitchTypeId
+     *     Account Switch Type ID.
+     * @param isMfa
+     *     Multi Factor Authentication.
+     * @param rawDataSize
+     *     Raw Data Size.
+     * @param isRemote
+     *     Remote.
+     * @param logonTypeId
+     *     Logon Type ID.
+     * @param accountSwitchType
+     *     Account Switch Type.
+     * @param isCleartext
+     *     Cleartext Credentials.
+     * @param authProtocolId
+     *     Auth Protocol ID.
+     * @param logonType
+     *     Logon Type.
+     * @param authProtocol
+     *     Auth Protocol.
+     * @param isNewLogon
+     *     New Logon.
+     */
+    public Authentication(Integer accountSwitchTypeId, Actor actor, Service service, Integer authProtocolId, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, Process logonProcess, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Boolean isMfa, User user, Session session, List<AuthFactor> authFactors, String logonType, NetworkEndpoint dstEndpoint, Certificate certificate, Fingerprint rawDataHash, Integer logonTypeId, Boolean isRemote, Boolean isNewLogon,  [...]
+        super();
+        this.accountSwitchTypeId = accountSwitchTypeId;
+        this.actor = actor;
+        this.service = service;
+        this.authProtocolId = authProtocolId;
+        this.rawDataSize = rawDataSize;
+        this.httpResponse = httpResponse;
+        this.enrichments = enrichments;
+        this.logonProcess = logonProcess;
+        this.httpRequest = httpRequest;
+        this.srcEndpoint = srcEndpoint;
+        this.isMfa = isMfa;
+        this.user = user;
+        this.session = session;
+        this.authFactors = authFactors;
+        this.logonType = logonType;
+        this.dstEndpoint = dstEndpoint;
+        this.certificate = certificate;
+        this.rawDataHash = rawDataHash;
+        this.logonTypeId = logonTypeId;
+        this.isRemote = isRemote;
+        this.isNewLogon = isNewLogon;
+        this.authenticationToken = authenticationToken;
+        this.authProtocol = authProtocol;
+        this.accountSwitchType = accountSwitchType;
+        this.isCleartext = isCleartext;
+    }
+
+    public static Authentication.AuthenticationBuilderBase builder() {
+        return new Authentication.AuthenticationBuilder();
+    }
+
+    /**
+     * Account Switch Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type_id")
+    public Integer getAccountSwitchTypeId() {
+        return accountSwitchTypeId;
+    }
+
+    /**
+     * Account Switch Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type_id")
+    public void setAccountSwitchTypeId(Integer accountSwitchTypeId) {
+        this.accountSwitchTypeId = accountSwitchTypeId;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public Actor getActor() {
+        return actor;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public void setActor(Actor actor) {
+        this.actor = actor;
+    }
+
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    public Service getService() {
+        return service;
+    }
+
+    /**
+     * Service
+     * <p>
+     * The Service object.
+     * 
+     */
+    @JsonProperty("service")
+    public void setService(Service service) {
+        this.service = service;
+    }
+
+    /**
+     * Auth Protocol ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol_id")
+    public Integer getAuthProtocolId() {
+        return authProtocolId;
+    }
+
+    /**
+     * Auth Protocol ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol_id")
+    public void setAuthProtocolId(Integer authProtocolId) {
+        this.authProtocolId = authProtocolId;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public Integer getRawDataSize() {
+        return rawDataSize;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public void setRawDataSize(Integer rawDataSize) {
+        this.rawDataSize = rawDataSize;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public HttpResponse getHttpResponse() {
+        return httpResponse;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public void setHttpResponse(HttpResponse httpResponse) {
+        this.httpResponse = httpResponse;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public List<Enrichment> getEnrichments() {
+        return enrichments;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public void setEnrichments(List<Enrichment> enrichments) {
+        this.enrichments = enrichments;
+    }
+
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("logon_process")
+    public Process getLogonProcess() {
+        return logonProcess;
+    }
+
+    /**
+     * Process
+     * <p>
+     * The Process object.
+     * 
+     */
+    @JsonProperty("logon_process")
+    public void setLogonProcess(Process logonProcess) {
+        this.logonProcess = logonProcess;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public HttpRequest getHttpRequest() {
+        return httpRequest;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public void setHttpRequest(HttpRequest httpRequest) {
+        this.httpRequest = httpRequest;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public NetworkEndpoint getSrcEndpoint() {
+        return srcEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public void setSrcEndpoint(NetworkEndpoint srcEndpoint) {
+        this.srcEndpoint = srcEndpoint;
+    }
+
+    /**
+     * Multi Factor Authentication
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_mfa")
+    public Boolean getIsMfa() {
+        return isMfa;
+    }
+
+    /**
+     * Multi Factor Authentication
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_mfa")
+    public void setIsMfa(Boolean isMfa) {
+        this.isMfa = isMfa;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public User getUser() {
+        return user;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public Session getSession() {
+        return session;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public void setSession(Session session) {
+        this.session = session;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    public List<AuthFactor> getAuthFactors() {
+        return authFactors;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("auth_factors")
+    public void setAuthFactors(List<AuthFactor> authFactors) {
+        this.authFactors = authFactors;
+    }
+
+    /**
+     * Logon Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type")
+    public String getLogonType() {
+        return logonType;
+    }
+
+    /**
+     * Logon Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type")
+    public void setLogonType(String logonType) {
+        this.logonType = logonType;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public NetworkEndpoint getDstEndpoint() {
+        return dstEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public void setDstEndpoint(NetworkEndpoint dstEndpoint) {
+        this.dstEndpoint = dstEndpoint;
+    }
+
+    /**
+     * Certificate
+     * <p>
+     * The Digital Certificate object.
+     * 
+     */
+    @JsonProperty("certificate")
+    public Certificate getCertificate() {
+        return certificate;
+    }
+
+    /**
+     * Certificate
+     * <p>
+     * The Digital Certificate object.
+     * 
+     */
+    @JsonProperty("certificate")
+    public void setCertificate(Certificate certificate) {
+        this.certificate = certificate;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public Fingerprint getRawDataHash() {
+        return rawDataHash;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public void setRawDataHash(Fingerprint rawDataHash) {
+        this.rawDataHash = rawDataHash;
+    }
+
+    /**
+     * Logon Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type_id")
+    public Integer getLogonTypeId() {
+        return logonTypeId;
+    }
+
+    /**
+     * Logon Type ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("logon_type_id")
+    public void setLogonTypeId(Integer logonTypeId) {
+        this.logonTypeId = logonTypeId;
+    }
+
+    /**
+     * Remote
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_remote")
+    public Boolean getIsRemote() {
+        return isRemote;
+    }
+
+    /**
+     * Remote
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_remote")
+    public void setIsRemote(Boolean isRemote) {
+        this.isRemote = isRemote;
+    }
+
+    /**
+     * New Logon
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_new_logon")
+    public Boolean getIsNewLogon() {
+        return isNewLogon;
+    }
+
+    /**
+     * New Logon
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_new_logon")
+    public void setIsNewLogon(Boolean isNewLogon) {
+        this.isNewLogon = isNewLogon;
+    }
+
+    @JsonProperty("authentication_token")
+    public AuthenticationToken getAuthenticationToken() {
+        return authenticationToken;
+    }
+
+    @JsonProperty("authentication_token")
+    public void setAuthenticationToken(AuthenticationToken authenticationToken) {
+        this.authenticationToken = authenticationToken;
+    }
+
+    /**
+     * Auth Protocol
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol")
+    public String getAuthProtocol() {
+        return authProtocol;
+    }
+
+    /**
+     * Auth Protocol
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("auth_protocol")
+    public void setAuthProtocol(String authProtocol) {
+        this.authProtocol = authProtocol;
+    }
+
+    /**
+     * Account Switch Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type")
+    public String getAccountSwitchType() {
+        return accountSwitchType;
+    }
+
+    /**
+     * Account Switch Type
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("account_switch_type")
+    public void setAccountSwitchType(String accountSwitchType) {
+        this.accountSwitchType = accountSwitchType;
+    }
+
+    /**
+     * Cleartext Credentials
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_cleartext")
+    public Boolean getIsCleartext() {
+        return isCleartext;
+    }
+
+    /**
+     * Cleartext Credentials
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_cleartext")
+    public void setIsCleartext(Boolean isCleartext) {
+        this.isCleartext = isCleartext;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Authentication.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("accountSwitchTypeId");
+        sb.append('=');
+        sb.append(((this.accountSwitchTypeId == null)?"<null>":this.accountSwitchTypeId));
+        sb.append(',');
+        sb.append("actor");
+        sb.append('=');
+        sb.append(((this.actor == null)?"<null>":this.actor));
+        sb.append(',');
+        sb.append("service");
+        sb.append('=');
+        sb.append(((this.service == null)?"<null>":this.service));
+        sb.append(',');
+        sb.append("authProtocolId");
+        sb.append('=');
+        sb.append(((this.authProtocolId == null)?"<null>":this.authProtocolId));
+        sb.append(',');
+        sb.append("rawDataSize");
+        sb.append('=');
+        sb.append(((this.rawDataSize == null)?"<null>":this.rawDataSize));
+        sb.append(',');
+        sb.append("httpResponse");
+        sb.append('=');
+        sb.append(((this.httpResponse == null)?"<null>":this.httpResponse));
+        sb.append(',');
+        sb.append("enrichments");
+        sb.append('=');
+        sb.append(((this.enrichments == null)?"<null>":this.enrichments));
+        sb.append(',');
+        sb.append("logonProcess");
+        sb.append('=');
+        sb.append(((this.logonProcess == null)?"<null>":this.logonProcess));
+        sb.append(',');
+        sb.append("httpRequest");
+        sb.append('=');
+        sb.append(((this.httpRequest == null)?"<null>":this.httpRequest));
+        sb.append(',');
+        sb.append("srcEndpoint");
+        sb.append('=');
+        sb.append(((this.srcEndpoint == null)?"<null>":this.srcEndpoint));
+        sb.append(',');
+        sb.append("isMfa");
+        sb.append('=');
+        sb.append(((this.isMfa == null)?"<null>":this.isMfa));
+        sb.append(',');
+        sb.append("user");
+        sb.append('=');
+        sb.append(((this.user == null)?"<null>":this.user));
+        sb.append(',');
+        sb.append("session");
+        sb.append('=');
+        sb.append(((this.session == null)?"<null>":this.session));
+        sb.append(',');
+        sb.append("authFactors");
+        sb.append('=');
+        sb.append(((this.authFactors == null)?"<null>":this.authFactors));
+        sb.append(',');
+        sb.append("logonType");
+        sb.append('=');
+        sb.append(((this.logonType == null)?"<null>":this.logonType));
+        sb.append(',');
+        sb.append("dstEndpoint");
+        sb.append('=');
+        sb.append(((this.dstEndpoint == null)?"<null>":this.dstEndpoint));
+        sb.append(',');
+        sb.append("certificate");
+        sb.append('=');
+        sb.append(((this.certificate == null)?"<null>":this.certificate));
+        sb.append(',');
+        sb.append("rawDataHash");
+        sb.append('=');
+        sb.append(((this.rawDataHash == null)?"<null>":this.rawDataHash));
+        sb.append(',');
+        sb.append("logonTypeId");
+        sb.append('=');
+        sb.append(((this.logonTypeId == null)?"<null>":this.logonTypeId));
+        sb.append(',');
+        sb.append("isRemote");
+        sb.append('=');
+        sb.append(((this.isRemote == null)?"<null>":this.isRemote));
+        sb.append(',');
+        sb.append("isNewLogon");
+        sb.append('=');
+        sb.append(((this.isNewLogon == null)?"<null>":this.isNewLogon));
+        sb.append(',');
+        sb.append("authenticationToken");
+        sb.append('=');
+        sb.append(((this.authenticationToken == null)?"<null>":this.authenticationToken));
+        sb.append(',');
+        sb.append("authProtocol");
+        sb.append('=');
+        sb.append(((this.authProtocol == null)?"<null>":this.authProtocol));
+        sb.append(',');
+        sb.append("accountSwitchType");
+        sb.append('=');
+        sb.append(((this.accountSwitchType == null)?"<null>":this.accountSwitchType));
+        sb.append(',');
+        sb.append("isCleartext");
+        sb.append('=');
+        sb.append(((this.isCleartext == null)?"<null>":this.isCleartext));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.session == null)? 0 :this.session.hashCode()));
+        result = ((result* 31)+((this.certificate == null)? 0 :this.certificate.hashCode()));
+        result = ((result* 31)+((this.dstEndpoint == null)? 0 :this.dstEndpoint.hashCode()));
+        result = ((result* 31)+((this.srcEndpoint == null)? 0 :this.srcEndpoint.hashCode()));
+        result = ((result* 31)+((this.rawDataHash == null)? 0 :this.rawDataHash.hashCode()));
+        result = ((result* 31)+((this.logonProcess == null)? 0 :this.logonProcess.hashCode()));
+        result = ((result* 31)+((this.logonTypeId == null)? 0 :this.logonTypeId.hashCode()));
+        result = ((result* 31)+((this.httpRequest == null)? 0 :this.httpRequest.hashCode()));
+        result = ((result* 31)+((this.accountSwitchType == null)? 0 :this.accountSwitchType.hashCode()));
+        result = ((result* 31)+((this.authProtocolId == null)? 0 :this.authProtocolId.hashCode()));
+        result = ((result* 31)+((this.accountSwitchTypeId == null)? 0 :this.accountSwitchTypeId.hashCode()));
+        result = ((result* 31)+((this.isMfa == null)? 0 :this.isMfa.hashCode()));
+        result = ((result* 31)+((this.rawDataSize == null)? 0 :this.rawDataSize.hashCode()));
+        result = ((result* 31)+((this.authFactors == null)? 0 :this.authFactors.hashCode()));
+        result = ((result* 31)+((this.isRemote == null)? 0 :this.isRemote.hashCode()));
+        result = ((result* 31)+((this.authProtocol == null)? 0 :this.authProtocol.hashCode()));
+        result = ((result* 31)+((this.isNewLogon == null)? 0 :this.isNewLogon.hashCode()));
+        result = ((result* 31)+((this.authenticationToken == null)? 0 :this.authenticationToken.hashCode()));
+        result = ((result* 31)+((this.actor == null)? 0 :this.actor.hashCode()));
+        result = ((result* 31)+((this.service == null)? 0 :this.service.hashCode()));
+        result = ((result* 31)+((this.isCleartext == null)? 0 :this.isCleartext.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.httpResponse == null)? 0 :this.httpResponse.hashCode()));
+        result = ((result* 31)+((this.user == null)? 0 :this.user.hashCode()));
+        result = ((result* 31)+((this.enrichments == null)? 0 :this.enrichments.hashCode()));
+        result = ((result* 31)+((this.logonType == null)? 0 :this.logonType.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Authentication) == false) {
+            return false;
+        }
+        Authentication rhs = ((Authentication) other);
+        return (((((((((((((((((((((((((((this.session == rhs.session)||((this.session!= null)&&this.session.equals(rhs.session)))&&((this.certificate == rhs.certificate)||((this.certificate!= null)&&this.certificate.equals(rhs.certificate))))&&((this.dstEndpoint == rhs.dstEndpoint)||((this.dstEndpoint!= null)&&this.dstEndpoint.equals(rhs.dstEndpoint))))&&((this.srcEndpoint == rhs.srcEndpoint)||((this.srcEndpoint!= null)&&this.srcEndpoint.equals(rhs.srcEndpoint))))&&((this.rawDataHash == [...]
+    }
+
+    public static class AuthenticationBuilder
+        extends Authentication.AuthenticationBuilderBase<Authentication>
+    {
+
+
+        public AuthenticationBuilder() {
+            super();
+        }
+
+        public AuthenticationBuilder(Integer accountSwitchTypeId, Actor actor, Service service, Integer authProtocolId, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, Process logonProcess, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Boolean isMfa, User user, Session session, List<AuthFactor> authFactors, String logonType, NetworkEndpoint dstEndpoint, Certificate certificate, Fingerprint rawDataHash, Integer logonTypeId, Boolean isRemote, Boolean i [...]
+            super(accountSwitchTypeId, actor, service, authProtocolId, rawDataSize, httpResponse, enrichments, logonProcess, httpRequest, srcEndpoint, isMfa, user, session, authFactors, logonType, dstEndpoint, certificate, rawDataHash, logonTypeId, isRemote, isNewLogon, authenticationToken, authProtocol, accountSwitchType, isCleartext);
+        }
+
+    }
+
+    public static abstract class AuthenticationBuilderBase<T extends Authentication >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AuthenticationBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Authentication.AuthenticationBuilder.class)) {
+                this.instance = ((T) new Authentication());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AuthenticationBuilderBase(Integer accountSwitchTypeId, Actor actor, Service service, Integer authProtocolId, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, Process logonProcess, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Boolean isMfa, User user, Session session, List<AuthFactor> authFactors, String logonType, NetworkEndpoint dstEndpoint, Certificate certificate, Fingerprint rawDataHash, Integer logonTypeId, Boolean isRemote, Boole [...]
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Authentication.AuthenticationBuilder.class)) {
+                this.instance = ((T) new Authentication(accountSwitchTypeId, actor, service, authProtocolId, rawDataSize, httpResponse, enrichments, logonProcess, httpRequest, srcEndpoint, isMfa, user, session, authFactors, logonType, dstEndpoint, certificate, rawDataHash, logonTypeId, isRemote, isNewLogon, authenticationToken, authProtocol, accountSwitchType, isCleartext));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAccountSwitchTypeId(Integer accountSwitchTypeId) {
+            ((Authentication) this.instance).accountSwitchTypeId = accountSwitchTypeId;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withActor(Actor actor) {
+            ((Authentication) this.instance).actor = actor;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withService(Service service) {
+            ((Authentication) this.instance).service = service;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAuthProtocolId(Integer authProtocolId) {
+            ((Authentication) this.instance).authProtocolId = authProtocolId;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withRawDataSize(Integer rawDataSize) {
+            ((Authentication) this.instance).rawDataSize = rawDataSize;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withHttpResponse(HttpResponse httpResponse) {
+            ((Authentication) this.instance).httpResponse = httpResponse;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withEnrichments(List<Enrichment> enrichments) {
+            ((Authentication) this.instance).enrichments = enrichments;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withLogonProcess(Process logonProcess) {
+            ((Authentication) this.instance).logonProcess = logonProcess;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withHttpRequest(HttpRequest httpRequest) {
+            ((Authentication) this.instance).httpRequest = httpRequest;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withSrcEndpoint(NetworkEndpoint srcEndpoint) {
+            ((Authentication) this.instance).srcEndpoint = srcEndpoint;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withIsMfa(Boolean isMfa) {
+            ((Authentication) this.instance).isMfa = isMfa;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withUser(User user) {
+            ((Authentication) this.instance).user = user;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withSession(Session session) {
+            ((Authentication) this.instance).session = session;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAuthFactors(List<AuthFactor> authFactors) {
+            ((Authentication) this.instance).authFactors = authFactors;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withLogonType(String logonType) {
+            ((Authentication) this.instance).logonType = logonType;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withDstEndpoint(NetworkEndpoint dstEndpoint) {
+            ((Authentication) this.instance).dstEndpoint = dstEndpoint;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withCertificate(Certificate certificate) {
+            ((Authentication) this.instance).certificate = certificate;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withRawDataHash(Fingerprint rawDataHash) {
+            ((Authentication) this.instance).rawDataHash = rawDataHash;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withLogonTypeId(Integer logonTypeId) {
+            ((Authentication) this.instance).logonTypeId = logonTypeId;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withIsRemote(Boolean isRemote) {
+            ((Authentication) this.instance).isRemote = isRemote;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withIsNewLogon(Boolean isNewLogon) {
+            ((Authentication) this.instance).isNewLogon = isNewLogon;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAuthenticationToken(AuthenticationToken authenticationToken) {
+            ((Authentication) this.instance).authenticationToken = authenticationToken;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAuthProtocol(String authProtocol) {
+            ((Authentication) this.instance).authProtocol = authProtocol;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAccountSwitchType(String accountSwitchType) {
+            ((Authentication) this.instance).accountSwitchType = accountSwitchType;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withIsCleartext(Boolean isCleartext) {
+            ((Authentication) this.instance).isCleartext = isCleartext;
+            return this;
+        }
+
+        public Authentication.AuthenticationBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Authentication) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthenticationToken.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthenticationToken.java
new file mode 100644
index 000000000000..0e4ec75a716c
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthenticationToken.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AuthenticationToken {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AuthenticationToken.AuthenticationTokenBuilderBase builder() {
+        return new AuthenticationToken.AuthenticationTokenBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AuthenticationToken.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AuthenticationToken) == false) {
+            return false;
+        }
+        AuthenticationToken rhs = ((AuthenticationToken) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AuthenticationTokenBuilder
+        extends AuthenticationToken.AuthenticationTokenBuilderBase<AuthenticationToken>
+    {
+
+
+        public AuthenticationTokenBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AuthenticationTokenBuilderBase<T extends AuthenticationToken >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AuthenticationTokenBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AuthenticationToken.AuthenticationTokenBuilder.class)) {
+                this.instance = ((T) new AuthenticationToken());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AuthenticationToken.AuthenticationTokenBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AuthenticationToken) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authorization.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authorization.java
new file mode 100644
index 000000000000..d4659b7fe736
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Authorization.java
@@ -0,0 +1,230 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Authorization
+ * <p>
+ * The Authorization Result object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "decision",
+    "policy"
+})
+@Generated("jsonschema2pojo")
+public class Authorization {
+
+    /**
+     * Authorization Decision/Outcome
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("decision")
+    private String decision;
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    @JsonPropertyDescription("The Policy object.")
+    private Policy policy;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Authorization() {
+    }
+
+    /**
+     * 
+     * @param decision
+     *     Authorization Decision/Outcome.
+     */
+    public Authorization(String decision, Policy policy) {
+        super();
+        this.decision = decision;
+        this.policy = policy;
+    }
+
+    public static Authorization.AuthorizationBuilderBase builder() {
+        return new Authorization.AuthorizationBuilder();
+    }
+
+    /**
+     * Authorization Decision/Outcome
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("decision")
+    public String getDecision() {
+        return decision;
+    }
+
+    /**
+     * Authorization Decision/Outcome
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("decision")
+    public void setDecision(String decision) {
+        this.decision = decision;
+    }
+
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    public Policy getPolicy() {
+        return policy;
+    }
+
+    /**
+     * Policy
+     * <p>
+     * The Policy object.
+     * 
+     */
+    @JsonProperty("policy")
+    public void setPolicy(Policy policy) {
+        this.policy = policy;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Authorization.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("decision");
+        sb.append('=');
+        sb.append(((this.decision == null)?"<null>":this.decision));
+        sb.append(',');
+        sb.append("policy");
+        sb.append('=');
+        sb.append(((this.policy == null)?"<null>":this.policy));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.decision == null)? 0 :this.decision.hashCode()));
+        result = ((result* 31)+((this.policy == null)? 0 :this.policy.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Authorization) == false) {
+            return false;
+        }
+        Authorization rhs = ((Authorization) other);
+        return ((((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)))&&((this.decision == rhs.decision)||((this.decision!= null)&&this.decision.equals(rhs.decision))))&&((this.policy == rhs.policy)||((this.policy!= null)&&this.policy.equals(rhs.policy))));
+    }
+
+    public static class AuthorizationBuilder
+        extends Authorization.AuthorizationBuilderBase<Authorization>
+    {
+
+
+        public AuthorizationBuilder() {
+            super();
+        }
+
+        public AuthorizationBuilder(String decision, Policy policy) {
+            super(decision, policy);
+        }
+
+    }
+
+    public static abstract class AuthorizationBuilderBase<T extends Authorization >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AuthorizationBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Authorization.AuthorizationBuilder.class)) {
+                this.instance = ((T) new Authorization());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AuthorizationBuilderBase(String decision, Policy policy) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Authorization.AuthorizationBuilder.class)) {
+                this.instance = ((T) new Authorization(decision, policy));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Authorization.AuthorizationBuilderBase withDecision(String decision) {
+            ((Authorization) this.instance).decision = decision;
+            return this;
+        }
+
+        public Authorization.AuthorizationBuilderBase withPolicy(Policy policy) {
+            ((Authorization) this.instance).policy = policy;
+            return this;
+        }
+
+        public Authorization.AuthorizationBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Authorization) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthorizeSession.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthorizeSession.java
new file mode 100644
index 000000000000..418b10005424
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AuthorizeSession.java
@@ -0,0 +1,654 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyDescription;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * AuthorizeSession
+ * <p>
+ * AuthorizeSession event class.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "privileges",
+    "actor",
+    "raw_data_size",
+    "http_response",
+    "enrichments",
+    "http_request",
+    "src_endpoint",
+    "group",
+    "user",
+    "session",
+    "dst_endpoint",
+    "raw_data_hash"
+})
+@Generated("jsonschema2pojo")
+public class AuthorizeSession {
+
+    /**
+     * Privileges
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("privileges")
+    private List<String> privileges = new ArrayList<String>();
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    @JsonPropertyDescription("The Actor object.")
+    private Actor actor;
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    private Integer rawDataSize;
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    @JsonPropertyDescription("The HTTP Response object.")
+    private HttpResponse httpResponse;
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    @JsonPropertyDescription("")
+    private List<Enrichment> enrichments = new ArrayList<Enrichment>();
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    @JsonPropertyDescription("The HTTP Request object.")
+    private HttpRequest httpRequest;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint srcEndpoint;
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    @JsonPropertyDescription("The Group object.")
+    private Group group;
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    @JsonPropertyDescription("The User object.")
+    private User user;
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    @JsonPropertyDescription("The Session object.")
+    private Session session;
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    @JsonPropertyDescription("The Network Endpoint object.")
+    private NetworkEndpoint dstEndpoint;
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    @JsonPropertyDescription("The Fingerprint object.")
+    private Fingerprint rawDataHash;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public AuthorizeSession() {
+    }
+
+    /**
+     * 
+     * @param privileges
+     *     Privileges.
+     * @param rawDataSize
+     *     Raw Data Size.
+     */
+    public AuthorizeSession(List<String> privileges, Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Group group, User user, Session session, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+        super();
+        this.privileges = privileges;
+        this.actor = actor;
+        this.rawDataSize = rawDataSize;
+        this.httpResponse = httpResponse;
+        this.enrichments = enrichments;
+        this.httpRequest = httpRequest;
+        this.srcEndpoint = srcEndpoint;
+        this.group = group;
+        this.user = user;
+        this.session = session;
+        this.dstEndpoint = dstEndpoint;
+        this.rawDataHash = rawDataHash;
+    }
+
+    public static AuthorizeSession.AuthorizeSessionBuilderBase builder() {
+        return new AuthorizeSession.AuthorizeSessionBuilder();
+    }
+
+    /**
+     * Privileges
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("privileges")
+    public List<String> getPrivileges() {
+        return privileges;
+    }
+
+    /**
+     * Privileges
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("privileges")
+    public void setPrivileges(List<String> privileges) {
+        this.privileges = privileges;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public Actor getActor() {
+        return actor;
+    }
+
+    /**
+     * Actor
+     * <p>
+     * The Actor object.
+     * 
+     */
+    @JsonProperty("actor")
+    public void setActor(Actor actor) {
+        this.actor = actor;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public Integer getRawDataSize() {
+        return rawDataSize;
+    }
+
+    /**
+     * Raw Data Size
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("raw_data_size")
+    public void setRawDataSize(Integer rawDataSize) {
+        this.rawDataSize = rawDataSize;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public HttpResponse getHttpResponse() {
+        return httpResponse;
+    }
+
+    /**
+     * HttpResponse
+     * <p>
+     * The HTTP Response object.
+     * 
+     */
+    @JsonProperty("http_response")
+    public void setHttpResponse(HttpResponse httpResponse) {
+        this.httpResponse = httpResponse;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public List<Enrichment> getEnrichments() {
+        return enrichments;
+    }
+
+    /**
+     * 
+     */
+    @JsonProperty("enrichments")
+    public void setEnrichments(List<Enrichment> enrichments) {
+        this.enrichments = enrichments;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public HttpRequest getHttpRequest() {
+        return httpRequest;
+    }
+
+    /**
+     * HttpRequest
+     * <p>
+     * The HTTP Request object.
+     * 
+     */
+    @JsonProperty("http_request")
+    public void setHttpRequest(HttpRequest httpRequest) {
+        this.httpRequest = httpRequest;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public NetworkEndpoint getSrcEndpoint() {
+        return srcEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("src_endpoint")
+    public void setSrcEndpoint(NetworkEndpoint srcEndpoint) {
+        this.srcEndpoint = srcEndpoint;
+    }
+
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    public Group getGroup() {
+        return group;
+    }
+
+    /**
+     * Group
+     * <p>
+     * The Group object.
+     * 
+     */
+    @JsonProperty("group")
+    public void setGroup(Group group) {
+        this.group = group;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public User getUser() {
+        return user;
+    }
+
+    /**
+     * User
+     * <p>
+     * The User object.
+     * 
+     */
+    @JsonProperty("user")
+    public void setUser(User user) {
+        this.user = user;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public Session getSession() {
+        return session;
+    }
+
+    /**
+     * Session
+     * <p>
+     * The Session object.
+     * 
+     */
+    @JsonProperty("session")
+    public void setSession(Session session) {
+        this.session = session;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public NetworkEndpoint getDstEndpoint() {
+        return dstEndpoint;
+    }
+
+    /**
+     * NetworkEndpoint
+     * <p>
+     * The Network Endpoint object.
+     * 
+     */
+    @JsonProperty("dst_endpoint")
+    public void setDstEndpoint(NetworkEndpoint dstEndpoint) {
+        this.dstEndpoint = dstEndpoint;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public Fingerprint getRawDataHash() {
+        return rawDataHash;
+    }
+
+    /**
+     * Fingerprint
+     * <p>
+     * The Fingerprint object.
+     * 
+     */
+    @JsonProperty("raw_data_hash")
+    public void setRawDataHash(Fingerprint rawDataHash) {
+        this.rawDataHash = rawDataHash;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AuthorizeSession.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("privileges");
+        sb.append('=');
+        sb.append(((this.privileges == null)?"<null>":this.privileges));
+        sb.append(',');
+        sb.append("actor");
+        sb.append('=');
+        sb.append(((this.actor == null)?"<null>":this.actor));
+        sb.append(',');
+        sb.append("rawDataSize");
+        sb.append('=');
+        sb.append(((this.rawDataSize == null)?"<null>":this.rawDataSize));
+        sb.append(',');
+        sb.append("httpResponse");
+        sb.append('=');
+        sb.append(((this.httpResponse == null)?"<null>":this.httpResponse));
+        sb.append(',');
+        sb.append("enrichments");
+        sb.append('=');
+        sb.append(((this.enrichments == null)?"<null>":this.enrichments));
+        sb.append(',');
+        sb.append("httpRequest");
+        sb.append('=');
+        sb.append(((this.httpRequest == null)?"<null>":this.httpRequest));
+        sb.append(',');
+        sb.append("srcEndpoint");
+        sb.append('=');
+        sb.append(((this.srcEndpoint == null)?"<null>":this.srcEndpoint));
+        sb.append(',');
+        sb.append("group");
+        sb.append('=');
+        sb.append(((this.group == null)?"<null>":this.group));
+        sb.append(',');
+        sb.append("user");
+        sb.append('=');
+        sb.append(((this.user == null)?"<null>":this.user));
+        sb.append(',');
+        sb.append("session");
+        sb.append('=');
+        sb.append(((this.session == null)?"<null>":this.session));
+        sb.append(',');
+        sb.append("dstEndpoint");
+        sb.append('=');
+        sb.append(((this.dstEndpoint == null)?"<null>":this.dstEndpoint));
+        sb.append(',');
+        sb.append("rawDataHash");
+        sb.append('=');
+        sb.append(((this.rawDataHash == null)?"<null>":this.rawDataHash));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.privileges == null)? 0 :this.privileges.hashCode()));
+        result = ((result* 31)+((this.rawDataSize == null)? 0 :this.rawDataSize.hashCode()));
+        result = ((result* 31)+((this.session == null)? 0 :this.session.hashCode()));
+        result = ((result* 31)+((this.dstEndpoint == null)? 0 :this.dstEndpoint.hashCode()));
+        result = ((result* 31)+((this.actor == null)? 0 :this.actor.hashCode()));
+        result = ((result* 31)+((this.srcEndpoint == null)? 0 :this.srcEndpoint.hashCode()));
+        result = ((result* 31)+((this.rawDataHash == null)? 0 :this.rawDataHash.hashCode()));
+        result = ((result* 31)+((this.httpRequest == null)? 0 :this.httpRequest.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.httpResponse == null)? 0 :this.httpResponse.hashCode()));
+        result = ((result* 31)+((this.user == null)? 0 :this.user.hashCode()));
+        result = ((result* 31)+((this.enrichments == null)? 0 :this.enrichments.hashCode()));
+        result = ((result* 31)+((this.group == null)? 0 :this.group.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AuthorizeSession) == false) {
+            return false;
+        }
+        AuthorizeSession rhs = ((AuthorizeSession) other);
+        return ((((((((((((((this.privileges == rhs.privileges)||((this.privileges!= null)&&this.privileges.equals(rhs.privileges)))&&((this.rawDataSize == rhs.rawDataSize)||((this.rawDataSize!= null)&&this.rawDataSize.equals(rhs.rawDataSize))))&&((this.session == rhs.session)||((this.session!= null)&&this.session.equals(rhs.session))))&&((this.dstEndpoint == rhs.dstEndpoint)||((this.dstEndpoint!= null)&&this.dstEndpoint.equals(rhs.dstEndpoint))))&&((this.actor == rhs.actor)||((this.acto [...]
+    }
+
+    public static class AuthorizeSessionBuilder
+        extends AuthorizeSession.AuthorizeSessionBuilderBase<AuthorizeSession>
+    {
+
+
+        public AuthorizeSessionBuilder() {
+            super();
+        }
+
+        public AuthorizeSessionBuilder(List<String> privileges, Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Group group, User user, Session session, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+            super(privileges, actor, rawDataSize, httpResponse, enrichments, httpRequest, srcEndpoint, group, user, session, dstEndpoint, rawDataHash);
+        }
+
+    }
+
+    public static abstract class AuthorizeSessionBuilderBase<T extends AuthorizeSession >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AuthorizeSessionBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AuthorizeSession.AuthorizeSessionBuilder.class)) {
+                this.instance = ((T) new AuthorizeSession());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public AuthorizeSessionBuilderBase(List<String> privileges, Actor actor, Integer rawDataSize, HttpResponse httpResponse, List<Enrichment> enrichments, HttpRequest httpRequest, NetworkEndpoint srcEndpoint, Group group, User user, Session session, NetworkEndpoint dstEndpoint, Fingerprint rawDataHash) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AuthorizeSession.AuthorizeSessionBuilder.class)) {
+                this.instance = ((T) new AuthorizeSession(privileges, actor, rawDataSize, httpResponse, enrichments, httpRequest, srcEndpoint, group, user, session, dstEndpoint, rawDataHash));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withPrivileges(List<String> privileges) {
+            ((AuthorizeSession) this.instance).privileges = privileges;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withActor(Actor actor) {
+            ((AuthorizeSession) this.instance).actor = actor;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withRawDataSize(Integer rawDataSize) {
+            ((AuthorizeSession) this.instance).rawDataSize = rawDataSize;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withHttpResponse(HttpResponse httpResponse) {
+            ((AuthorizeSession) this.instance).httpResponse = httpResponse;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withEnrichments(List<Enrichment> enrichments) {
+            ((AuthorizeSession) this.instance).enrichments = enrichments;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withHttpRequest(HttpRequest httpRequest) {
+            ((AuthorizeSession) this.instance).httpRequest = httpRequest;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withSrcEndpoint(NetworkEndpoint srcEndpoint) {
+            ((AuthorizeSession) this.instance).srcEndpoint = srcEndpoint;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withGroup(Group group) {
+            ((AuthorizeSession) this.instance).group = group;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withUser(User user) {
+            ((AuthorizeSession) this.instance).user = user;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withSession(Session session) {
+            ((AuthorizeSession) this.instance).session = session;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withDstEndpoint(NetworkEndpoint dstEndpoint) {
+            ((AuthorizeSession) this.instance).dstEndpoint = dstEndpoint;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withRawDataHash(Fingerprint rawDataHash) {
+            ((AuthorizeSession) this.instance).rawDataHash = rawDataHash;
+            return this;
+        }
+
+        public AuthorizeSession.AuthorizeSessionBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AuthorizeSession) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AutonomousSystem.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AutonomousSystem.java
new file mode 100644
index 000000000000..3e5d8452d6d5
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AutonomousSystem.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AutonomousSystem {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AutonomousSystem.AutonomousSystemBuilderBase builder() {
+        return new AutonomousSystem.AutonomousSystemBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AutonomousSystem.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AutonomousSystem) == false) {
+            return false;
+        }
+        AutonomousSystem rhs = ((AutonomousSystem) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AutonomousSystemBuilder
+        extends AutonomousSystem.AutonomousSystemBuilderBase<AutonomousSystem>
+    {
+
+
+        public AutonomousSystemBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AutonomousSystemBuilderBase<T extends AutonomousSystem >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AutonomousSystemBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AutonomousSystem.AutonomousSystemBuilder.class)) {
+                this.instance = ((T) new AutonomousSystem());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AutonomousSystem.AutonomousSystemBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AutonomousSystem) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AvgTimespan.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AvgTimespan.java
new file mode 100644
index 000000000000..5f337c7d4d67
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/AvgTimespan.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class AvgTimespan {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static AvgTimespan.AvgTimespanBuilderBase builder() {
+        return new AvgTimespan.AvgTimespanBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(AvgTimespan.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof AvgTimespan) == false) {
+            return false;
+        }
+        AvgTimespan rhs = ((AvgTimespan) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class AvgTimespanBuilder
+        extends AvgTimespan.AvgTimespanBuilderBase<AvgTimespan>
+    {
+
+
+        public AvgTimespanBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class AvgTimespanBuilderBase<T extends AvgTimespan >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public AvgTimespanBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(AvgTimespan.AvgTimespanBuilder.class)) {
+                this.instance = ((T) new AvgTimespan());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public AvgTimespan.AvgTimespanBuilderBase withAdditionalProperty(String name, Object value) {
+            ((AvgTimespan) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CategoryId.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CategoryId.java
new file mode 100644
index 000000000000..62dcddb4ed3f
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CategoryId.java
@@ -0,0 +1,128 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonCreator;
+import com.fasterxml.jackson.annotation.JsonValue;
+
+@Generated("jsonschema2pojo")
+public enum CategoryId {
+
+    _5(5),
+    _83(83),
+    _35(35),
+    _6(6),
+    _93(93),
+    _65(65),
+    _64(64),
+    _11(11),
+    _49(49),
+    _32(32),
+    _51(51),
+    _27(27),
+    _97(97),
+    _66(66),
+    _50(50),
+    _96(96),
+    _86(86),
+    _98(98),
+    _52(52),
+    _25(25),
+    _38(38),
+    _85(85),
+    _110(110),
+    _23(23),
+    _29(29),
+    _118(118),
+    _53(53),
+    _56(56),
+    _3(3),
+    _36(36),
+    _17(17),
+    _9(9),
+    _63(63),
+    _89(89),
+    _112(112),
+    _121(121),
+    _44(44),
+    _107(107),
+    _68(68),
+    _33(33),
+    _92(92),
+    _114(114),
+    _106(106),
+    _45(45),
+    _108(108),
+    _55(55),
+    _84(84),
+    _101(101),
+    _111(111),
+    _87(87),
+    _4(4),
+    _0(0),
+    _15(15),
+    _88(88),
+    _20(20),
+    _40(40),
+    _18(18),
+    _71(71),
+    _61(61),
+    _30(30),
+    _22(22),
+    _47(47),
+    _14(14),
+    _59(59),
+    _58(58),
+    _60(60),
+    _95(95),
+    _113(113),
+    _16(16),
+    _54(54),
+    _46(46),
+    _67(67),
+    _103(103),
+    _24(24),
+    _57(57),
+    _109(109),
+    _102(102),
+    _7(7),
+    _99(99),
+    _34(34),
+    _26(26),
+    _43(43),
+    _90(90),
+    _37(37),
+    _31(31),
+    _21(21),
+    _1(1);
+    private final Integer value;
+    private final static Map<Integer, CategoryId> CONSTANTS = new HashMap<Integer, CategoryId>();
+
+    static {
+        for (CategoryId c: values()) {
+            CONSTANTS.put(c.value, c);
+        }
+    }
+
+    CategoryId(Integer value) {
+        this.value = value;
+    }
+
+    @JsonValue
+    public Integer value() {
+        return this.value;
+    }
+
+    @JsonCreator
+    public static CategoryId fromValue(Integer value) {
+        CategoryId constant = CONSTANTS.get(value);
+        if (constant == null) {
+            throw new IllegalArgumentException((value +""));
+        } else {
+            return constant;
+        }
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Certificate.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Certificate.java
new file mode 100644
index 000000000000..290c207ad39e
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Certificate.java
@@ -0,0 +1,584 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.ArrayList;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+
+/**
+ * Certificate
+ * <p>
+ * The Digital Certificate object.
+ * 
+ */
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+    "version",
+    "uid",
+    "is_self_signed",
+    "subject",
+    "issuer",
+    "fingerprints",
+    "created_time",
+    "expiration_time",
+    "sans",
+    "serial_number"
+})
+@Generated("jsonschema2pojo")
+public class Certificate {
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    private String version;
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    private String uid;
+    /**
+     * Certificate Self-Signed
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_self_signed")
+    private Boolean isSelfSigned;
+    /**
+     * Subject Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("subject")
+    private String subject;
+    /**
+     * Issuer Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("issuer")
+    private String issuer;
+    /**
+     * Fingerprints
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("fingerprints")
+    private List<Fingerprint> fingerprints = new ArrayList<Fingerprint>();
+    /**
+     * Created Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("created_time")
+    private Integer createdTime;
+    /**
+     * Expiration Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("expiration_time")
+    private Integer expirationTime;
+    /**
+     * Subject Alternative Names
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("sans")
+    private List<San> sans = new ArrayList<San>();
+    /**
+     * Certificate Serial Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("serial_number")
+    private String serialNumber;
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    /**
+     * No args constructor for use in serialization
+     * 
+     */
+    public Certificate() {
+    }
+
+    /**
+     * 
+     * @param uid
+     *     Unique ID.
+     * @param serialNumber
+     *     Certificate Serial Number.
+     * @param subject
+     *     Subject Distinguished Name.
+     * @param expirationTime
+     *     Expiration Time.
+     * @param sans
+     *     Subject Alternative Names.
+     * @param createdTime
+     *     Created Time.
+     * @param version
+     *     Version.
+     * @param issuer
+     *     Issuer Distinguished Name.
+     * @param isSelfSigned
+     *     Certificate Self-Signed.
+     * @param fingerprints
+     *     Fingerprints.
+     */
+    public Certificate(String version, String uid, Boolean isSelfSigned, String subject, String issuer, List<Fingerprint> fingerprints, Integer createdTime, Integer expirationTime, List<San> sans, String serialNumber) {
+        super();
+        this.version = version;
+        this.uid = uid;
+        this.isSelfSigned = isSelfSigned;
+        this.subject = subject;
+        this.issuer = issuer;
+        this.fingerprints = fingerprints;
+        this.createdTime = createdTime;
+        this.expirationTime = expirationTime;
+        this.sans = sans;
+        this.serialNumber = serialNumber;
+    }
+
+    public static Certificate.CertificateBuilderBase builder() {
+        return new Certificate.CertificateBuilder();
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public String getVersion() {
+        return version;
+    }
+
+    /**
+     * Version
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("version")
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public String getUid() {
+        return uid;
+    }
+
+    /**
+     * Unique ID
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("uid")
+    public void setUid(String uid) {
+        this.uid = uid;
+    }
+
+    /**
+     * Certificate Self-Signed
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_self_signed")
+    public Boolean getIsSelfSigned() {
+        return isSelfSigned;
+    }
+
+    /**
+     * Certificate Self-Signed
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("is_self_signed")
+    public void setIsSelfSigned(Boolean isSelfSigned) {
+        this.isSelfSigned = isSelfSigned;
+    }
+
+    /**
+     * Subject Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("subject")
+    public String getSubject() {
+        return subject;
+    }
+
+    /**
+     * Subject Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("subject")
+    public void setSubject(String subject) {
+        this.subject = subject;
+    }
+
+    /**
+     * Issuer Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("issuer")
+    public String getIssuer() {
+        return issuer;
+    }
+
+    /**
+     * Issuer Distinguished Name
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("issuer")
+    public void setIssuer(String issuer) {
+        this.issuer = issuer;
+    }
+
+    /**
+     * Fingerprints
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("fingerprints")
+    public List<Fingerprint> getFingerprints() {
+        return fingerprints;
+    }
+
+    /**
+     * Fingerprints
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("fingerprints")
+    public void setFingerprints(List<Fingerprint> fingerprints) {
+        this.fingerprints = fingerprints;
+    }
+
+    /**
+     * Created Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("created_time")
+    public Integer getCreatedTime() {
+        return createdTime;
+    }
+
+    /**
+     * Created Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("created_time")
+    public void setCreatedTime(Integer createdTime) {
+        this.createdTime = createdTime;
+    }
+
+    /**
+     * Expiration Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("expiration_time")
+    public Integer getExpirationTime() {
+        return expirationTime;
+    }
+
+    /**
+     * Expiration Time
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("expiration_time")
+    public void setExpirationTime(Integer expirationTime) {
+        this.expirationTime = expirationTime;
+    }
+
+    /**
+     * Subject Alternative Names
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("sans")
+    public List<San> getSans() {
+        return sans;
+    }
+
+    /**
+     * Subject Alternative Names
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("sans")
+    public void setSans(List<San> sans) {
+        this.sans = sans;
+    }
+
+    /**
+     * Certificate Serial Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("serial_number")
+    public String getSerialNumber() {
+        return serialNumber;
+    }
+
+    /**
+     * Certificate Serial Number
+     * <p>
+     * 
+     * 
+     */
+    @JsonProperty("serial_number")
+    public void setSerialNumber(String serialNumber) {
+        this.serialNumber = serialNumber;
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Certificate.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("version");
+        sb.append('=');
+        sb.append(((this.version == null)?"<null>":this.version));
+        sb.append(',');
+        sb.append("uid");
+        sb.append('=');
+        sb.append(((this.uid == null)?"<null>":this.uid));
+        sb.append(',');
+        sb.append("isSelfSigned");
+        sb.append('=');
+        sb.append(((this.isSelfSigned == null)?"<null>":this.isSelfSigned));
+        sb.append(',');
+        sb.append("subject");
+        sb.append('=');
+        sb.append(((this.subject == null)?"<null>":this.subject));
+        sb.append(',');
+        sb.append("issuer");
+        sb.append('=');
+        sb.append(((this.issuer == null)?"<null>":this.issuer));
+        sb.append(',');
+        sb.append("fingerprints");
+        sb.append('=');
+        sb.append(((this.fingerprints == null)?"<null>":this.fingerprints));
+        sb.append(',');
+        sb.append("createdTime");
+        sb.append('=');
+        sb.append(((this.createdTime == null)?"<null>":this.createdTime));
+        sb.append(',');
+        sb.append("expirationTime");
+        sb.append('=');
+        sb.append(((this.expirationTime == null)?"<null>":this.expirationTime));
+        sb.append(',');
+        sb.append("sans");
+        sb.append('=');
+        sb.append(((this.sans == null)?"<null>":this.sans));
+        sb.append(',');
+        sb.append("serialNumber");
+        sb.append('=');
+        sb.append(((this.serialNumber == null)?"<null>":this.serialNumber));
+        sb.append(',');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.uid == null)? 0 :this.uid.hashCode()));
+        result = ((result* 31)+((this.serialNumber == null)? 0 :this.serialNumber.hashCode()));
+        result = ((result* 31)+((this.subject == null)? 0 :this.subject.hashCode()));
+        result = ((result* 31)+((this.expirationTime == null)? 0 :this.expirationTime.hashCode()));
+        result = ((result* 31)+((this.sans == null)? 0 :this.sans.hashCode()));
+        result = ((result* 31)+((this.createdTime == null)? 0 :this.createdTime.hashCode()));
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        result = ((result* 31)+((this.version == null)? 0 :this.version.hashCode()));
+        result = ((result* 31)+((this.issuer == null)? 0 :this.issuer.hashCode()));
+        result = ((result* 31)+((this.isSelfSigned == null)? 0 :this.isSelfSigned.hashCode()));
+        result = ((result* 31)+((this.fingerprints == null)? 0 :this.fingerprints.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Certificate) == false) {
+            return false;
+        }
+        Certificate rhs = ((Certificate) other);
+        return ((((((((((((this.uid == rhs.uid)||((this.uid!= null)&&this.uid.equals(rhs.uid)))&&((this.serialNumber == rhs.serialNumber)||((this.serialNumber!= null)&&this.serialNumber.equals(rhs.serialNumber))))&&((this.subject == rhs.subject)||((this.subject!= null)&&this.subject.equals(rhs.subject))))&&((this.expirationTime == rhs.expirationTime)||((this.expirationTime!= null)&&this.expirationTime.equals(rhs.expirationTime))))&&((this.sans == rhs.sans)||((this.sans!= null)&&this.sans [...]
+    }
+
+    public static class CertificateBuilder
+        extends Certificate.CertificateBuilderBase<Certificate>
+    {
+
+
+        public CertificateBuilder() {
+            super();
+        }
+
+        public CertificateBuilder(String version, String uid, Boolean isSelfSigned, String subject, String issuer, List<Fingerprint> fingerprints, Integer createdTime, Integer expirationTime, List<San> sans, String serialNumber) {
+            super(version, uid, isSelfSigned, subject, issuer, fingerprints, createdTime, expirationTime, sans, serialNumber);
+        }
+
+    }
+
+    public static abstract class CertificateBuilderBase<T extends Certificate >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public CertificateBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Certificate.CertificateBuilder.class)) {
+                this.instance = ((T) new Certificate());
+            }
+        }
+
+        @SuppressWarnings("unchecked")
+        public CertificateBuilderBase(String version, String uid, Boolean isSelfSigned, String subject, String issuer, List<Fingerprint> fingerprints, Integer createdTime, Integer expirationTime, List<San> sans, String serialNumber) {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Certificate.CertificateBuilder.class)) {
+                this.instance = ((T) new Certificate(version, uid, isSelfSigned, subject, issuer, fingerprints, createdTime, expirationTime, sans, serialNumber));
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Certificate.CertificateBuilderBase withVersion(String version) {
+            ((Certificate) this.instance).version = version;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withUid(String uid) {
+            ((Certificate) this.instance).uid = uid;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withIsSelfSigned(Boolean isSelfSigned) {
+            ((Certificate) this.instance).isSelfSigned = isSelfSigned;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withSubject(String subject) {
+            ((Certificate) this.instance).subject = subject;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withIssuer(String issuer) {
+            ((Certificate) this.instance).issuer = issuer;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withFingerprints(List<Fingerprint> fingerprints) {
+            ((Certificate) this.instance).fingerprints = fingerprints;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withCreatedTime(Integer createdTime) {
+            ((Certificate) this.instance).createdTime = createdTime;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withExpirationTime(Integer expirationTime) {
+            ((Certificate) this.instance).expirationTime = expirationTime;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withSans(List<San> sans) {
+            ((Certificate) this.instance).sans = sans;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withSerialNumber(String serialNumber) {
+            ((Certificate) this.instance).serialNumber = serialNumber;
+            return this;
+        }
+
+        public Certificate.CertificateBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Certificate) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Check.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Check.java
new file mode 100644
index 000000000000..e469a9edceeb
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/Check.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class Check {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static Check.CheckBuilderBase builder() {
+        return new Check.CheckBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(Check.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof Check) == false) {
+            return false;
+        }
+        Check rhs = ((Check) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class CheckBuilder
+        extends Check.CheckBuilderBase<Check>
+    {
+
+
+        public CheckBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class CheckBuilderBase<T extends Check >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public CheckBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(Check.CheckBuilder.class)) {
+                this.instance = ((T) new Check());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public Check.CheckBuilderBase withAdditionalProperty(String name, Object value) {
+            ((Check) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisControl.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisControl.java
new file mode 100644
index 000000000000..aa12b04faacd
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisControl.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class CisControl {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static CisControl.CisControlBuilderBase builder() {
+        return new CisControl.CisControlBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(CisControl.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof CisControl) == false) {
+            return false;
+        }
+        CisControl rhs = ((CisControl) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class CisControlBuilder
+        extends CisControl.CisControlBuilderBase<CisControl>
+    {
+
+
+        public CisControlBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class CisControlBuilderBase<T extends CisControl >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public CisControlBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(CisControl.CisControlBuilder.class)) {
+                this.instance = ((T) new CisControl());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public CisControl.CisControlBuilderBase withAdditionalProperty(String name, Object value) {
+            ((CisControl) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
diff --git a/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisCsc.java b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisCsc.java
new file mode 100644
index 000000000000..d9d39f74b9d0
--- /dev/null
+++ b/components/camel-ocsf/src/generated/java/org/apache/camel/dataformat/ocsf/model/CisCsc.java
@@ -0,0 +1,109 @@
+
+package org.apache.camel.dataformat.ocsf.model;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.annotation.processing.Generated;
+import com.fasterxml.jackson.annotation.JsonAnyGetter;
+import com.fasterxml.jackson.annotation.JsonAnySetter;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonPropertyOrder;
+
+@JsonInclude(JsonInclude.Include.NON_NULL)
+@JsonPropertyOrder({
+
+})
+@Generated("jsonschema2pojo")
+public class CisCsc {
+
+    @JsonIgnore
+    private Map<String, Object> additionalProperties = new LinkedHashMap<String, Object>();
+
+    public static CisCsc.CisCscBuilderBase builder() {
+        return new CisCsc.CisCscBuilder();
+    }
+
+    @JsonAnyGetter
+    public Map<String, Object> getAdditionalProperties() {
+        return this.additionalProperties;
+    }
+
+    @JsonAnySetter
+    public void setAdditionalProperty(String name, Object value) {
+        this.additionalProperties.put(name, value);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder sb = new StringBuilder();
+        sb.append(CisCsc.class.getName()).append('@').append(Integer.toHexString(System.identityHashCode(this))).append('[');
+        sb.append("additionalProperties");
+        sb.append('=');
+        sb.append(((this.additionalProperties == null)?"<null>":this.additionalProperties));
+        sb.append(',');
+        if (sb.charAt((sb.length()- 1)) == ',') {
+            sb.setCharAt((sb.length()- 1), ']');
+        } else {
+            sb.append(']');
+        }
+        return sb.toString();
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+        result = ((result* 31)+((this.additionalProperties == null)? 0 :this.additionalProperties.hashCode()));
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (other == this) {
+            return true;
+        }
+        if ((other instanceof CisCsc) == false) {
+            return false;
+        }
+        CisCsc rhs = ((CisCsc) other);
+        return ((this.additionalProperties == rhs.additionalProperties)||((this.additionalProperties!= null)&&this.additionalProperties.equals(rhs.additionalProperties)));
+    }
+
+    public static class CisCscBuilder
+        extends CisCsc.CisCscBuilderBase<CisCsc>
+    {
+
+
+        public CisCscBuilder() {
+            super();
+        }
+
+    }
+
+    public static abstract class CisCscBuilderBase<T extends CisCsc >{
+
+        protected T instance;
+
+        @SuppressWarnings("unchecked")
+        public CisCscBuilderBase() {
+            // Skip initialization when called from subclass
+            if (this.getClass().equals(CisCsc.CisCscBuilder.class)) {
+                this.instance = ((T) new CisCsc());
+            }
+        }
+
+        public T build() {
+            T result;
+            result = this.instance;
+            this.instance = null;
+            return result;
+        }
+
+        public CisCsc.CisCscBuilderBase withAdditionalProperty(String name, Object value) {
+            ((CisCsc) this.instance).additionalProperties.put(name, value);
+            return this;
+        }
+
+    }
+
+}
... 84452 lines suppressed ...