Overview
Links in Origami represent associations between two records across domains. A link connects a parent record to a child record, where:
- Parent can be any standard or custom domain in the system (Claim, Policy, Location, Member, Contact, Incident, etc.).
- Child must be a "linkable" domain. Currently, only Contact and File are linkable child types. This is a fixed set defined in the application code, not a configurable setting. There is no API endpoint to discover which domains are linkable children; assume Contact and File unless otherwise documented.
When the child domain is Contact, links support an optional Relationship (e.g., "Adjuster", "Broker", "Claimant") from the Contact Type code list. This allows multiple contacts to be linked to the same parent with different roles.
Use Cases
- Attach an adjuster to a claim: Link a Contact (the adjuster) to a Claim with the relationship "Adjuster" so the assignment is tracked.
- Attach a policy document to a policy: Link a File (the uploaded PDF) to a Policy record so it appears in the policy's documents tab.
- Associate a broker with a proposal: Link a Contact (the broker) to a Proposal with the relationship "Broker" to record who placed the submission.
- Share a contact across multiple claims: Link the same Contact to several Claim records, each with its own relationship type (e.g., "Defense Attorney" on one, "Expert Witness" on another).
- Attach inspection photos to a location: Link multiple File records to a single Location to store site inspection documentation.
Key Concepts
| Concept | Description |
|---|---|
| Parent | Any domain record that can have child records linked to it. |
| Child | A record from a linkable domain (currently Contact and File). |
| Relationship | An optional classification for Contact links (e.g., "Adjuster", "Broker"). Uses the Contact Type code list. Not applicable to non-Contact child domains. |
| Link Record | The association itself, stored in the Links table. Contains the parent domain/ID, child domain/ID, and optional relationship. |
Endpoints
| Endpoint | Description |
|---|---|
GET /api/Link/Query | Query link associations by parent, child, or both. |
POST /api/Link/Upsert | Create a new link or update an existing one. |
POST /api/Link/Remove | Delete an existing link. |
Record Identification
All Link endpoints support two ways to identify parent and child records:
- By primary key (preferred): Provide the record's ID directly (e.g.,
ParentRecordID). - By match field: Provide a field name and value to look up the record (e.g.,
ParentRecordMatchField=ClaimNumber+ParentRecordKey=CLM-2026-001). Only text or numeric fields are accepted.
If both are provided for the same side, the primary key takes priority.
Permissions
Link operations check the authenticated user's permissions on the parent domain:
| Child Domain | Upsert Permission | Remove Permission |
|---|---|---|
| Contact | Attach Contacts | Detach Contacts |
| File | Attach Files | Modify Files |
| Other | Edit | Edit |
* The user must also have View permission on the child domain.