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.

Links are structured as a tuple of (subject, object, linkType). An example would be (foo, bar, dependsOn), which would read as "foo dependsOn bar".

The possible values of linkType are as follows:

dependsOn

The subject depends on the object.

In this example, a datasource called "web_pokeapi_co-default" depends on a parser by the same name:

{
  "subject" : "datasource:web_pokeapi_co-default",
  "object" : "parser:web_pokeapi_co-default",
  "linkType" : "dependsOn"
}

supports

The subject is depended on by the object (the reverse of dependsOn).

In this example, a parser called "web_pokeapi_co-default" supports a datasource by the same name:

{
  "subject" : "parser:web_pokeapi_co-default",
  "object" : "datasource:web_pokeapi_co-default",
  "linkType" : "supports"
}

isPartOf

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":

{
  "subject" : "aggregation:click-signals-default",
  "object" : "group:signals-object-group-default",
  "linkType" : "isPartOf"
}

hasPart

The subject is a group, of which the object is a member (the reverse of isPartOf).

In this example, an aggregation called "click-signals-default" is part of a group called "signals-object-group-default":

{
  "subject" : "group:signals-object-group-default",
  "object" : "aggregation:click-signals-default",
  "linkType" : "hasPart"
}

relatesTo

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:

{
  "subject" : "group:recommendations-default",
  "object" : "collection:default",
  "linkType" : "relatesTo"
}

With the exception of the relatesTo link type, links are reversible. dependsOn is the reverse of supports (and vice versa), while isPartOf is the reverse of hasPart (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 http://localhost:8765/api/v1/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 http://localhost:8765/api/v1/links?subject=collection:default

Output:

[ { "subject": "collection:default", "object": "index-pipeline:default", "linkType": "supports" } ]
Create a new link:
curl -X PUT http://localhost:8765/api/v1/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 http://localhost:8765/api/v1/links?subject=collection:default