Link Search Menu Expand Document

prod

Component Repository

Introduction

The Component Repository stores information about integration components.

API Reference Implementation Service File

Technologies used

How it works

Integration components are lightweight and stand-alone Docker images that include everything needed to run the component, including the component’s code, a runtime, libraries and dependencies. Each component is based on an Open Integration Hub parent image which provides the component runtime. For example, for Java component the parent images provides the JDK and for Node.js component the parent image provides NPM and Node.js.

The component images are stored in a Docker Registry. A Docker Registry is a stateless, highly scalable storage for Docker images. Any open source integration component can be stored and distributed in/from Docker Cloud so that they are available to any Open Integration Hub installation (cloud or on premise) out of the box. For private components, a private Docker Registry can be maintained locally so that no components are exposed to the cloud. Each on premise installation could decide whether to use private repos on Docker Cloud or installing a private Docker Registry on premise for their private components.

Components

A component is described by a JSON document, containing all information required to be used by flows. The two most important parts of a component are the ‘image version’ pulled from dockerhub and its ‘id’ which is used in the flows. For (a minimal) example:

{
  "distribution": {
    "type": "docker",
    "image": "juanspada/shopify:latest"
  },
  "access": "public",
  "isGlobal": true,
  "active": false,
  "name": "shopify",
  "description": "generated connector for shopify",
  "repository": "https://github.com/openintegrationhub/Shopify-Component",
  "maintainer": "",
  "actions": {},
  "triggers": {},
  "owners": [
    {
      "id": "string",
      "type": "user"
    },
    {
      "id": "5f5632f3743e880011fd4b35",
      "type": "user"
    }
  ],
  "createdAt": "2021-03-03T11:51:55.065Z",
  "updatedAt": "2021-03-03T15:18:09.861Z",
  "id": "603f785b9fa556001b96f9b1"
}

For a full overview and more details, please refer to the Schemas section in the API Reference.

Component Repository API

The Component Repository offers a REST API through which components can be saved, retrieved, updated, started or stopped. To interact with this API, the user must supply a valid bearer token generated by the Identity Management.

List of supported Methods and Routes


endpoint method description comments
/components GET Returns a list of all components  
/components POST Stores a new component The supplied data is validated for completeness and errors
/components/{id} GET Returns one particular component by ID  
/components/{id} DELETE Deletes a components by ID  
/components/{id} PATCH Updates a components with new data  
/components/global/{id}/start POST Starts a global component with ID  
/components/global/{id}/stop POST Stops a global component with ID  
/enrich/{id} PATCH Automatically finds component data Will attempt to fetch action/trigger data

For further details and examples, please refer to the API Reference

Automatic Enrichment

Through the use of the /enrich/id endpoint, the component repository can attempt to automatically fill out information about the component’s available actions and triggers from a public github repository. The repository’s URL can be either provided as a query string (see also the API documentation), or alternatively it will fallback on the content of the component’s repository field. If the provided github repository is found, the component repository will check the component.json (if present) and copy its functions data to the component’s entry. Additionally, if the component.json specifies schema files used as part of its actions and triggers, the component repository will also attempt to find and append that information.

Ownership and Permissions

Each component contains an array of owners. A component which is not global can only be accessed if the current user (as identified by their bearer token) is among those owners.

Additionally, manipulation of components limited and defined by the permissions of the current user. For further information about permissions, please refer to the documentation of the Identity Management.

Interaction with other Services

The Component Repository interacts with these Services:

  • Identity Management: The Component Repository relies on a bearer token supplied by the Identity Management to determine which components the current user may see, and which actions they may take.

  • Component Orchestrator: The Component-orchestrator gets the information it needs for the component used in a flow template from the Component-repository.