Configure an API request (using Celonis as an example)

Example API connection

Here is an example of how a custom connection would look to use the Reporting API.

In Data integration, the user can find the Extractor builder and build their own extractor based on an API. Here is where we will use our API to set up the connection.

To use the API connection, your configuration could look like this:

  • Choose “API Key Authentication” as the Authentication Method .

authentication

variables

In the API URL field, add the one that is applicable to you. See the Available API Domains section.

data connection

Within pagination Methods, use "skip" as Offset Parameter, and "take" as Limit Parameter. Then set a default limit. Note that the maximum limit is 100, which will be applied if no limit is set.

pagination

Example Data transformation

With this data connection, you can then create transformation to make usable data tables. Here is an example transformation script:

Copy
Copied
CREATE OR REPLACE VIEW Element AS
SELECT
   -- Unique ID for the Element
   CASE
       WHEN T.source_table = 'elements' THEN T.original_id                  -- For non-versionable elements
       WHEN T.source_table = 'elements$versions' THEN T.original_version_id -- For versionable elements
       WHEN T.source_table IN ('elements$content', 'elements$versions$content') THEN T.original_id -- For content items (their own 'id' is unique GUID)
   END AS _id,
   T.source_table, -- Helps identify where the record originated ('elements', 'elements$versions', 'elements$content', 'elements$versions$content')
   T.original_id, -- Original 'id' from the source table (PK for elements and content)
   T.original_version_id, -- Original 'versionId' from elements$versions (PK for versions)
   T.parent_fk_id, -- Original FK from content tables to their parent element/version

   T.supportsVariants,
   T.supportsVersions, -- FALSE for content objects
   T.containerPermaLink,
   T.facetName,
   T.permaLink,
   T.type,
   T.variantId,
   T.creationId,

   -- Common Attributes (renamed for consistency)
   T.attributes_changedOn,
   T.attributes_createdOn,
   T.attributes_gotoUrl,
   T.attributes_name,
   T.attributes_state1,
   T.attributes_description,

   -- Attributes specific to elements$versions (will be NULL for non-versioned elements and all content)
   T.attributes_isReleased,
   T.attributes_isLastInProcessOrReleased,
   T.attributes_majorVersion,
   T.attributes_minorVersion,
   T.attributes_reviewDate,
   T.attributes_validFrom,
   T.attributes_validUntil,
   T.attributes_version,
   T.attributes_reasonForRevision,
   T.attributes_imageUrl,
   T.attributes_stereotype,
   T.attributes_id_from_version, -- The 'id' attribute from versions
   T.stereotype -- The 'stereotype' column from elements$versions

FROM (
   -- Data from 'elements' table (non-versionable parent elements)
   SELECT
       'elements' AS source_table,
       e.id AS original_id,
       NULL AS original_version_id,
       NULL AS parent_fk_id,
       e.supportsVariants,
       e.supportsVersions,
       e.containerPermaLink,
       e.facetName,
       e.permaLink,
       e.type,
       e.variantId,
       e.creationId,
       e."attributes$changedOn$127" AS attributes_changedOn,
       e."attributes$createdOn$127" AS attributes_createdOn,
       e."attributes$gotoUrl$1033" AS attributes_gotoUrl,
       e."attributes$name$1033" AS attributes_name,
       e."attributes$state1$127" AS attributes_state1,
       e."attributes$description$1033" AS attributes_description,
       NULL AS attributes_isReleased,
       NULL AS attributes_isLastInProcessOrReleased,
       NULL AS attributes_majorVersion,
       NULL AS attributes_minorVersion,
       NULL AS attributes_reviewDate,
       NULL AS attributes_validFrom,
       NULL AS attributes_validUntil,
       NULL AS attributes_version,
       NULL AS attributes_reasonForRevision,
       NULL AS attributes_imageUrl,
       NULL AS attributes_stereotype,
       NULL AS attributes_id_from_version,
       NULL AS stereotype
   FROM
       elements AS e
   WHERE
       e.supportsVersions IS FALSE -- Only non-versionable top-level elements

   UNION ALL

   -- Data from 'elements$versions' table (versionable parent elements - specific versions)
   SELECT
       'elements$versions' AS source_table,
       ev.id AS original_id, -- This is the FK to elements.id, but versionId is the primary identifier for this record
       ev.versionId AS original_version_id,
       NULL AS parent_fk_id,
       NULL as supportsVariants,
       NULL as supportsVersions,
       ev.containerPermaLink,
       ev.facetName,
       ev.permaLink,
       ev.type,
       ev.variantId,
       ev.creationId,
       ev."attributes$changedOn$127" AS attributes_changedOn,
       ev."attributes$createdOn$127" AS attributes_createdOn,
       ev."attributes$gotoUrl$1033" AS attributes_gotoUrl,
       ev."attributes$name$1033" AS attributes_name,
       ev."attributes$state1$127" AS attributes_state1,
       ev."attributes$description$1033" AS attributes_description,
       ev."attributes$isReleased$127" AS attributes_isReleased,
       ev."attributes$isLastInProcessOrReleased$127" AS attributes_isLastInProcessOrReleased,
       ev."attributes$majorVersion$127" AS attributes_majorVersion,
       ev."attributes$minorVersion$127" AS attributes_minorVersion,
       ev."attributes$reviewDate$127" AS attributes_reviewDate,
       ev."attributes$validFrom$127" AS attributes_validFrom,
       ev."attributes$validUntil$127" AS attributes_validUntil,
       ev."attributes$version$127" AS attributes_version,
       ev."attributes$reasonForRevision$127" AS attributes_reasonForRevision,
       ev."attributes$imageUrl$127" AS attributes_imageUrl,
       ev."attributes$stereotype$127" AS attributes_stereotype,
       ev."attributes$id$127" AS attributes_id_from_version,
       ev.stereotype
   FROM
       "elements$versions" AS ev
   WHERE
       ev.versionId IS NOT NULL -- Only valid versions
...

) AS T;

CREATE OR REPLACE VIEW Content AS
SELECT
   -- Parent Element's _id (from 'elements' or 'elements$versions' in the unified Element view)
   (SELECT _id FROM Element WHERE source_table = 'elements' AND original_id = ec.elements_id) AS parent__id,
   -- Content Element's _id (from 'elements$content' in the unified Element view)
   (SELECT _id FROM Element WHERE source_table = 'elements$content' AND original_id = ec.id) AS content__id
FROM
   "elements$content" AS ec
WHERE
   ec.elements_id IS NOT NULL -- Only include if it has a valid parent link

UNION ALL

SELECT
   -- Parent Element's _id (from 'elements$versions' in the unified Element view)
   (SELECT _id FROM Element WHERE source_table = 'elements$versions' AND original_version_id = evc."elements$versions_versionId") AS parent__id,
   -- Content Element's _id (from 'elements$versions$content' in the unified Element view)
   (SELECT _id FROM Element WHERE source_table = 'elements$versions$content' AND original_id = evc.id) AS content__id
FROM
   "elements$versions$content" AS evc
WHERE
   evc."elements$versions_versionId" IS NOT NULL; -- Only include if it has a valid parent link

Example Report building

With the connection and transformation set up, you then are able to make use of the data within your Analytical tools. Here is an example of how it could look like using Celonis Views.

example report

Available API Domains

The server region of the reporting API will match the region of your Admin App URL. For example if you are a West Europe customer, your Admin App is available on http://admin.symbio.cloud/ and http://admin.us-1.symbio.cloud/ in the East U.S. region.

Domain Region Value Description
West Europe api-reporting.symbio.cloud For customers deployed to the Europe region.
East U.S. api-reporting.us-1.symbio.cloud For customers deployed to the East US region.
Japan api-reporting.jp-1.symbio.cloud For customers deployed to the Japan region.