Community
Questions Library
Docs
Blog
Events
Swag
Github
Slack
JupiterOne
Discussions
Release Notes
Contact Us
Custom Integration - AskJ1 Community
<main> <article class="userContent"> <p>Custom integrations provide a way to add bespoke data to the JupiterOne<br> platform. Custom integrations are perfect for: <br> - Integrating with a provider that does not have an integration with JupiterOne <br> - Integrations that need access to local systems or data <br> - Executing integrations in your own environment</p> <p>Custom integrations can be created with the help of the<br><a rel="nofollow" href="https://github.com/JupiterOne/sdk">open source SDK</a>. For more information on<br> creating integrations see the<br><a rel="nofollow" href="https://github.com/JupiterOne/sdk/blob/main/README.md">SDK README</a> and the <a rel="nofollow" href="https://github.com/JupiterOne/integration-template">integration-template repository</a>.</p> <h2 data-id="configuring-a-custom-integration-in-jupiterone">Configuring a custom integration in JupiterOne</h2> <ol><li>On the <strong>Integrations</strong> page in the JupiterOne app, click the "Custom"<br> integration tile.</li> <li>Provide an Account Name, Description, and any Tags, then click <strong>Create</strong>.</li> <li>At the bottom of the page, click <strong>New API Key</strong>.</li> <li>Copy the API key to use as the <code class="code codeInline" spellcheck="false" tabindex="0">JUPITERONE_API_KEY</code> later and copy the <code class="code codeInline" spellcheck="false" tabindex="0">id</code><br> of the instance to use as the <code class="code codeInline" spellcheck="false" tabindex="0">integrationInstanceId</code> later.</li> </ol><h2 data-id="configuring-the-custom-integration-in-your-environment">Configuring the custom integration in your environment</h2> <p>In the directory where your custom integration is set up,<br> create a <code class="code codeInline" spellcheck="false" tabindex="0">.env</code> file. Add the following to your <code class="code codeInline" spellcheck="false" tabindex="0">.env</code> file from information<br> from the UI.</p> <p>The <code class="code codeInline" spellcheck="false" tabindex="0">JUPITERONE_ACCOUNT</code> ID can found by going to the <strong>Settings Icon</strong> ><br><strong>Account Management</strong> > <strong>Account Id</strong>. The <code class="code codeInline" spellcheck="false" tabindex="0">JUPITERONE_API_KEY</code> comes from the<br> API Key you generated earlier for the custom integration.</p> <pre class="code codeBlock" spellcheck="false" tabindex="0">JUPITERONE_ACCOUNT=05bfb7f6-4dab-4102-bd90-5433b95fc9a9 JUPITERONE_API_KEY=ac323bcb </pre> <p>Then add any other configuration fields your integration needs to run or authenticate.</p> <h2 data-id="executing-the-integration">Executing the integration</h2> <p>To execute a custom integration, run the following command. You can find the<br><code class="code codeInline" spellcheck="false" tabindex="0">integrationInstanceId</code> from the top of the instance details page where you<br> generated the API key.</p> <pre class="code codeBlock" spellcheck="false" tabindex="0">yarn j1-integration run -V --integrationInstanceId c6200b3a-df93-4a61-8ac3-079c96713058 </pre> <p>This will start a new integration job, collect data, and upload it to the JupiterOne platform to be synchronized. It's recommended to use the <code class="code codeInline" spellcheck="false" tabindex="0">-V</code> flag when running jobs to disable entity schema validation.</p> <p>Integration job information will be available in the UI just like a managed integration.</p> <h2 data-id="seeing-the-results">Seeing the results</h2> <p>After your integration has completed and synchronization has finalized you can view the data your integration uploaded with the following J1QL Query. Just replace the id with the id of your custom instance.</p> <pre class="code codeBlock" spellcheck="false" tabindex="0">FIND * with _integrationInstanceId = "c6200b3a-df93-4a61-8ac3-079c96713058" </pre> </article> </main>