Links API
The Links API manages the links that represent the relationships between Fusion objects. You can see these links in the Object Explorer by pressing CMD-K or CTRL-K from any screen in the Fusion UI. You can also export and import links using the Objects API.
Links are structured as a tuple of (subject, object, linkType)
. An example would be (foo, bar, dependsOn)
, which would read as "foo dependsOn bar".
Link types and link reversibility
The possible values of linkType
are as follows:
|
The subject exists in the context of the object, which is an app. In this example, the "Movie_Search" app is the context for a parser with the same name:
|
|
The subject is an app that contains the object. In this example, an index profile exists in the context of the "Movie_Search" app:
|
|
The subject depends on the object. In this example, a datasource called "web_pokeapi_co-default" depends on a parser by the same name:
|
|
The subject is depended on by the object (the reverse of In this example, a parser called "web_pokeapi_co-default" supports a datasource by the same name:
|
|
The subject is part of the object, where the object is a group. In this example, an aggregation called "click-signals-default" is part of a group called "signals-object-group-default":
|
|
The subject is a group, of which the object is a member (the reverse of In this example, an aggregation called "click-signals-default" is part of a group called "signals-object-group-default":
|
|
The subject relates to the object. This is a uni-directional relationship that associates two objects that have none of the relationships described above. For example, when recommendations are enabled for the default collection, Fusion creates a group of objects which relates to the default collection:
|
With the exception of the relatesTo
link type, links are reversible:
-
inContextOf
is the reverse ofhasContext
(and vice versa). -
dependsOn
is the reverse ofsupports
(and vice versa). -
isPartOf
is the reverse ofhasPart
(and vice versa).
For example, here is the group of links for the signals-default
collection:
[
{
"subject": "group:4e6ee9a6-d4ab-413a-ac70-a27c1445bb60",
"object": "collection:default_signals_aggr",
"linkType": "hasPart"
},
{
"subject": "group:4e6ee9a6-d4ab-413a-ac70-a27c1445bb60",
"object": "spark:default_click_signals_aggregation",
"linkType": "hasPart"
},
{
"subject": "group:4e6ee9a6-d4ab-413a-ac70-a27c1445bb60",
"object": "collection:default",
"linkType": "relatesTo"
},
{
"subject": "group:4e6ee9a6-d4ab-413a-ac70-a27c1445bb60",
"object": "collection:default_signals",
"linkType": "hasPart"
}
]
When we request the links for one of the hasPart
objects shown above, we get the reverse representation:
GET https://FUSION_HOST:8764/api/links?subject=collection:default_signals_aggr
[
{
"subject": "collection:default_signals_aggr",
"object": "group:4e6ee9a6-d4ab-413a-ac70-a27c1445bb60",
"linkType": "isPartOf"
}
]
Examples
Get links to the default collection:
curl https://FUSION_HOST:8764/api/links?subject=collection:default
Output:
[ { "subject": "collection:default", "object": "index-pipeline:default", "linkType": "supports" } ]
Create a new link:
curl -X PUT https://FUSION_HOST:8764/api/links -H 'content-type: application/json' -d '{"linkType": "supports", "object": "index-pipeline:default", "subject": "collection:default"}'
Output:
{ "subject" : "collection:default", "object" : "index-pipeline:default", "linkType" : "supports" }
Delete a link:
curl -X DELETE https://FUSION_HOST:8764/api/links?subject=collection:default