How To
Documentation
    Learn More

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

      The possible values of linkType are as follows:

      inContextOf

      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:

      {
        "subject" : "parser:Movie_Search",
        "object" : "app:Movie_Search",
        "linkType" : "inContextOf",
        "originator" : "unspecified"
      }

      hasContext

      The subject is an app that contains the object.

      In this example, an index profile exists in the context of the "Movie_Search" app:

      {
        "subject" : "app:Movie_Search",
        "object" : "index-profile:Movie_Search",
        "linkType" : "hasContext",
        "originator" : "unspecified"
      }

      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:

      • inContextOf is the reverse of hasContext (and vice versa).

      • dependsOn is the reverse of supports (and vice versa).

      • 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://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 http://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 http://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 http://fusion-host:8764/api/links?subject=collection:default
      Loading API specification...