Skip to main content

Introduction

The IntegrationCollections module stores data used for integrating different services and systems.

To integrate third-party services, you first need to create and configure collections.

More information about the module's user interface https://doc.oneentry.cloud/docs/category/integration-collections


🎯 What does this module do?

The IntegrationCollections module lets you read and manage collections — structured tables of records used to integrate OneEntry with external services and systems. Each collection is defined by a form (its schema); each record (row) holds the submitted formData.

Define a collection and its form in the admin panel, then fetch, create, update, and delete its rows from your app.

🚀 Quickstart

Initialize the module from defineOneEntry:


const { IntegrationCollections } = defineOneEntry(
"your-project-url", {
"token": "your-app-token"
}
);

Fetch all collections and read their fields:

// Returns an array of collections (langCode defaults to the configured language).
const collections = await IntegrationCollections.getICollections("en_US");

collections.forEach((collection) => {
console.log(collection.id, collection.identifier, collection.formId);
});

✨ Key Concepts

Collection vs. Row

  • Collection (ICollectionEntity) — the container/schema. It references a form (formId) and an attribute set, and carries localized info.
  • Row (ICollectionRow) — a single record inside a collection, holding formData (an array of { marker, type, value }), timestamps, and an optional linked entity (entityType / entityId).

Collection Structure

{
id: 1,
identifier: 'collection1',
formId: 1234,
localizeInfos: { title: 'Admins text' },
attributeSetId: 1234,
selectedAttributeMarkers: 'collection_marker'
}

Row Structure

{
id: 1,
createdDate: '2025-06-06T19:08:54.616Z',
updatedDate: '2025-06-06T19:08:54.616Z',
collectionId: 1,
formData: [
{ marker: 'name_1', type: 'string', value: 'Value' }
],
entityType: null,
entityId: null,
attributeSetIdentifier: null
}

Creating or updating rows

Pass a form object (ICollectionFormObject) with the form identifier and the field values:

const body = {
formIdentifier: 'collection-form',
formData: [
{ marker: 'collection_marker', type: 'string', value: 'Collection marker' }
]
};

await IntegrationCollections.createICollectionRow('collection1', body);

📋 What You Need to Know

Collections are defined in the admin panel

Collections and their forms are created and configured in the OneEntry admin panel. The SDK is for reading collections and managing their rows (create / update / delete).

Deleting rows requires a permission

deleteICollectionRowByMarkerAndId() requires the collections.row.delete right; without it the deletion fails.


📊 Quick Reference Table

MethodDescription
getICollections()Get all collections.
getICollectionById()Get a single collection by id.
getICollectionRowsById()Get all rows of a collection by collection id.
getICollectionRowsByMarker()Get all rows of a collection by marker.
getICollectionRowByMarkerAndId()Get a single row by collection marker and row id.
validateICollectionMarker()Check whether a collection marker exists.
createICollectionRow()Create a row in a collection.
updateICollectionRow()Update a row in a collection.
deleteICollectionRowByMarkerAndId()Delete a collection row (requires the collections.row.delete right).

❓ Common Questions (FAQ)

Where are collections created?

Collections and their forms are created and configured in the OneEntry admin panel. The SDK is for reading collections and managing their rows (create / update / delete).


What's the difference between a collection and a collection row?

A collection is the table definition (its form schema and metadata). A collection row is a single record stored in that collection, carrying its formData values.


🎓 Best Practices

  • Define collections in the admin panel - The SDK reads collections and manages their rows, not the schema.
  • Validate markers before use - Use validateICollectionMarker() to confirm a collection marker exists.
  • Match form fields to the schema - formData markers/types must match the collection's form.
  • Ensure the delete permission - deleteICollectionRowByMarkerAndId() needs the collections.row.delete right.