Skip to content
SoundSyncAudio software platform

API reference

Product Dashboard API

Load a product overview while honoring separate sales, review, file and credential permissions.

Start with the access object

GET /api/developer/products/{productId}/dashboard requires products.view and access to that product. Its access object identifies which optional sections the current role can receive: analytics, reviews, files and credentials. A product assignment is not permission to read every operational record.

analytics.view controls statistics, sales performance and recent activity. reviews.view controls private reviews and moderation summaries. product_files.view controls delivery-file metadata. credentials.view controls package credential status, plugin connection status and REST configuration. Unauthorized optional sections are not queried. Owners and authorized administrators retain their permitted view; role definitions are unchanged.

SoundSync

Illustrative product overview request

Read an assigned product and inspect access before rendering
curl --fail-with-body -sS "$SOUNDSYNC_API_BASE/api/developer/products/123/dashboard?currency=usd&environment=live" \
  -H "Authorization: Bearer $DEVELOPER_TOKEN"

Unavailable does not mean empty business activity

When analytics is restricted, performance has available:false with reason:permission_required and an empty ranges array; customer/order/download KPI values are null. Restricted reviews, files and activity are empty arrays, and the nested product excludes the corresponding analytics and delivery-file fields. Do not display these as zero sales, no customers or missing delivery setup.

Without credentials.view, hisePackage, pluginConnectionStatus and restApi are null; the dashboard does not provision credentials for that caller. Where configuration is allowed, productKey is a preview and secretReturned is false. Dedicated files and rest-config endpoints retain their own permissions. Product versions remain metadata permitted by products.view.

SoundSync

Product operations

Product Management API

Drafts, pricing, publication and managed delivery.

Licensing and version tools

Rules, connection events and delivery versions.

Team permissions

Roles and assigned-product boundaries.

SoundSync

Requests and responses

GET /api/developer/products/{productId}/hise-package/status

Read product package readiness metadata

Auth
Account Bearer JWT
Scope
products.view and assigned-product access.
Returns
HTTP 200: credentialStatus, status, packageReady, lastGeneratedAt, lastPluginConnectionAt, supportedModes.
Notes
credentialStatus is a structured status object, not a string or full secret. This compatible status handler can ensure product package credentials; it is not a zero-write health check. Package-ready metadata is not a new HISE runtime attestation.
Request, response and error reference

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "credentialStatus": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string"
        },
        "ready": {
          "type": "boolean"
        },
        "isActive": {
          "type": "boolean"
        },
        "appId": {
          "type": [
            "string",
            "null"
          ]
        },
        "productKeyPreview": {
          "type": [
            "string",
            "null"
          ]
        },
        "created": {
          "type": "boolean"
        },
        "skipped": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "status": {
      "type": "string"
    },
    "packageReady": {
      "type": "boolean"
    },
    "lastGeneratedAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "lastPluginConnectionAt": {
      "type": [
        "string",
        "null"
      ],
      "format": "date-time"
    },
    "supportedModes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 500, 503.

GET /api/developer/products/{productId}/dashboard

Read the product overview with permission-filtered aggregates

Auth
Account Bearer JWT
Scope
products.view and assigned-product access; analytics.view, reviews.view, product_files.view and credentials.view separately control optional fields.
Request fields
  • query currency: string
  • query environment: value
Returns
HTTP 200: access, product, health, kpis, performance, reviewSummary, readiness, hisePackage, pluginConnectionStatus, restApi, files, versions, reviews, recentActivity, storefrontDestination.
Notes
Check access first. Denied aggregates are not queried. Restricted performance has available:false/reason:permission_required; restricted reviews, file metadata and activity use empty arrays; hidden KPI counts are null, not zero. The nested product omits file URLs/counts and analytics fields when unauthorized. hisePackage/restApi are null without credentials.view; no dashboard credential provisioning is attempted for that caller. Credential responses contain previews, not a full secret. Versions remain product metadata available to products.view.
Request, response and error reference

Query and header parameters

[
  {
    "name": "currency",
    "in": "query",
    "schema": {
      "type": "string",
      "pattern": "^[A-Za-z]{3}$",
      "default": "usd"
    },
    "required": false,
    "description": ""
  },
  {
    "name": "environment",
    "in": "query",
    "schema": {
      "enum": [
        "live",
        "test"
      ]
    },
    "required": false,
    "description": ""
  }
]

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "access": {
      "type": "object",
      "properties": {
        "analytics": {
          "type": "boolean"
        },
        "reviews": {
          "type": "boolean"
        },
        "files": {
          "type": "boolean"
        },
        "credentials": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "product": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "health": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "kpis": {
      "type": "object",
      "properties": {
        "customerCount": {
          "type": [
            "number",
            "null"
          ]
        },
        "orderCount": {
          "type": [
            "number",
            "null"
          ]
        },
        "downloadsTotal": {
          "type": [
            "number",
            "null"
          ]
        },
        "ratingAverage": {
          "type": [
            "number",
            "null"
          ]
        },
        "ratingCount": {
          "type": [
            "number",
            "null"
          ]
        }
      },
      "additionalProperties": true
    },
    "performance": {
      "type": "object",
      "properties": {
        "available": {
          "type": "boolean"
        },
        "reason": {
          "type": "string"
        },
        "ranges": {
          "type": "array",
          "items": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
          }
        }
      },
      "additionalProperties": true
    },
    "reviewSummary": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "readiness": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "hisePackage": {
      "type": [
        "object",
        "null"
      ]
    },
    "pluginConnectionStatus": {
      "type": [
        "object",
        "null"
      ]
    },
    "restApi": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "status": {
          "type": "string"
        },
        "apiBaseUrl": {
          "type": "string"
        },
        "productId": {
          "type": "integer",
          "minimum": 1
        },
        "appId": {
          "type": [
            "string",
            "null"
          ]
        },
        "productKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "productKeyPreview": {
          "type": [
            "string",
            "null"
          ]
        },
        "environment": {
          "type": "string"
        },
        "apiStatus": {
          "type": "string"
        },
        "lastRequestAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "secretReturned": {
          "const": false
        }
      },
      "additionalProperties": true
    },
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "sizeBytes": {
            "type": [
              "number",
              "null"
            ]
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "managed": {
            "type": "boolean"
          },
          "deliveryMode": {
            "type": "string"
          },
          "uploadedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    },
    "versions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "string"
            ]
          },
          "version": {
            "type": "string"
          },
          "changelog": {
            "type": "string"
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "isCurrent": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    },
    "reviews": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "productId": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1
              },
              {
                "type": "string",
                "pattern": "^[1-9][0-9]*$"
              }
            ]
          },
          "rating": {
            "type": "number"
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "status": {
            "type": "string"
          },
          "customerName": {
            "type": [
              "string",
              "null"
            ]
          },
          "customerEmail": {
            "type": [
              "string",
              "null"
            ]
          },
          "customerId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "imported": {
            "type": "boolean"
          },
          "verified": {
            "type": "boolean"
          },
          "verifiedPurchase": {
            "type": "boolean"
          },
          "metadata": {
            "type": "object",
            "additionalProperties": true,
            "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
          }
        },
        "additionalProperties": true
      }
    },
    "recentActivity": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
      }
    },
    "storefrontDestination": {
      "type": "object",
      "properties": {
        "url": {
          "type": "string"
        },
        "kind": {
          "type": "string"
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 500, 503.

GET /api/developer/products/{productId}/rest-config

Read private product integration configuration

Auth
Account Bearer JWT
Scope
credentials.view and assigned-product access.
Returns
HTTP 200: restApi.
Notes
Can ensure package credentials. productKey and productKeyPreview are masked previews; secretReturned is false. Do not use this response as a full credential or health-monitoring guarantee.
Request, response and error reference

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "restApi": {
      "type": "object",
      "properties": {
        "status": {
          "type": "string"
        },
        "apiBaseUrl": {
          "type": "string"
        },
        "productId": {
          "type": "integer",
          "minimum": 1
        },
        "appId": {
          "type": [
            "string",
            "null"
          ]
        },
        "productKey": {
          "type": [
            "string",
            "null"
          ]
        },
        "productKeyPreview": {
          "type": [
            "string",
            "null"
          ]
        },
        "environment": {
          "type": "string"
        },
        "apiStatus": {
          "type": "string"
        },
        "lastRequestAt": {
          "type": [
            "string",
            "null"
          ],
          "format": "date-time"
        },
        "secretReturned": {
          "const": false
        }
      },
      "additionalProperties": true
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 500, 503.

GET /api/developer/products/{productId}/files

Read dashboard delivery-file metadata

Auth
Account Bearer JWT
Scope
product_files.view and assigned-product access.
Returns
HTTP 200: files.
Notes
Metadata only, not a signed download grant. Use the managed upload and authorized delivery workflows for file contents.
Request, response and error reference

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "files": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "filename": {
            "type": "string"
          },
          "platform": {
            "type": "string"
          },
          "type": {
            "type": "string"
          },
          "sizeBytes": {
            "type": [
              "number",
              "null"
            ]
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "managed": {
            "type": "boolean"
          },
          "deliveryMode": {
            "type": "string"
          },
          "uploadedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 500, 503.

GET /api/developer/products/{productId}/versions

Read current product version metadata

Auth
Account Bearer JWT
Scope
products.view and assigned-product access.
Returns
HTTP 200: versions.
Notes
Reads saved product_file_versions when available; otherwise derives the compatible current version from product features. Separate from versioned delivery asset management.
Request, response and error reference

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "versions": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "string"
            ]
          },
          "version": {
            "type": "string"
          },
          "changelog": {
            "type": "string"
          },
          "releaseDate": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "isCurrent": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 500, 503.