Guide
Test Connection
Verify that productId, appId, pluginKey, and pluginSecret belong together before activation testing.
Generated native clients use public identity
HISEScript/custom HTTP use the standard product key/secret path. Current native HISE and JUCE packages identify the generated app/product through the supported hise-native or juce-native public-client contract and keep pluginSecret out of public configuration. Product identification is not customer ownership proof; do not substitute a developer token.
SoundSync
Endpoint contract
This endpoint uses JSON body credential fields. It does not use product credential headers.
/api/plugin-connections/verify
Verify the standard product credential tuple or supported native public-client app/product identity before customer activation testing.
- Auth
- JSON body credential check. Headers are not used for this endpoint.
- Scope
- Product, app, credential, environment, and machine scoped.
- Request fields
- productId and appId
- pluginKey and pluginSecret for standard custom HTTP/HISEScript credential verification
- publicClient: hise-native or juce-native for the generated native public-client path
- pluginVersion, environment, and metadata optional
- Returns
- ok/connected, productId, credentialId, pluginVersion, environment, lastSeenAt.
- Side effects
- Updates credential last-used state, upserts plugin connection status, and records a plugin connection event.
- Notes
- This endpoint reads its JSON body rather than substituting licensing headers. The native public-client path does not require a distributed pluginSecret. Connectivity/product identification is not customer entitlement or audio unlock.
SoundSync
Copyable examples
Use canonical field names in new clients.
curl -sS -X POST "$SOUNDSYNC_API_BASE/api/plugin-connections/verify" \
-H "Content-Type: application/json" \
-d '{
"productId": "prod_demo_piano",
"appId": "ss_prod_demoapp123",
"pluginKey": "ss_pk_demokey123",
"pluginSecret": "ss_ps_demosecret123",
"pluginVersion": "1.0.0",
"environment": "test"
}'
SoundSyncApiClient.cpp
SoundSync::CredentialConfig config;
config.apiBaseUrl = "https://api.soundsync.example";
config.productId = "prod_demo_piano";
config.appId = "ss_prod_demoapp123";
config.pluginKey = "ss_pk_demokey123";
config.pluginSecret = "ss_ps_demosecret123";
config.environment = "test";
SoundSync::ApiClient client(config);
client.verifyConnection("1.0.0", [](SoundSync::ApiResult result)
{
// Runs on the JUCE message thread in the example client.
// Do not unlock audio here; Test Connection only verifies product credentials.
DBG(result.ok ? "SoundSync Test Connection passed" : result.code);
});
SoundSync
Stable failure codes
A failed Test Connection means fix credentials or product context before testing activation.
| Code | HTTP | Meaning | Client action |
|---|---|---|---|
| MISSING_CREDENTIALS | 400 | Missing productId, appId, pluginKey, or pluginSecret. | Fill all four body fields. |
| INVALID_PRODUCT | 400 | Product identifier is invalid. | Use Product ID from the product setup page. |
| INVALID_APP_ID | 401 | App ID was not found. | Use ss_prod_* from current product credential. |
| INVALID_PLUGIN_KEY | 401 | Plugin key mismatch. | Use the current ss_pk_* value. |
| INVALID_PLUGIN_SECRET | 401 | Plugin secret mismatch. | Use the current ss_ps_* value. |
| REVOKED_CREDENTIAL | 403 | Credential has been revoked. | Generate/rotate credential and regenerate package. |
| INACTIVE_CREDENTIAL | 403 | Credential is inactive. | Enable or replace credential. |
| PRODUCT_MISMATCH | 403 | Credential belongs to another product. | Do not mix product config files. |
| PRODUCT_NOT_FOUND | 404 | Product record was not found. | Check product setup. |
SoundSync
Do not confuse Test Connection with
These calls answer different questions.
| Call | What it verifies |
|---|---|
| /api/license/ping | General licensing service reachability only. |
| /api/plugin-connections/verify | Product credential relationship and connection status. |
| /api/license/v1/activate | Customer/product/machine activation. |
| /api/license/v1/validate | Cached activation is still allowed. |
| /api/license/v1/customer-login/activate | Customer login entitlement plus machine activation. |
