Skip to content
SoundSyncAudio software platform

API reference

Support Content API

Configure support contact routing, published articles, escalation copy and optional assistance settings.

One support identity, several destinations

Read settings and resolver before saving. supportEmail is the public contact. contactFormDestinationEmail is a delivery override; when absent, delivery can resolve the public-email fallback. supportUrlOverride only takes effect with its supported enabled setting. Saving a destination does not prove the mailbox exists or that delivery succeeded.

Save the fields the support service accepts

Send flat supported settings: supportEmail, businessAddress, supportPhone, primaryContactName, supportDisplayName, supportContactLabel, responseTimeMessage, availabilityMessage, contactFormEnabled, contactFormDestinationEmail, supportUrlOverride, supportUrlOverrideEnabled and supportPageEnabled.

Optional assistance settings include aiAssistantEnabled, aiAssistantTone, escalationMessage and alwaysEscalateWhenUnsure. They configure behavior; they do not guarantee a response time, autonomous resolution or availability of an AI provider. Publish only response and availability copy you can actually honor.

Articles and saves

Articles use type, title, body, optional productId, sortOrder and visible. Supported types are faq, install, activation, download, compatibility, policy, known_issue and troubleshooting. PUT and PATCH share the same normalization service rather than implementing generic JSON Patch. When articles are supplied, review the complete replacement list; omitted articles are not a safe way to preserve an existing set.

Reading requires customers.view and all-products workspace scope. Saving additionally requires settings.manage, held by owners and administrators. Customer Support staff retain their support access but cannot reroute the global contact form or disable the support page. This is not a public unauthenticated support-settings API. Reload settings, articles and resolver after saving; a content save does not change an entitlement or send a customer message.

Draft assistance is not publication

The support-items action uses the product setup AI service and returns a draft ID, suggestions and any persistence warning. Review FAQ answers, installation copy and troubleshooting before saving articles. Operational support replies use the separate Operational AI API and draft store; neither endpoint sends a customer reply.

SoundSync

Support workflow

Support guide

Contact forms, articles and customer context.

Customer recovery API

Private notes, access messages and device resets.

SoundSync

Requests and responses

GET /api/developer/support

Read developer support content and routing

Auth
Account Bearer JWT
Scope
customers.view and all-products workspace scope.
Returns
HTTP 200: settings, articles, legacy, resolver, source.
Request, response and error reference

No request body fields are read by this operation.

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "settings": {
      "type": "object",
      "properties": {
        "supportEmail": {
          "type": "string"
        },
        "businessAddress": {
          "type": "string"
        },
        "supportPhone": {
          "type": "string"
        },
        "primaryContactName": {
          "type": "string"
        },
        "supportUrlOverride": {
          "type": "string"
        },
        "supportUrlOverrideEnabled": {
          "type": "boolean"
        },
        "supportDisplayName": {
          "type": "string"
        },
        "supportContactLabel": {
          "type": "string"
        },
        "responseTimeMessage": {
          "type": "string"
        },
        "availabilityMessage": {
          "type": "string"
        },
        "contactFormEnabled": {
          "type": "boolean"
        },
        "contactFormDestinationEmail": {
          "type": "string"
        },
        "aiAssistantEnabled": {
          "type": "boolean"
        },
        "aiAssistantTone": {
          "type": "string"
        },
        "escalationMessage": {
          "type": "string"
        },
        "alwaysEscalateWhenUnsure": {
          "type": "boolean"
        },
        "supportPageEnabled": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "productId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "faq",
              "install",
              "activation",
              "download",
              "compatibility",
              "policy",
              "known_issue",
              "troubleshooting"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer"
          },
          "visible": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    },
    "legacy": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "resolver": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "source": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

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

PUT /api/developer/support

Save support content and articles

Auth
Account Bearer JWT
Scope
customers.view plus settings.manage and all-products workspace scope. Only owner and administrator roles have settings.manage.
Request fields
  • supportEmail: string
  • businessAddress: string
  • supportPhone: string
  • primaryContactName: string
  • supportUrlOverride: string
  • supportUrlOverrideEnabled: boolean
  • supportDisplayName: string
  • supportContactLabel: string
  • responseTimeMessage: string
  • availabilityMessage: string
  • contactFormEnabled: boolean
  • contactFormDestinationEmail: string
  • aiAssistantEnabled: boolean
  • aiAssistantTone: string
  • escalationMessage: string
  • alwaysEscalateWhenUnsure: boolean
  • supportPageEnabled: boolean
  • articles: array
Returns
HTTP 200: settings, articles, legacy, resolver, source.
Notes
These compatibility save handlers share the same service; PATCH is not a promise of generic JSON Patch semantics. Read the normalization rules and reload the saved result. Article content and contact routing do not change product entitlements.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "supportEmail": {
      "type": "string"
    },
    "businessAddress": {
      "type": "string"
    },
    "supportPhone": {
      "type": "string"
    },
    "primaryContactName": {
      "type": "string"
    },
    "supportUrlOverride": {
      "type": "string"
    },
    "supportUrlOverrideEnabled": {
      "type": "boolean"
    },
    "supportDisplayName": {
      "type": "string"
    },
    "supportContactLabel": {
      "type": "string"
    },
    "responseTimeMessage": {
      "type": "string"
    },
    "availabilityMessage": {
      "type": "string"
    },
    "contactFormEnabled": {
      "type": "boolean"
    },
    "contactFormDestinationEmail": {
      "type": "string"
    },
    "aiAssistantEnabled": {
      "type": "boolean"
    },
    "aiAssistantTone": {
      "type": "string"
    },
    "escalationMessage": {
      "type": "string"
    },
    "alwaysEscalateWhenUnsure": {
      "type": "boolean"
    },
    "supportPageEnabled": {
      "type": "boolean"
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "productId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "faq",
              "install",
              "activation",
              "download",
              "compatibility",
              "policy",
              "known_issue",
              "troubleshooting"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer"
          },
          "visible": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "settings": {
      "type": "object",
      "properties": {
        "supportEmail": {
          "type": "string"
        },
        "businessAddress": {
          "type": "string"
        },
        "supportPhone": {
          "type": "string"
        },
        "primaryContactName": {
          "type": "string"
        },
        "supportUrlOverride": {
          "type": "string"
        },
        "supportUrlOverrideEnabled": {
          "type": "boolean"
        },
        "supportDisplayName": {
          "type": "string"
        },
        "supportContactLabel": {
          "type": "string"
        },
        "responseTimeMessage": {
          "type": "string"
        },
        "availabilityMessage": {
          "type": "string"
        },
        "contactFormEnabled": {
          "type": "boolean"
        },
        "contactFormDestinationEmail": {
          "type": "string"
        },
        "aiAssistantEnabled": {
          "type": "boolean"
        },
        "aiAssistantTone": {
          "type": "string"
        },
        "escalationMessage": {
          "type": "string"
        },
        "alwaysEscalateWhenUnsure": {
          "type": "boolean"
        },
        "supportPageEnabled": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "productId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "faq",
              "install",
              "activation",
              "download",
              "compatibility",
              "policy",
              "known_issue",
              "troubleshooting"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer"
          },
          "visible": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    },
    "legacy": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "resolver": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "source": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

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

PATCH /api/developer/support

Save support content and articles

Auth
Account Bearer JWT
Scope
customers.view plus settings.manage and all-products workspace scope. Only owner and administrator roles have settings.manage.
Request fields
  • supportEmail: string
  • businessAddress: string
  • supportPhone: string
  • primaryContactName: string
  • supportUrlOverride: string
  • supportUrlOverrideEnabled: boolean
  • supportDisplayName: string
  • supportContactLabel: string
  • responseTimeMessage: string
  • availabilityMessage: string
  • contactFormEnabled: boolean
  • contactFormDestinationEmail: string
  • aiAssistantEnabled: boolean
  • aiAssistantTone: string
  • escalationMessage: string
  • alwaysEscalateWhenUnsure: boolean
  • supportPageEnabled: boolean
  • articles: array
Returns
HTTP 200: settings, articles, legacy, resolver, source.
Notes
These compatibility save handlers share the same service; PATCH is not a promise of generic JSON Patch semantics. Read the normalization rules and reload the saved result. Article content and contact routing do not change product entitlements.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "supportEmail": {
      "type": "string"
    },
    "businessAddress": {
      "type": "string"
    },
    "supportPhone": {
      "type": "string"
    },
    "primaryContactName": {
      "type": "string"
    },
    "supportUrlOverride": {
      "type": "string"
    },
    "supportUrlOverrideEnabled": {
      "type": "boolean"
    },
    "supportDisplayName": {
      "type": "string"
    },
    "supportContactLabel": {
      "type": "string"
    },
    "responseTimeMessage": {
      "type": "string"
    },
    "availabilityMessage": {
      "type": "string"
    },
    "contactFormEnabled": {
      "type": "boolean"
    },
    "contactFormDestinationEmail": {
      "type": "string"
    },
    "aiAssistantEnabled": {
      "type": "boolean"
    },
    "aiAssistantTone": {
      "type": "string"
    },
    "escalationMessage": {
      "type": "string"
    },
    "alwaysEscalateWhenUnsure": {
      "type": "boolean"
    },
    "supportPageEnabled": {
      "type": "boolean"
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "productId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "faq",
              "install",
              "activation",
              "download",
              "compatibility",
              "policy",
              "known_issue",
              "troubleshooting"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer"
          },
          "visible": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "settings": {
      "type": "object",
      "properties": {
        "supportEmail": {
          "type": "string"
        },
        "businessAddress": {
          "type": "string"
        },
        "supportPhone": {
          "type": "string"
        },
        "primaryContactName": {
          "type": "string"
        },
        "supportUrlOverride": {
          "type": "string"
        },
        "supportUrlOverrideEnabled": {
          "type": "boolean"
        },
        "supportDisplayName": {
          "type": "string"
        },
        "supportContactLabel": {
          "type": "string"
        },
        "responseTimeMessage": {
          "type": "string"
        },
        "availabilityMessage": {
          "type": "string"
        },
        "contactFormEnabled": {
          "type": "boolean"
        },
        "contactFormDestinationEmail": {
          "type": "string"
        },
        "aiAssistantEnabled": {
          "type": "boolean"
        },
        "aiAssistantTone": {
          "type": "string"
        },
        "escalationMessage": {
          "type": "string"
        },
        "alwaysEscalateWhenUnsure": {
          "type": "boolean"
        },
        "supportPageEnabled": {
          "type": "boolean"
        }
      },
      "additionalProperties": true
    },
    "articles": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": [
              "integer",
              "null"
            ]
          },
          "productId": {
            "type": [
              "integer",
              "null"
            ]
          },
          "type": {
            "type": "string",
            "enum": [
              "faq",
              "install",
              "activation",
              "download",
              "compatibility",
              "policy",
              "known_issue",
              "troubleshooting"
            ]
          },
          "title": {
            "type": "string"
          },
          "body": {
            "type": "string"
          },
          "sortOrder": {
            "type": "integer"
          },
          "visible": {
            "type": "boolean"
          },
          "createdAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          },
          "updatedAt": {
            "type": [
              "string",
              "null"
            ],
            "format": "date-time"
          }
        },
        "additionalProperties": true
      }
    },
    "legacy": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "resolver": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "source": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

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

POST /api/developer/support/ai/support-items

Generate draft FAQ and support content

Auth
Account Bearer JWT
Scope
customers.view plus settings.manage and all-products scope.
Request fields
  • productId: integer
  • currentProduct: object. Operation-specific extension data; do not put credentials or unnecessary personal information here.
  • notes: string
  • instructions: string
  • referenceUrl: string
  • referenceUrls: array
  • tone: string
Returns
HTTP 200: draftId, toolType, suggestions, provider, model, status, persistenceWarning.
Notes
Uses the product setup AI draft store, not operational drafts. Suggested faqs, supportNote, installSummary, troubleshooting and warnings must be reviewed and saved through the supported content workflow. Does not automatically publish articles, change refund terms or send a reply. Provider configuration and quotas still apply.
Request, response and error reference

Request (application/json)

{
  "type": "object",
  "properties": {
    "productId": {
      "type": "integer",
      "minimum": 1
    },
    "currentProduct": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "notes": {
      "type": "string"
    },
    "instructions": {
      "type": "string"
    },
    "referenceUrl": {
      "type": "string"
    },
    "referenceUrls": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tone": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

HTTP 200 response (application/json)

{
  "type": "object",
  "properties": {
    "draftId": {
      "anyOf": [
        {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1
            },
            {
              "type": "string",
              "pattern": "^[1-9][0-9]*$"
            }
          ],
          "description": "A positive identifier. PostgreSQL bigint fields can be decimal strings; preserve them without lossy numeric conversion."
        },
        {
          "type": "null"
        }
      ]
    },
    "toolType": {
      "type": "string"
    },
    "suggestions": {
      "type": "object",
      "additionalProperties": true,
      "description": "Operation-specific extension data; do not put credentials or unnecessary personal information here."
    },
    "provider": {
      "type": "string"
    },
    "model": {
      "type": [
        "string",
        "null"
      ]
    },
    "status": {
      "type": "string"
    },
    "persistenceWarning": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

Documented failures: 400, 401, 403, 404, 409, 429, 500, 502, 503.