Prior to using any Gateway service the Tool Provider must register with the Gateway. This process is known as Out of Band Registration.

Currently the Out of Band Registration consists of 3 pieces:

  1. Exchanging username and shared secrets with the Gateway.
  2. Registering the Association Service - This will be called when the Gateway determines that it does not contain user association information.
  3. Registering the Launch Service - This will be called when the user wants to Launch a tool through the Gateway.

Creating Database Entries

INSERT INTO tool_provider (name, description, auth_type, username, shared_secret, contact_name, contact_phone, contact_email, date_time_updated, incoming_username, incoming_shared_secret)
VALUES ('UniqueTP', 'Description of UniqueTP tool provider', 'HTTPBasic', 'UniqueTPUser', '1a2b3c', NULL, NULL, NULL, NULL, 'UniqueTP', '1a2b3c');

INSERT INTO tool_provider_service (tool_provider_id, service_type, name, endpoint_uri, date_time_added)
VALUES
    (##, 'Associate', 'UniqueTP Association', 'https://uniquetp.com/user/associate', NOW()),
    (##, 'Launch', 'UniqueTP Launch', 'https://uniquetp.com/launch', NOW());

Optionally, Tool Providers can be setup with any required and/or optional URL parameters to present to users of the Admin Panel during the "Get Link" process. On initial setup, you would use an alternative INSERT for the tool_provider_service records like this...

INSERT INTO tool_provider_service (tool_provider_id, service_type, name, endpoint_uri, parameters_json, date_time_added)
VALUES
    (##, 'Associate', 'UniqueTP Association', 'https://uniquetp.com/user/associate', NULL, NOW()),
    (##, 'Launch', 'UniqueTP Launch', 'https://uniquetp.com/launch', '[{"Parameter":"courseId","Required":true,"Default":null}]', NOW());

If already setup, you could update the registration with the following SQL code...

BEGIN;

UPDATE tool_provider_service
SET parameters_json = '[{"Parameter":"courseId","Required":true,"Default":null}]'
WHERE tool_provider_id = 68 AND service_type = 'Launch';

COMMIT;

An example of the JSON for setting up 2 required fields & an optional field with the default value set for one of the required fields...

[
    {"Parameter":"courseid","Required":true,"Default":null},
    {"Parameter":"tooltype","Required":true,"Default":"course"},
    {"Parameter":"unnecessaryfield","Required":false,"Default":null}
]