Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

SUBSCRIPTION

A Subscription is a relationship from a Subscriber to a Publisher that allows the Subscriber to receive the Publisher’s data.

Field

Type

Notes

ProgramId

string (25 char)

The identifier of the Subscriber

PublisherProgramId

string (25 char)

The identifier of the Publisher

LastSyncUtc

UTC date/time

UTC timestamp of the last time the Subscriber pulled data from this Publisher

SyncEnabled

boolean

Whether or not the subscription supports the nightly sync process. (Applies to LearningBuilder subscribers Subscribers only)

Note

Setting this to TRUE does not automatically enable the nightly sync, it just allows the nightly sync to process this subscription.

LbApiPayloadTemplate

JSON

JSON structure mapping different PublisherEventCategory values to the Handlebars template that converts those Events into a batch row payload for LearningBuilder’s WorkflowImportQueue/CreateBatch API.

See below for detailed explanation

...

This section applies specifically to subscribers Subscribers using LearningBuilder. Other systems will need to implement their own mechanism for processing data from the Hub.

Publishers and Subscribers think about and model their data differently, so the publisher’s Publisher’s data typically needs modified or converted before it can be imported into LearningBuilder.

...

  • To import it into the Subscriber, using the specified batchRowTemplate

  • To ignore it, because the Subscriber isn’t interested in that category of publisher Publisher data

Syntax examples

Example / scenario

Sample LbApiPayloadTemplate

Subscribe to all publisher Publisher event categories, using the same template for everything

Code Block
languagejson
"LbApiPayloadTemplate": {
  "_default": {
    "action": "import",
    "label": "Import everything",
    "importProcessId": {WIQ Process Id},
    "batchRowTemplate": "{handlebars template}"
  }
}

Subscribe to all publisher Publisher event data, with special handling for a specific category

Code Block
languagejson
"LbApiPayloadTemplate": {
  "some_key": {
    "action": "import",
    "label": "ACME Course",
    "importProcessId": {WIQ Process Id},
    "batchRowTemplate": "{handlebars template}"
  },
  "_default": {
    "action": "import",
    "label": "Import everything",
    "importProcessId": {WIQ Process Id},
    "batchRowTemplate": "{handlebars template}"
  }
}

Subscribe to a specific category only, ignoring everything else

Code Block
languagejson
"LbApiPayloadTemplate": {
  "COURSE": {
    "action": "import",
    "label": "ACME course",
    "importProcessId": {WIQ Process Id},
    "batchRowTemplate": "{handlebars template}"
  },
  "_default": {
    "action": "ignore",
    "label": "Nothing else matters"
  }
}

Ignore a specific category, process everything else using a common template

Code Block
languagejson
"LbApiPayloadTemplate": {
  "SOME_CATEGORY": {
    "action": "ignore",
    "label": "ACME course"
  },
  "_default": {
    "action": "import",
    "importProcessId": {WIQ Process Id},
    "batchRowTemplate": "{handlebars template}"
  }
}

...

  • When Publishers push data into the Hub, they specify a PublisherEventCategory value. (For example, this might differentiate between data representing a completed course and data representing work history)

  • A Subscriber’s EventSubscription contain contain one or more templates, each one mapped to a specific PublisherEventCategory value. (This allows the subscriber Subscriber to convert those courses and work history entries in different ways)

  • Each template converts a single PublisherEventData JSON object into a different JSON schema that can be passed to the Subscriber’s API/WorkflowImportQueue/CreateBatch API endpoint.

  • When LearningBuilder synchronizes data, it loops through each PublisherEventData item, converts it using the relevant template, and then makes a single call to API/WorkflowImportQueue/CreateBatch to import the data.

...