Ingestion API Input
- Last UpdatedApr 10, 2025
- 4 minute read
APCM integration with the Data Pipeline and the Ingestion API must be enabled. If the integration is not enabled, then any APCM registers will be rejected by the Ingestion API. If the integration is enabled, then the following data can be passed for processing.
Important
-
Any csv file sent to the Ingestion API for APCM integration must be a UTF-8 encoded file with CRLF line endings. For samples of each of the three APCM registers, see the Sample APCM Registers section. Please ensure conformance to enable smooth processing.
-
The ISM Class Library must be loaded into the AIM system before any register can be sent for processing to make sure any required classes and associations are available in the system.
APCM/Projects
This register is responsible for creating an object for an APCM project in AIM. This creates a document object of type APCM Viewer Project for the project (an alternative class name can be used), creates a FILE object that points to the target APCM project to be opened in AIM and associates the two using an "is fulfilled by" association for viewing. The InfoLocator attribute is set to the APCM Sharelink of the project and InfoType is set to "application/x-lfm", which invokes the APCM Viewer embedded in the AIM Dashboard.
The input register csv contains the following columns:
|
Column Name |
Is Identifier? |
Description |
|---|---|---|
|
ProjectId |
Yes |
The identifier for the document object for the APCM project. This is the ID that is searchable and viewable in AIM. This must be unique for any project in the register. |
|
Sharelink |
|
The URL to the project root in APCM |
Register Identifier to send to the Ingestion API: APCM/Projects
The register definition for the same in an ISM Class Library is as follows:
<APCM geicl:id="APCM" nomenclature="APCM">
<Projects geicl:id="Projects" Category="General" IDColumn="ProjectId" RegisterType="Primary" MaxRequiredFieldErrors="0" DeleteWhere="{{ @Action starts 'd' }}" CaptureMethod="partial" ClassDefault="APCM Viewer Project">
<Columns geicl:id="Columns">
<ProjectId geicl:id="ProjectId" Description="{geicl:null}" required="true" />
<Sharelink geicl:id="Sharelink" Description="{geicl:null}" required="true" />
<Ref_Visual ValueExpression="{{ concat('.'.join('File', @ProjectId)) }}" AssociationType="is fulfilled by" AssociationClass="{geicl:null}" />
</Columns>
</Projects>
<Projects.Files geicl:id="Projects.Files" Category="General" IDExpression="FILE.{{@ProjectId}}" ClassDefault="FILE" FromRegister="APCM/Projects" RegisterType="Primary">
<Columns geicl:id="Columns">
<Sharelink geicl:id="Sharelink" Description="{geicl:null}" />
<Calc_InfoType ValueExpression="application/x-lfm" />
<Calc_InfoLocator From="Sharelink" ValueExpression="{{ $[attr.value] }}" />
</Columns>
</Projects.Files>
</APCM>
APCM/Visuals
This register is responsible for creating an object for an APCM Scan in AIM. This
creates a document object of type LASER VISUAL for the scan and associates it with
the respective Project using an "is referenced in" association for viewing. The input register csv contains the following columns:
|
Column Name |
Is Identifier? |
Description |
|---|---|---|
|
VisualId |
Yes |
The identifier for the APCM scan object in AIM. This must be unique. |
|
ProjectId |
|
The identifier for the document object for the APCM project. |
|
EntityType |
|
The Entity Type for the visual in APCM database. Required for performance improvement. [Optional] |
|
ViewId |
|
The identifier of the visual in APCM database. |
|
Sharelink |
|
The URL to the APCM scan in APCM. |
Register Identifier to send to the Ingestion API: APCM/Visuals
The register definition for the same in an ISM Class Library is as follows:
<APCM geicl:id="APCM" nomenclature="APCM">
<Visuals geicl:id="Visuals" Category="General" IDColumn="VisualId" RegisterType="Primary" MaxRequiredFieldErrors="0" DeleteWhere="{{ @Action starts 'd'}}" CaptureMethod="partial" ClassDefault="LASER VISUAL">
<Columns geicl:id="Columns">
<VisualId geicl:id="VisualId" Description="{geicl:null}" required="true" />
<ProjectId geicl:id="ProjectId" Description="{geicl:null}" required="true" />
<ViewId geicl:id="ViewId" Description="{geicl:null}" required="true" />
<Sharelink geicl:id="Sharelink" Description="{geicl:null}" required="true" />
<Ref_Project ValueExpression="{{ @ProjectId }}" AssociationType="is referenced in" AssociationClass="{geicl:null}" />
</Columns>
</Visuals>
</APCM>
APCM/TagAssociations
This register is responsible for creating associations between an APCM Scan or Project with any existing AIM tag object. This creates an association of type "is located in" between a LASER VISUAL and the existing tag. It also creates the association "is referenced in" between the APCM project and the existing tag.
Note: If the tag is not already available in AIM, the object is classified as UNKNOWN and it is not directly searchable from AIM.
The input register csv contains the following columns:
|
Column Name |
Is Identifier? |
Description |
|---|---|---|
|
Id |
Yes |
The identifier of the tag in AIM. This must be unique. |
|
VisualId |
|
The identifier for the APCM scan object in AIM. This is used to create the "is located in" association between the tag and the APCM scan |
|
ProjectId |
|
The identifier for the document object for the APCM project. This is used to create the "is referenced in" association between the tag and the APCM project |
|
EntityType |
|
The Entity Type for the visual in APCM database. Required for performance improvement. [Optional] |
|
ViewId |
|
The identifier of the visual in APCM database. |
|
Sharelink |
|
The URL to the tag in APCM. |
|
ObjectFileName |
Multiple object files are allowed in the viewer, though only one can be loaded at a time. Each object file is identified with an ObjectFileName value. |
Register Identifier to send to the Ingestion API: APCM/TagAssociations
The register definition for the same in an ISM Class Library is as follows:
<APCM geicl:id="APCM" nomenclature="APCM">
<TagAssociations geicl:id="TagAssociations" Category="Tags" IDColumn="Id" RegisterType="Secondary" MaxRequiredFieldErrors="0" DeleteWhere="{{ @Action starts 'd' }}" CaptureMethod="Partial">
<Columns geicl:id="Columns">
<Id geicl:id="Id" Description="{geicl:null}" required="true"/>
<VisualId geicl:id="VisualId" Description="{geicl:null}" required="true"/>
<ProjectId geicl:id="ProjectId" Description="{geicl:null}" required="true"/>
<ViewId geicl:id="ViewId" Description="{geicl:null}" required="true"/>
<Sharelink geicl:id="Sharelink" Description="{geicl:null}" required="true"/>
<Ref_Project ValueExpression="{{ @ProjectId }}" AssociationType="is referenced in" AssociationClass="APCM Viewer Project"/>
<Ref_Visual ValueExpression="{{ @VisualId }}" AssociationType="is located in "AssociationClass="LASER VISUAL"/>
<ObjectFileName geicl:id="ObjectFileName" Description="{geicl:null}" />
</Columns>
</TagAssociations>
</APCM>