# Building an Integration

- [Directory Layout](https://docs.polarity.io/integrations/build-an-integration/directory-layout.md): Integrations should follow the suggested directory layout to improve readability
- [package.json](https://docs.polarity.io/integrations/build-an-integration/package_json.md)
- [Configuration File](https://docs.polarity.io/integrations/build-an-integration/configuration-file.md): configure your integration and setup options
- [Integration Main Module](https://docs.polarity.io/integrations/build-an-integration/main.md): The integration.js file is the main entry point to your integration on the Polarity server
- [startup](https://docs.polarity.io/integrations/build-an-integration/main/startup.md): Initialize your integration and setup logging
- [doLookup](https://docs.polarity.io/integrations/build-an-integration/main/dolookup.md): Required function which takes entities from the user and returns enriched results
- [Entity Objects](https://docs.polarity.io/integrations/build-an-integration/main/dolookup/entity-objects.md): the dolookup method receives an array of entity objects
- [Result Objects](https://docs.polarity.io/integrations/build-an-integration/main/dolookup/result-objects.md): result objects contain the return data for a specific entity being looked up
- [Error Objects](https://docs.polarity.io/integrations/build-an-integration/main/dolookup/error-objects.md)
- [onDetails](https://docs.polarity.io/integrations/build-an-integration/main/ondetails.md): Run second order queries when a user expands your integration in the Overlay Window
- [onMessage](https://docs.polarity.io/integrations/build-an-integration/main/onmessage.md): Implement interactive two-way communication between your component/template and the server
- [validateOptions](https://docs.polarity.io/integrations/build-an-integration/main/validateoptions.md): validate user options on your integration before they save them
- [Customizing the Overlay Window](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window.md)
- [Templates](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates.md): Use the Handlebars templating language to customize the look of your integration.
- [Conditionals](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates/conditionals.md): conditionally show information in templates using if, unless, and else helpers.
- [Displaying a List of Items](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates/displaying-a-list-of-items.md)
- [Display Object Properties](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates/objects.md)
- [Built-in Helpers](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates/built-in-helpers.md): Handlebars includes a collection of useful built-in helpers to assist with displaying data
- [Displaying Icons](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/templates/displaying-icons.md): Make use of Font Awesome icons in your templates
- [Component File](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/component-file.md): Create computed properties, trigger actions, and add interactive elements to your template
- [Aliased Properties](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/component-file/aliased-properties.md)
- [Computed Properties](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/component-file/computed-properties.md): Define new properties using computed properties
- [Event Hooks](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/component-file/event-hooks.md): Integration relation event hooks
- [CSS Styles](https://docs.polarity.io/integrations/build-an-integration/customizing-the-overlay-window/styles.md): Style your integration with less stylesheets
- [Vendor Javascript](https://docs.polarity.io/integrations/build-an-integration/vendor.md): Vendor files allow you to include third-party resources as part of your integration
- [Inserting Javascript into DOM](https://docs.polarity.io/integrations/build-an-integration/vendor/inserting-javascript-into-dom.md): You can add remote scripts to your integration through the vendor file
- [README Guide](https://docs.polarity.io/integrations/build-an-integration/readme-guide.md)
- [Debugging Integrations](https://docs.polarity.io/integrations/build-an-integration/debugging.md): Tips and tricks to help you debug your integration
- [Web Inspector](https://docs.polarity.io/integrations/build-an-integration/debugging/web-inspector.md): You can enable the Chrome web inspector to help debug and design your integration
- [Using Integration Logs](https://docs.polarity.io/integrations/build-an-integration/debugging/using-integration-logs.md): Logging information from your integration is a great way to debug.
- [Testing Main Module](https://docs.polarity.io/integrations/build-an-integration/debugging/testing-main-module.md): You can run code from main module in isolation for testing purposes


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.polarity.io/integrations/build-an-integration.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
