symmedia Hub GraphQL API Reference
symmedia Hub GraphQL API Reference
Welcome to the symmedia Hub GraphQL API Reference! This documentation provides detailed information about the available GraphQL API endpoints, queries, mutations, and types in our symmedia Hub platform.
API Endpoints
# non-productive environments:
https://api.{environment}.symmedia-hub.com/graphql
# Production server:
https://api.symmedia-hub.com/graphql
Headers
# Your Auth token
Authorization: Bearer <YOUR_TOKEN_HERE>
# Your API key
api-key: s3cretAP1k3y
Overview
The symmedia Hub GraphQL API allows developers to interact with our services programmatically. With this API, you can perform various operations related to customers, machines, service cases, and more.
Getting Started
To get started with the symmedia Hub GraphQL API, you will need API credentials and an understanding of GraphQL queries and mutations. Please refer to the Authentication section for details on obtaining API access tokens.
Documentation Structure
This documentation is organized as follows:
- Queries: Describes read-only operations and how to retrieve information from the API.
- Mutations: Covers write operations and how to make changes to the system.
- Types: Lists the data types used in the API.
Example Usage
Below is a simple example of how to use the symmedia Hub GraphQL API to retrieve your user information:
query {
myUser {
id
username
email
}
}
Authentication
All symmedia Hub API queries and mutations require dual authentication using a valid API Key and a valid Bearer Token. You need to include both in the HTTP headers of your requests.
Example Request Headers
POST /graphql HTTP/1.1
Host: api.symmedia-hub.com
api-key: <Your API Key>
Authorization: Bearer <Your Bearer Token>
Content-Type: application/json
In the example above:
<Your API Key>should be replaced with your valid API Key.<Your Bearer Token>should be replaced with your valid Bearer Token. To properly authenticate and access the symmedia Hub API, please ensure that you include both the API Key (api-key) and Bearer Token (Authorization) in the headers of your GraphQL requests to properly authenticate and access the symmedia Hub API.
How do you obtain an API key from symmedia?
Follow these steps to obtain an API key from symmedia:
-
Contact symmedia: Reach out to symmedia through their official website, support email, or support hotline to request an API key.
-
Submit your Request: Explain the purpose of your request or the type of integration you plan to undertake with the API key. This will help symmedia provide you with the appropriate key and instructions.
-
Receive Documentation and Instructions: symmedia will likely provide specific instructions on how to use the API key for authentication. Make sure you carefully read and follow these instructions.
-
Prioritize Security: Treat the API key with care and store it securely, as it grants access to systems and data. Adhere to the best security practices to protect your API key.
-
Integrate: Once you have the API key and have followed the provided instructions, you can integrate it into your systems and utilize the symmedia API as needed.
How to Obtain an Bearer Token (Development)
Follow these steps to obtain a Bearer Token:
- Log in to the symmedia Hub: Go to the portal and log in with your credentials.
- Open the developer tools: Open your browser's developer tools and go to the Network tab.
- Search for a GraphQL request: Search for the GraphQL request in the network tab. The request should look like this: graphql?myTenantUser
- Copy the Bearer Token: Copy the Bearer Token from the request and use it in the Header for the API Request.
Queries
assetsPaginated
Response
Returns an AssetQueryResult!
Example
Query
query AssetsPaginated {
assetsPaginated {
data {
id
edgeDevice {
id
iotDeviceId
}
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
serialNumber
displayName
avatar
machineModel {
id
modelName
technology
brand
externalId
}
facility {
id
tenant {
...TenantFragment
}
name
description
}
dataSourceConfigs {
id
tenantId
name
adapterType
payload {
...DataSourceConfigPayloadFragment
}
}
machine {
id
owner {
...OwnerFragment
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
...EdgeDeviceFragment
}
collaborationStatus
}
}
}
}
Response
{"data": {"assetsPaginated": {"data": [Asset]}}}
customer
Example
Query
query Customer(
$id: ID,
$externalId: String
) {
customer(
id: $id,
externalId: $externalId
) {
id
name
status
externalId
serviceOrganisation {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
followTheSun {
providesFollowTheSunSupport
zoneId
schedule {
...ServiceScheduleFragment
}
}
}
address {
country
state
city
postalCode
street
street2
}
}
}
Variables
{"id": "cus_3f9a2b7c", "externalId": "ERP-10293"}
Response
{
"data": {
"customer": {
"id": "cus_3f9a2b7c",
"name": "Acme Manufacturing GmbH",
"status": "ONBOARDED",
"externalId": "ERP-10293",
"serviceOrganisation": ServiceOrganisation,
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
}
}
}
customerMachine
Response
Returns a CustomerMachine
Example
Query
query CustomerMachine(
$customerMachineId: ID,
$externalId: String
) {
customerMachine(
customerMachineId: $customerMachineId,
externalId: $externalId
) {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
id
tenant {
...TenantFragment
}
name
description
followTheSun {
...FollowTheSunFragment
}
}
address {
country
state
city
postalCode
street
street2
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
tenant {
...TenantFragment
}
ownerType
owner {
... on CustomerMachine {
...CustomerMachineFragment
}
... on Asset {
...AssetFragment
}
}
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
id
iotDeviceId
}
collaborationStatus
}
}
}
Variables
{"customerMachineId": "cm_6f7a8b9c", "externalId": "ASSET-00931"}
Response
{
"data": {
"customerMachine": {
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"machineModel": MachineModel,
"displayName": "Example string",
"externalId": "ASSET-00931",
"avatar": "Example string",
"warrantyBegin": "2024-06-01",
"warrantyEnd": "2024-06-01",
"status": "CONNECTED",
"customer": Customer,
"isSp1Migration": true,
"edgeDeviceSerialNumber": "EDGE-00931",
"machine": Machine
}
}
}
customerMachinesPaginated
Response
Returns a CustomerMachineQueryResult!
Arguments
| Name | Description |
|---|---|
options - CustomerMachineOptions
|
Example
Query
query CustomerMachinesPaginated($options: CustomerMachineOptions) {
customerMachinesPaginated(options: $options) {
data {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
...ServiceOrganisationFragment
}
address {
...AddressFragment
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
...OwnerFragment
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
...EdgeDeviceFragment
}
collaborationStatus
}
}
}
}
Variables
{
"options": {
"filter": {"serialNumber": {"equals": "SN-2024-00931"}},
"pagination": {"page": 1, "pageSize": 25}
}
}
Response
{
"data": {
"customerMachinesPaginated": {
"data": [CustomerMachine]
}
}
}
customersPaginated
Response
Returns a CustomerQueryResult!
Arguments
| Name | Description |
|---|---|
options - CustomerOptions
|
Example
Query
query CustomersPaginated($options: CustomerOptions) {
customersPaginated(options: $options) {
data {
id
name
status
externalId
serviceOrganisation {
id
tenant {
...TenantFragment
}
name
description
followTheSun {
...FollowTheSunFragment
}
}
address {
country
state
city
postalCode
street
street2
}
}
pageInfo {
totalElements
totalPages
currentPage
fromElement
untilElement
}
}
}
Variables
{
"options": {
"filter": {"status": {"is": "ONBOARDED"}},
"pagination": {"page": 1, "pageSize": 25},
"sortBy": [{"name": "ASC"}]
}
}
Response
{
"data": {
"customersPaginated": {
"data": [Customer],
"pageInfo": {
"totalElements": 132,
"totalPages": 6,
"currentPage": 1,
"fromElement": 1,
"untilElement": 25
}
}
}
}
dataPoints
Response
Returns a DataPointsResult
Arguments
| Name | Description |
|---|---|
options - DataPointsOptions!
|
Example
Query
query DataPoints($options: DataPointsOptions!) {
dataPoints(options: $options) {
machineDataPoints {
assetId
dataPoints {
timestampUtc
dataPointName
value
}
}
}
}
Variables
{
"options": {
"assetIds": ["ast_3e4f5a6b"],
"timeRange": {
"from": "2024-06-01T00:00:00.000Z",
"to": "2024-06-01T23:59:59.000Z"
},
"dataPointNames": ["temperature", "pressure"],
"take": 100,
"dataPointQueryRange": "IN_RANGE",
"sortOrder": "ASCENDING"
}
}
Response
{
"data": {
"dataPoints": {
"machineDataPoints": [MachineDataPoints]
}
}
}
facilitiesPaginated
Response
Returns a FacilityQueryResult!
Example
Query
query FacilitiesPaginated {
facilitiesPaginated {
data {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
}
}
}
Response
{"data": {"facilitiesPaginated": {"data": [Facility]}}}
machineInvoiceEnclosuresPaginated
Response
Returns a MachineInvoiceEnclosureQueryResult!
Arguments
| Name | Description |
|---|---|
input - MachineInvoiceEnclosuresInput!
|
|
options - MachineInvoiceEnclosureOptions!
|
Example
Query
query MachineInvoiceEnclosuresPaginated(
$input: MachineInvoiceEnclosuresInput!,
$options: MachineInvoiceEnclosureOptions!
) {
machineInvoiceEnclosuresPaginated(
input: $input,
options: $options
) {
pageInfo {
totalElements
totalPages
currentPage
fromElement
untilElement
}
data {
machine {
id
owner {
...OwnerFragment
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
...EdgeDeviceFragment
}
collaborationStatus
}
billedOwnerTenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
serialNumber
validFor {
year
month
}
ownerType
customer {
id
name
status
externalId
serviceOrganisation {
...ServiceOrganisationFragment
}
address {
...AddressFragment
}
}
licenseType
}
}
}
Variables
{
"input": {"yearMonthInput": {"year": 2024, "month": 6}},
"options": {
"filter": {"ownerType": {"is": "CUSTOMER_MACHINE"}},
"pagination": {"page": 1, "pageSize": 25}
}
}
Response
{
"data": {
"machineInvoiceEnclosuresPaginated": {
"pageInfo": {
"totalElements": 132,
"totalPages": 6,
"currentPage": 1,
"fromElement": 1,
"untilElement": 25
},
"data": [MachineInvoiceEnclosure]
}
}
}
machineModel
Response
Returns a MachineModel
Arguments
| Name | Description |
|---|---|
machineModelId - ID
|
|
externalId - String
|
|
tenantLinkType - TenantLinkType
|
Default = ALL |
Example
Query
query MachineModel(
$machineModelId: ID,
$externalId: String,
$tenantLinkType: TenantLinkType
) {
machineModel(
machineModelId: $machineModelId,
externalId: $externalId,
tenantLinkType: $tenantLinkType
) {
id
modelName
technology
brand
externalId
}
}
Variables
{
"machineModelId": "cus_3f9a2b7c",
"externalId": "Example string",
"tenantLinkType": "ALL"
}
Response
{
"data": {
"machineModel": {
"id": "mm_4d5e6f7a",
"modelName": "SX-500",
"technology": "Injection Molding",
"brand": "Acme",
"externalId": "MODEL-500"
}
}
}
machineModelsPaginated
Response
Returns a MachineModelQueryResult!
Arguments
| Name | Description |
|---|---|
options - MachineModelOptions
|
Example
Query
query MachineModelsPaginated($options: MachineModelOptions) {
machineModelsPaginated(options: $options) {
data {
id
modelName
technology
brand
externalId
}
}
}
Variables
{"options": {"filter": {"tenantLinkType": "ALL"}}}
Response
{
"data": {
"machineModelsPaginated": {"data": [MachineModel]}
}
}
myUser
Response
Returns a User!
Example
Query
query MyUser {
myUser {
id
name
email
tenant {
id
name
shortname
status
address {
country
state
city
postalCode
street
street2
}
helpLink
}
identityId
isTechnicalUser
}
}
Response
{
"data": {
"myUser": {
"id": "usr_9d8e7f6a",
"name": "Jane Doe",
"email": "jane.doe@example.com",
"tenant": Tenant,
"identityId": "idp_5c6d7e8f",
"isTechnicalUser": false
}
}
}
permissionsOfCurrentUserPaginated
Response
Returns a PermissionsOfCurrentUserQueryResult!
Example
Query
query PermissionsOfCurrentUserPaginated {
permissionsOfCurrentUserPaginated {
data {
key
displayName
description
applicationId
}
}
}
Response
{
"data": {
"permissionsOfCurrentUserPaginated": {
"data": [Permission]
}
}
}
serviceCasesPaginated
Response
Returns a ServiceCaseQueryResult!
Arguments
| Name | Description |
|---|---|
options - ServiceCaseOptions!
|
Example
Query
query ServiceCasesPaginated($options: ServiceCaseOptions!) {
serviceCasesPaginated(options: $options) {
data {
id
displayId
state {
id
index
name
isClosed
}
title
description
createdAt
updatedAt
closedAt
firstTimeAssignedAt
firstTimeInProgressAt
creator {
id
name
email
tenant {
...TenantFragment
}
identityId
isTechnicalUser
}
assignee {
id
name
email
tenant {
...TenantFragment
}
identityId
isTechnicalUser
}
customerMachine {
id
serialNumber
machineModel {
...MachineModelFragment
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
...CustomerFragment
}
isSp1Migration
edgeDeviceSerialNumber
machine {
...MachineFragment
}
}
priority
severity
externalId
customFields {
key
value
}
closingReport {
id
isSolved
notes
}
remoteAccess {
totalDurationInMinutes
}
}
}
}
Variables
{"options": {"view": "SERVICE_PROVIDER", "filter": {"isClosed": false}}}
Response
{
"data": {
"serviceCasesPaginated": {"data": [ServiceCase]}
}
}
serviceContractsPaginated
Response
Returns a ServiceContractQueryResult!
Example
Query
query ServiceContractsPaginated {
serviceContractsPaginated {
data {
id
contractName
shortDescription
isAssignable
followTheSun
serviceContractAssignments {
id
serviceContract {
...ServiceContractFragment
}
customerMachine {
...CustomerMachineFragment
}
startDate
endDate
createdAt
updatedAt
}
}
}
}
Response
{
"data": {
"serviceContractsPaginated": {
"data": [ServiceContract]
}
}
}
serviceOrganisationsPaginated
Response
Returns a ServiceOrganisationQueryResult!
Example
Query
query ServiceOrganisationsPaginated {
serviceOrganisationsPaginated {
data {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
followTheSun {
providesFollowTheSunSupport
zoneId
schedule {
...ServiceScheduleFragment
}
}
}
}
}
Response
{
"data": {
"serviceOrganisationsPaginated": {
"data": [ServiceOrganisation]
}
}
}
tenant
Example
Query
query Tenant($id: ID!) {
tenant(id: $id) {
id
name
shortname
status
address {
country
state
city
postalCode
street
street2
}
helpLink
}
}
Variables
{"id": "ten_1a2b3c4d"}
Response
{
"data": {
"tenant": {
"id": "ten_1a2b3c4d",
"name": "symmedia Service GmbH",
"shortname": "symmedia",
"status": "ACTIVE",
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
},
"helpLink": "https://help.symmedia-hub.com"
}
}
}
tenantsPaginated
Response
Returns a TenantQueryResult!
Arguments
| Name | Description |
|---|---|
options - TenantOptions
|
Example
Query
query TenantsPaginated($options: TenantOptions) {
tenantsPaginated(options: $options) {
data {
id
name
shortname
status
address {
country
state
city
postalCode
street
street2
}
helpLink
}
}
}
Variables
{"options": {"filter": {"status": ["ACTIVE"]}}}
Response
{"data": {"tenantsPaginated": {"data": [Tenant]}}}
timeSeries
Response
Returns a TimeSeriesResult
Arguments
| Name | Description |
|---|---|
options - TimeSeriesOptions!
|
Example
Query
query TimeSeries($options: TimeSeriesOptions!) {
timeSeries(options: $options) {
timestamps
assetSeries {
assetId
dataPointSeries {
dataPointName
values {
...FloatWithTimestampFragment
}
}
}
}
}
Variables
{
"options": {
"assetIds": ["ast_3e4f5a6b"],
"timeRange": {
"from": "2024-06-01T00:00:00.000Z",
"to": "2024-06-01T23:59:59.000Z"
},
"dataPointNames": ["temperature"],
"aggregation": "AVG",
"binSize": "PT1H",
"dataSource": "PRE_AGGREGATED"
}
}
Response
{
"data": {
"timeSeries": {
"timestamps": [
"2024-06-01T14:30:00.000Z"
],
"assetSeries": [AssetTimeSeries]
}
}
}
Mutations
createCustomer
Response
Returns a Customer
Arguments
| Name | Description |
|---|---|
customer - CreateCustomerInput!
|
Example
Query
mutation CreateCustomer($customer: CreateCustomerInput!) {
createCustomer(customer: $customer) {
id
name
status
externalId
serviceOrganisation {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
followTheSun {
providesFollowTheSunSupport
zoneId
schedule {
...ServiceScheduleFragment
}
}
}
address {
country
state
city
postalCode
street
street2
}
}
}
Variables
{
"customer": {
"name": "Acme Manufacturing GmbH",
"externalId": "ERP-10293",
"serviceOrganisation": "so_2b3c4d5e",
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"postalCode": "33602",
"city": "Bielefeld",
"street": "Turnerstraße 27"
}
}
}
Response
{
"data": {
"createCustomer": {
"id": "cus_3f9a2b7c",
"name": "Acme Manufacturing GmbH",
"status": "ONBOARDED",
"externalId": "ERP-10293",
"serviceOrganisation": ServiceOrganisation,
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
}
}
}
createCustomerMachine
Response
Returns a CustomerMachine
Arguments
| Name | Description |
|---|---|
customerMachine - CreateCustomerMachineInput!
|
Example
Query
mutation CreateCustomerMachine($customerMachine: CreateCustomerMachineInput!) {
createCustomerMachine(customerMachine: $customerMachine) {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
id
tenant {
...TenantFragment
}
name
description
followTheSun {
...FollowTheSunFragment
}
}
address {
country
state
city
postalCode
street
street2
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
tenant {
...TenantFragment
}
ownerType
owner {
... on CustomerMachine {
...CustomerMachineFragment
}
... on Asset {
...AssetFragment
}
}
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
id
iotDeviceId
}
collaborationStatus
}
}
}
Variables
{
"customerMachine": {
"customer": {"customerId": "cus_3f9a2b7c"},
"serialNumber": "SN-2024-00931",
"machineModel": {"machineModelId": "mm_4d5e6f7a"},
"externalId": "ASSET-00931",
"warrantyBegin": "2024-01-01",
"warrantyEnd": "2026-01-01"
}
}
Response
{
"data": {
"createCustomerMachine": {
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"machineModel": MachineModel,
"displayName": "Example string",
"externalId": "ASSET-00931",
"avatar": "Example string",
"warrantyBegin": "2024-06-01",
"warrantyEnd": "2024-06-01",
"status": "CONNECTED",
"customer": Customer,
"isSp1Migration": true,
"edgeDeviceSerialNumber": "EDGE-00931",
"machine": Machine
}
}
}
createMachineModel
Response
Returns a MachineModel
Arguments
| Name | Description |
|---|---|
machineModel - CreateMachineModelInput!
|
Example
Query
mutation CreateMachineModel($machineModel: CreateMachineModelInput!) {
createMachineModel(machineModel: $machineModel) {
id
modelName
technology
brand
externalId
}
}
Variables
{
"machineModel": {
"modelName": "SX-500",
"technology": "Injection Molding",
"brand": "Acme",
"externalId": "MODEL-500"
}
}
Response
{
"data": {
"createMachineModel": {
"id": "mm_4d5e6f7a",
"modelName": "SX-500",
"technology": "Injection Molding",
"brand": "Acme",
"externalId": "MODEL-500"
}
}
}
updateCustomer
Response
Returns a Customer
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
customer - UpdateCustomerInput!
|
Example
Query
mutation UpdateCustomer(
$id: ID!,
$customer: UpdateCustomerInput!
) {
updateCustomer(
id: $id,
customer: $customer
) {
id
name
status
externalId
serviceOrganisation {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
followTheSun {
providesFollowTheSunSupport
zoneId
schedule {
...ServiceScheduleFragment
}
}
}
address {
country
state
city
postalCode
street
street2
}
}
}
Variables
{
"id": "cus_3f9a2b7c",
"customer": {
"name": "Acme Manufacturing GmbH",
"externalId": "ERP-10293",
"websiteUrl": "https://acme.example.com"
}
}
Response
{
"data": {
"updateCustomer": {
"id": "cus_3f9a2b7c",
"name": "Acme Manufacturing GmbH",
"status": "ONBOARDED",
"externalId": "ERP-10293",
"serviceOrganisation": ServiceOrganisation,
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
}
}
}
updateCustomerByExternalId
Response
Returns a Customer
Arguments
| Name | Description |
|---|---|
externalId - ID!
|
|
customer - UpdateCustomerInput!
|
Example
Query
mutation UpdateCustomerByExternalId(
$externalId: ID!,
$customer: UpdateCustomerInput!
) {
updateCustomerByExternalId(
externalId: $externalId,
customer: $customer
) {
id
name
status
externalId
serviceOrganisation {
id
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
name
description
followTheSun {
providesFollowTheSunSupport
zoneId
schedule {
...ServiceScheduleFragment
}
}
}
address {
country
state
city
postalCode
street
street2
}
}
}
Variables
{
"externalId": "cus_3f9a2b7c",
"customer": {
"name": "Acme Manufacturing GmbH",
"externalId": "ERP-10293",
"websiteUrl": "https://acme.example.com"
}
}
Response
{
"data": {
"updateCustomerByExternalId": {
"id": "cus_3f9a2b7c",
"name": "Acme Manufacturing GmbH",
"status": "ONBOARDED",
"externalId": "ERP-10293",
"serviceOrganisation": ServiceOrganisation,
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
}
}
}
updateCustomerMachine
Response
Returns a CustomerMachine
Arguments
| Name | Description |
|---|---|
id - ID!
|
|
customerMachine - UpdateCustomerMachineInput!
|
Example
Query
mutation UpdateCustomerMachine(
$id: ID!,
$customerMachine: UpdateCustomerMachineInput!
) {
updateCustomerMachine(
id: $id,
customerMachine: $customerMachine
) {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
id
tenant {
...TenantFragment
}
name
description
followTheSun {
...FollowTheSunFragment
}
}
address {
country
state
city
postalCode
street
street2
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
tenant {
...TenantFragment
}
ownerType
owner {
... on CustomerMachine {
...CustomerMachineFragment
}
... on Asset {
...AssetFragment
}
}
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
id
iotDeviceId
}
collaborationStatus
}
}
}
Variables
{
"id": "cus_3f9a2b7c",
"customerMachine": {
"serialNumber": "SN-2024-00931",
"warrantyBegin": "2024-01-01",
"warrantyEnd": "2026-01-01"
}
}
Response
{
"data": {
"updateCustomerMachine": {
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"machineModel": MachineModel,
"displayName": "Example string",
"externalId": "ASSET-00931",
"avatar": "Example string",
"warrantyBegin": "2024-06-01",
"warrantyEnd": "2024-06-01",
"status": "CONNECTED",
"customer": Customer,
"isSp1Migration": true,
"edgeDeviceSerialNumber": "EDGE-00931",
"machine": Machine
}
}
}
updateCustomerMachineByExternalId
Response
Returns a CustomerMachine
Arguments
| Name | Description |
|---|---|
externalId - ID!
|
|
customerMachine - UpdateCustomerMachineInput!
|
Example
Query
mutation UpdateCustomerMachineByExternalId(
$externalId: ID!,
$customerMachine: UpdateCustomerMachineInput!
) {
updateCustomerMachineByExternalId(
externalId: $externalId,
customerMachine: $customerMachine
) {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
id
tenant {
...TenantFragment
}
name
description
followTheSun {
...FollowTheSunFragment
}
}
address {
country
state
city
postalCode
street
street2
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
tenant {
...TenantFragment
}
ownerType
owner {
... on CustomerMachine {
...CustomerMachineFragment
}
... on Asset {
...AssetFragment
}
}
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
id
iotDeviceId
}
collaborationStatus
}
}
}
Variables
{
"externalId": "cus_3f9a2b7c",
"customerMachine": {
"serialNumber": "SN-2024-00931",
"warrantyBegin": "2024-01-01",
"warrantyEnd": "2026-01-01"
}
}
Response
{
"data": {
"updateCustomerMachineByExternalId": {
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"machineModel": MachineModel,
"displayName": "Example string",
"externalId": "ASSET-00931",
"avatar": "Example string",
"warrantyBegin": "2024-06-01",
"warrantyEnd": "2024-06-01",
"status": "CONNECTED",
"customer": Customer,
"isSp1Migration": true,
"edgeDeviceSerialNumber": "EDGE-00931",
"machine": Machine
}
}
}
updateServiceCase
Response
Returns a ServiceCase
Arguments
| Name | Description |
|---|---|
serviceCase - UpdateServiceCaseInput!
|
Example
Query
mutation UpdateServiceCase($serviceCase: UpdateServiceCaseInput!) {
updateServiceCase(serviceCase: $serviceCase) {
id
displayId
state {
id
index
name
isClosed
}
title
description
createdAt
updatedAt
closedAt
firstTimeAssignedAt
firstTimeInProgressAt
creator {
id
name
email
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
identityId
isTechnicalUser
}
assignee {
id
name
email
tenant {
id
name
shortname
status
address {
...AddressFragment
}
helpLink
}
identityId
isTechnicalUser
}
customerMachine {
id
serialNumber
machineModel {
id
modelName
technology
brand
externalId
}
displayName
externalId
avatar
warrantyBegin
warrantyEnd
status
customer {
id
name
status
externalId
serviceOrganisation {
...ServiceOrganisationFragment
}
address {
...AddressFragment
}
}
isSp1Migration
edgeDeviceSerialNumber
machine {
id
owner {
...OwnerFragment
}
technology
modelName
brand
avatar
serialNumber
edgeDevice {
...EdgeDeviceFragment
}
collaborationStatus
}
}
priority
severity
externalId
customFields {
key
value
}
closingReport {
id
isSolved
notes
}
remoteAccess {
totalDurationInMinutes
}
}
}
Variables
{
"serviceCase": {
"serviceCaseId": "sc_8b9c0d1e",
"externalId": "TICKET-10492",
"priority": 1
}
}
Response
{
"data": {
"updateServiceCase": {
"id": "sc_8b9c0d1e",
"displayId": "SC-10492",
"state": ServiceCaseState,
"title": "Machine not starting after firmware update",
"description": "Customer reports the machine fails to boot after the latest firmware rollout.",
"createdAt": "2024-06-01T14:30:00.000Z",
"updatedAt": "2024-06-01T14:30:00.000Z",
"closedAt": "2024-06-01T14:30:00.000Z",
"firstTimeAssignedAt": "2024-06-01T14:30:00.000Z",
"firstTimeInProgressAt": "2024-06-01T14:30:00.000Z",
"creator": User,
"assignee": User,
"customerMachine": CustomerMachine,
"priority": 2,
"severity": "MACHINE_BREAKDOWN",
"externalId": "TICKET-10492",
"customFields": [CustomFieldValue],
"closingReport": ClosingReport,
"remoteAccess": RemoteAccess
}
}
}
Types
AdapterType
Values
| Enum Value | Description |
|---|---|
|
|
Example
OPCUA
Address
Fields
| Field Name | Description |
|---|---|
country - String!
|
The country of the address. |
state - String
|
The state or region of the address, if applicable. |
city - String
|
The city of the address. |
postalCode - String
|
The postal code of the address. |
street - String
|
The street and house number of the address. |
street2 - String
|
An optional second address line, e.g. for a building or suite number. |
Example
{
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
AddressFilter
Fields
| Input Field | Description |
|---|---|
country - StringExpression
|
|
postalCode - StringExpression
|
|
city - StringExpression
|
|
street - StringExpression
|
|
street2 - StringExpression
|
|
state - StringExpression
|
|
and - [AddressFilter!]
|
|
or - [AddressFilter!]
|
|
not - AddressFilter
|
Example
{"city": {"equals": "Bielefeld"}, "postalCode": {"equals": "33602"}}
AggregationFunction
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
AVG
Asset
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the asset. |
edgeDevice - EdgeDevice
|
Substituted by 'machine.edgeDevice'. |
tenant - Tenant
|
The tenant that owns this asset. |
serialNumber - String!
|
Substituted by 'machine.serialNumber'. |
displayName - String
|
The display name of the asset, as shown in the symmedia Hub UI. |
avatar - String
|
URL of an image representing the asset. |
machineModel - MachineModel
|
Substituted by respective fields in 'machine'. |
facility - Facility
|
The facility (site) the asset is located at. |
dataSourceConfigs - [DataSourceConfigDetails]
|
Data source configurations (e.g. OPC UA) used to collect machine data points for this asset. |
machine - Machine
|
The unified machine record for this asset, consolidating fields such as serial number, brand and technology that were previously duplicated on the asset itself. |
Example
{
"id": "ast_3e4f5a6b",
"edgeDevice": EdgeDevice,
"tenant": Tenant,
"serialNumber": "SN-2024-00931",
"displayName": "CNC Mill #3",
"avatar": "Example string",
"machineModel": MachineModel,
"facility": Facility,
"dataSourceConfigs": [DataSourceConfigDetails],
"machine": Machine
}
AssetQueryResult
Fields
| Field Name | Description |
|---|---|
data - [Asset!]!
|
Example
{"data": [Asset]}
AssetTimeSeries
Fields
| Field Name | Description |
|---|---|
assetId - ID!
|
|
dataPointSeries - [DataPointTimeSeries!]!
|
Example
{
"assetId": "cus_3f9a2b7c",
"dataPointSeries": [DataPointTimeSeries]
}
Boolean
Description
The 'Boolean' scalar type represents 'true' or 'false' .
Example
true
ClosingReport
Example
{
"id": "cus_3f9a2b7c",
"isSolved": true,
"notes": "Example string"
}
CreateCustomerAddressInput
CreateCustomerInput
Fields
| Input Field | Description |
|---|---|
name - String!
|
|
externalId - String
|
|
serviceOrganisation - ID!
|
|
address - CreateCustomerAddressInput!
|
Example
{
"name": "Acme Manufacturing GmbH",
"externalId": "ERP-10293",
"serviceOrganisation": "so_2b3c4d5e",
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"postalCode": "33602",
"city": "Bielefeld",
"street": "Turnerstraße 27"
}
}
CreateCustomerMachineInput
Fields
| Input Field | Description |
|---|---|
customer - CustomerInput!
|
|
serialNumber - String!
|
|
machineModel - MachineModelInput!
|
|
externalId - String
|
|
edgeDeviceSerialNumber - String
|
|
warrantyBegin - Date
|
|
warrantyEnd - Date
|
|
isSp1Migration - Boolean
|
Example
{
"customer": {"customerId": "cus_3f9a2b7c"},
"serialNumber": "SN-2024-00931",
"machineModel": {"machineModelId": "mm_4d5e6f7a"},
"externalId": "ASSET-00931",
"warrantyBegin": "2024-01-01",
"warrantyEnd": "2026-01-01"
}
CreateMachineModelInput
CustomFieldValue
Customer
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the customer. |
name - String!
|
The name of the customer. |
status - CustomerStatus!
|
The onboarding status of the customer. |
externalId - String
|
Optional external reference id for the customer, e.g. from the operator's own system. |
serviceOrganisation - ServiceOrganisation
|
The service organisation responsible for servicing this customer. |
address - Address
|
The address of the customer. |
Example
{
"id": "cus_3f9a2b7c",
"name": "Acme Manufacturing GmbH",
"status": "ONBOARDED",
"externalId": "ERP-10293",
"serviceOrganisation": ServiceOrganisation,
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
}
}
CustomerFilter
Fields
| Input Field | Description |
|---|---|
id - IDExpression
|
|
name - StringExpression
|
|
status - CustomerStatusExpression
|
|
linkedTenantId - StringExpression
|
|
externalId - StringExpression
|
|
websiteUrl - StringExpression
|
|
address - AddressFilter
|
|
and - [CustomerFilter!]
|
|
or - [CustomerFilter!]
|
|
not - CustomerFilter
|
Example
{"status": {"is": "ONBOARDED"}, "name": {"contains": "Acme"}}
CustomerInput
CustomerMachine
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the customer machine. |
serialNumber - String!
|
Substituted by 'machine.serialNumber'. |
machineModel - MachineModel
|
The machine model this customer machine is based on. |
displayName - String
|
Discontinued. To be removed. |
externalId - String
|
Optional external reference id for the customer machine, e.g. from the operator's own asset management system. |
avatar - String
|
URL of an image representing the customer machine. |
warrantyBegin - Date
|
The date the machine's warranty period begins. |
warrantyEnd - Date
|
The date the machine's warranty period ends. |
status - CustomerMachineStatus
|
Substituted by 'machine.collaborationStatus'. |
customer - Customer
|
The customer (operator) who owns this machine. |
isSp1Migration - Boolean
|
Whether this customer machine was migrated from the legacy SP1 system. |
edgeDeviceSerialNumber - String
|
The serial number of the connected edge device (IoT gateway). |
machine - Machine
|
The unified machine record for this customer machine, consolidating fields such as serial number and collaboration status that were previously duplicated here. |
Example
{
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"machineModel": MachineModel,
"displayName": "Example string",
"externalId": "ASSET-00931",
"avatar": "Example string",
"warrantyBegin": "2024-06-01",
"warrantyEnd": "2024-06-01",
"status": "CONNECTED",
"customer": Customer,
"isSp1Migration": true,
"edgeDeviceSerialNumber": "EDGE-00931",
"machine": Machine
}
CustomerMachineFilter
Fields
| Input Field | Description |
|---|---|
externalId - StringExpression
|
|
customerId - IDExpression
|
|
customerName - StringExpression
|
|
status - CustomerMachineStatusExpression
|
|
serialNumber - StringExpression
|
|
machineModelName - StringExpression
|
|
brand - StringExpression
|
|
technology - StringExpression
|
|
id - StringExpression
|
|
serviceContracts - StringExpression
|
Example
{"serialNumber": {"equals": "SN-2024-00931"}, "status": {"is": "CONNECTED"}}
CustomerMachineOptions
Fields
| Input Field | Description |
|---|---|
filter - CustomerMachineFilter
|
|
pagination - PaginationInput
|
|
sortBy - [CustomerMachineSorter!]
|
Example
{
"filter": {"serialNumber": {"equals": "SN-2024-00931"}},
"pagination": {"page": 1, "pageSize": 25}
}
CustomerMachineQueryResult
Fields
| Field Name | Description |
|---|---|
data - [CustomerMachine!]!
|
Example
{"data": [CustomerMachine]}
CustomerMachineSorter
Fields
| Input Field | Description |
|---|---|
id - SortDirection
|
|
status - SortDirection
|
|
brand - SortDirection
|
|
technology - SortDirection
|
|
model - SortDirection
|
|
externalId - SortDirection
|
|
serialNumber - SortDirection
|
|
customerName - SortDirection
|
Example
{"serialNumber": "ASC"}
CustomerMachineStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
CONNECTED
CustomerMachineStatusExpression
Fields
| Input Field | Description |
|---|---|
is - CustomerMachineStatus
|
Example
{"is": "CONNECTED"}
CustomerOptions
Fields
| Input Field | Description |
|---|---|
filter - CustomerFilter
|
|
pagination - PaginationInput
|
|
sortBy - [CustomerSorter!]
|
Example
{
"filter": {"status": {"is": "ONBOARDED"}},
"pagination": {"page": 1, "pageSize": 25},
"sortBy": [{"name": "ASC"}]
}
CustomerQueryResult
Fields
| Field Name | Description |
|---|---|
data - [Customer]!
|
|
pageInfo - PageInfo
|
Example
{
"data": [Customer],
"pageInfo": {
"totalElements": 132,
"totalPages": 6,
"currentPage": 1,
"fromElement": 1,
"untilElement": 25
}
}
CustomerSorter
Fields
| Input Field | Description |
|---|---|
name - SortDirection
|
|
status - SortDirection
|
|
linkedTenantId - SortDirection
|
|
externalId - SortDirection
|
|
websiteUrl - SortDirection
|
Example
{"name": "ASC"}
CustomerStatus
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Example
ONBOARDED
CustomerStatusExpression
Fields
| Input Field | Description |
|---|---|
is - CustomerStatus
|
Example
{"is": "ONBOARDED"}
DataPoint
DataPointQueryRange
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
IN_RANGE
DataPointSortOrder
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
ASCENDING
DataPointTimeSeries
Fields
| Field Name | Description |
|---|---|
dataPointName - String!
|
|
values - [FloatWithTimestamp]!
|
Example
{
"dataPointName": "Example string",
"values": [FloatWithTimestamp]
}
DataPointsOptions
Fields
| Input Field | Description |
|---|---|
assetIds - [ID!]!
|
|
timeRange - TimeRange!
|
|
dataPointNames - [String!]!
|
|
take - Int!
|
|
dataPointQueryRange - DataPointQueryRange!
|
|
sortOrder - DataPointSortOrder!
|
Example
{
"assetIds": ["ast_3e4f5a6b"],
"timeRange": {
"from": "2024-06-01T00:00:00.000Z",
"to": "2024-06-01T23:59:59.000Z"
},
"dataPointNames": ["temperature", "pressure"],
"take": 100,
"dataPointQueryRange": "IN_RANGE",
"sortOrder": "ASCENDING"
}
DataPointsResult
Fields
| Field Name | Description |
|---|---|
machineDataPoints - [MachineDataPoints!]!
|
Example
{"machineDataPoints": [MachineDataPoints]}
DataSourceConfigDetails
Fields
| Field Name | Description |
|---|---|
id - ID!
|
|
tenantId - ID!
|
|
name - String!
|
|
adapterType - AdapterType!
|
|
payload - [DataSourceConfigPayload]!
|
Example
{
"id": "cus_3f9a2b7c",
"tenantId": "cus_3f9a2b7c",
"name": "Example string",
"adapterType": "OPCUA",
"payload": [DataSourceConfigPayload]
}
DataSourceConfigPayload
Example
{
"measurementName": "Example string",
"heartbeatInterval": 33602,
"opcSamplingInterval": 33602,
"opcPublishingInterval": 33602,
"hotNode": true,
"isNumeric": true
}
Date
Description
RFC-3339 compliant date scalar, e.g. 1996-12-19 (java.time.LocalDate).
Example
"2024-06-01"
DateTime
Description
RFC-3339 compliant date time scalar, e.g. 1996-12-19T16:39:57-08:00 (java.time.OffsetDateTime).
Example
"2024-06-01T14:30:00.000Z"
Duration
Description
ISO-8601 standard format compatible to java.time.Duration
Example
"PT1H30M"
EdgeDevice
Facility
Example
{
"id": "fac_7a8b9c0d",
"tenant": Tenant,
"name": "Plant 1 - Bielefeld",
"description": "Main production facility"
}
FacilityQueryResult
Fields
| Field Name | Description |
|---|---|
data - [Facility!]!
|
Example
{"data": [Facility]}
Float
Description
The 'Float' scalar type represents signed double-precision fractional values as specified by IEEE 754.
Example
23.5
FloatWithTimestamp
FollowTheSun
Fields
| Field Name | Description |
|---|---|
providesFollowTheSunSupport - Boolean!
|
Whether this service organisation provides 24/7 follow-the-sun support. |
zoneId - String
|
The IANA time zone used to interpret the weekly schedule. |
schedule - [ServiceSchedule!]!
|
The weekly time windows during which this service organisation actively provides follow-the-sun support. |
Example
{
"providesFollowTheSunSupport": true,
"zoneId": "Example string",
"schedule": [ServiceSchedule]
}
ID
Description
The 'ID' scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as '4') or integer (such as 4) input value will be accepted as an ID.
Example
"cus_3f9a2b7c"
IDExpression
Fields
| Input Field | Description |
|---|---|
is - ID
|
Example
{"is": "cus_3f9a2b7c"}
Int
Description
The 'Int' scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
Example
33602
LocalTime
Description
24-hour clock time value string in the format hh:mm:ss or hh:mm:ss.sss.
Example
"14:30:00"
Machine
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the machine. |
owner - Owner
|
The tenant that owns this machine and how it relates to other tenants. |
technology - String
|
The manufacturing technology of the machine, e.g. Injection Molding. |
modelName - String
|
The model name of the machine. |
brand - String
|
The brand of the machine. |
avatar - String
|
URL of an image representing the machine. |
serialNumber - String!
|
The manufacturer's serial number of the machine. |
edgeDevice - EdgeDevice
|
The edge device (IoT gateway) connected to this machine. |
collaborationStatus - MachineCollaborationStatus
|
Whether and how this machine is currently shared with another tenant. |
Example
{
"id": "mch_5a6b7c8d",
"owner": Owner,
"technology": "Injection Molding",
"modelName": "SX-500",
"brand": "Acme",
"avatar": "Example string",
"serialNumber": "SN-2024-00931",
"edgeDevice": EdgeDevice,
"collaborationStatus": "SHARED"
}
MachineCollaborationStatus
Values
| Enum Value | Description |
|---|---|
|
|
The machine is only used internally by its owning tenant and not shared with any other tenant. |
|
|
The owning tenant has proposed sharing the machine with another tenant; the proposal is awaiting a response. |
|
|
The machine is actively shared with another tenant that accepted the collaboration proposal. |
|
|
The collaboration with the other tenant has been deactivated. |
|
|
The collaboration proposal was rejected by the receiving tenant. |
Example
SHARED
MachineDataPoints
Fields
| Field Name | Description |
|---|---|
assetId - ID!
|
|
dataPoints - [DataPoint!]!
|
Example
{
"assetId": "cus_3f9a2b7c",
"dataPoints": [DataPoint]
}
MachineInvoiceEnclosure
Fields
| Field Name | Description |
|---|---|
machine - Machine!
|
|
billedOwnerTenant - Tenant!
|
|
serialNumber - String
|
|
validFor - YearMonth!
|
|
ownerType - OwnerType!
|
|
customer - Customer
|
|
licenseType - MachineLicenseType!
|
Example
{
"machine": Machine,
"billedOwnerTenant": Tenant,
"serialNumber": "Example string",
"validFor": YearMonth,
"ownerType": "CUSTOMER_MACHINE",
"customer": Customer,
"licenseType": "CONNECTED"
}
MachineInvoiceEnclosureFilter
Fields
| Input Field | Description |
|---|---|
machineId - StringExpression
|
|
ownerType - OwnerTypeFilter
|
|
customerId - StringExpression
|
|
licenseType - MachineLicenseTypeFilter
|
|
serialNumber - StringExpression
|
|
and - [MachineInvoiceEnclosureFilter!]
|
|
or - [MachineInvoiceEnclosureFilter!]
|
|
not - MachineInvoiceEnclosureFilter
|
Not can only be used if there are no other filters defined on this level |
Example
{"ownerType": {"is": "CUSTOMER_MACHINE"}, "licenseType": {"is": "CONNECTED"}}
MachineInvoiceEnclosureOptions
Fields
| Input Field | Description |
|---|---|
filter - MachineInvoiceEnclosureFilter
|
|
pagination - PaginationInput!
|
|
sortBy - [MachineInvoiceEnclosureSorter!]
|
Example
{
"filter": {"ownerType": {"is": "CUSTOMER_MACHINE"}},
"pagination": {"page": 1, "pageSize": 25}
}
MachineInvoiceEnclosureQueryResult
Fields
| Field Name | Description |
|---|---|
pageInfo - PageInfo!
|
|
data - [MachineInvoiceEnclosure!]!
|
Example
{
"pageInfo": {
"totalElements": 132,
"totalPages": 6,
"currentPage": 1,
"fromElement": 1,
"untilElement": 25
},
"data": [MachineInvoiceEnclosure]
}
MachineInvoiceEnclosureSorter
Fields
| Input Field | Description |
|---|---|
machineId - SortDirection
|
|
ownerType - SortDirection
|
|
customerId - SortDirection
|
|
licenseType - SortDirection
|
|
serialNumber - SortDirection
|
Example
{"serialNumber": "ASC"}
MachineInvoiceEnclosuresInput
Fields
| Input Field | Description |
|---|---|
yearMonthInput - YearMonthInput!
|
Example
{"yearMonthInput": {"year": 2024, "month": 6}}
MachineLicenseType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
CONNECTED
MachineLicenseTypeFilter
Fields
| Input Field | Description |
|---|---|
is - MachineLicenseType
|
Example
{"is": "CONNECTED"}
MachineModel
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the machine model. |
modelName - String!
|
The model name of the machine model. |
technology - String!
|
The manufacturing technology of the machine model, e.g. Injection Molding. |
brand - String
|
The brand of the machine model. |
externalId - String
|
Optional external reference id for the machine model, e.g. from the operator's own system. |
Example
{
"id": "mm_4d5e6f7a",
"modelName": "SX-500",
"technology": "Injection Molding",
"brand": "Acme",
"externalId": "MODEL-500"
}
MachineModelFilter
Fields
| Input Field | Description |
|---|---|
tenantLinkType - TenantLinkType
|
Example
{"tenantLinkType": "SERVICE_PROVIDER"}
MachineModelInput
MachineModelOptions
Fields
| Input Field | Description |
|---|---|
filter - MachineModelFilter
|
Example
{"filter": {"tenantLinkType": "ALL"}}
MachineModelQueryResult
Fields
| Field Name | Description |
|---|---|
data - [MachineModel!]!
|
Example
{"data": [MachineModel]}
MachineOwner
Types
| Union Types |
|---|
Example
{
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"externalId": "ASSET-00931"
}
Owner
Fields
| Field Name | Description |
|---|---|
tenant - Tenant
|
|
ownerType - OwnerType
|
|
owner - MachineOwner
|
Example
{
"tenant": Tenant,
"ownerType": "CUSTOMER_MACHINE",
"owner": {
"id": "cm_6f7a8b9c",
"serialNumber": "SN-2024-00931",
"externalId": "ASSET-00931"
}
}
OwnerType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
CUSTOMER_MACHINE
OwnerTypeFilter
Fields
| Input Field | Description |
|---|---|
is - OwnerType
|
Example
{"is": "CUSTOMER_MACHINE"}
PageInfo
PaginationInput
Permission
PermissionsOfCurrentUserQueryResult
Fields
| Field Name | Description |
|---|---|
data - [Permission!]!
|
Example
{"data": [Permission]}
RemoteAccess
Fields
| Field Name | Description |
|---|---|
totalDurationInMinutes - Int!
|
Example
{"totalDurationInMinutes": 33602}
SeriesDataSource
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
PRE_AGGREGATED
ServiceCase
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the service case. |
displayId - String!
|
Human-readable identifier of the service case, unique per tenant (e.g. symmedia-0001). Meant to be shown to end users, unlike the internal id. |
state - ServiceCaseState
|
The current workflow state of the service case (New, In Progress or Closed). |
title - String!
|
Short summary of the service case (max. 50 characters). |
description - String
|
Optional free-text description with further details about the service case (max. 500 characters). |
createdAt - DateTime!
|
The date and time when the service case was created. |
updatedAt - DateTime
|
The date and time when the service case was last modified, e.g. by a change in state, assignment, priority or external id. |
closedAt - DateTime
|
The date and time when the service case was closed. Null while the service case is still open. |
firstTimeAssignedAt - DateTime
|
The first time when the service case was assigned to a service provider user. |
firstTimeInProgressAt - DateTime
|
The first time when the service case state was changed to IN_PROGRESS. |
creator - User
|
The user who created the service case. |
assignee - User
|
The service provider user currently assigned to work on the service case. |
customerMachine - CustomerMachine
|
The machine the service case was created for. |
priority - Int
|
The priority of the service case on a scale from 1 (lowest, Trivial) to 5 (highest, Blocker). |
severity - Severity
|
How severely the reported issue impacts the machine's operation. |
externalId - String
|
Optional reference id used to link the service case to a corresponding record in an external system, such as the customer's own ticketing system. |
customFields - [CustomFieldValue]
|
Tenant-configurable custom field values attached to the service case. |
closingReport - ClosingReport
|
Present once the service case has been closed, capturing whether the issue was solved and any closing notes. |
remoteAccess - RemoteAccess
|
Tracks remote access sessions used to remotely connect to the machine while working on the service case. |
Example
{
"id": "sc_8b9c0d1e",
"displayId": "SC-10492",
"state": ServiceCaseState,
"title": "Machine not starting after firmware update",
"description": "Customer reports the machine fails to boot after the latest firmware rollout.",
"createdAt": "2024-06-01T14:30:00.000Z",
"updatedAt": "2024-06-01T14:30:00.000Z",
"closedAt": "2024-06-01T14:30:00.000Z",
"firstTimeAssignedAt": "2024-06-01T14:30:00.000Z",
"firstTimeInProgressAt": "2024-06-01T14:30:00.000Z",
"creator": User,
"assignee": User,
"customerMachine": CustomerMachine,
"priority": 2,
"severity": "MACHINE_BREAKDOWN",
"externalId": "TICKET-10492",
"customFields": [CustomFieldValue],
"closingReport": ClosingReport,
"remoteAccess": RemoteAccess
}
ServiceCaseFilter
Fields
| Input Field | Description |
|---|---|
isClosed - Boolean
|
Example
{"isClosed": false}
ServiceCaseOptions
Fields
| Input Field | Description |
|---|---|
view - ServiceCaseView!
|
|
filter - ServiceCaseFilter
|
Example
{"view": "SERVICE_PROVIDER", "filter": {"isClosed": false}}
ServiceCaseQueryResult
Fields
| Field Name | Description |
|---|---|
data - [ServiceCase!]!
|
Example
{"data": [ServiceCase]}
ServiceCaseState
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the state. |
index - Int!
|
The position of this state in the service case workflow, starting at 0. |
name - String!
|
The human-readable name of the state, e.g. "New", "In Progress" or "Closed". |
isClosed - Boolean!
|
Whether a service case in this state is considered closed. |
Example
{
"id": "cus_3f9a2b7c",
"index": 33602,
"name": "Example string",
"isClosed": true
}
ServiceCaseView
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
SERVICE_PROVIDER
ServiceContract
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the service contract. |
contractName - String!
|
The name of the service contract. |
shortDescription - String
|
A short description of the service contract. |
isAssignable - Boolean!
|
Whether this service contract is currently active and can be assigned to customer machines. |
followTheSun - Boolean!
|
Whether this service contract includes 24/7 follow-the-sun coverage. |
serviceContractAssignments - [ServiceContractAssignment!]!
|
The assignments of this service contract to specific customer machines. |
Example
{
"id": "sctr_1c2d3e4f",
"contractName": "Premium Support 24/7",
"shortDescription": "Round-the-clock remote support with a 2h response time",
"isAssignable": true,
"followTheSun": true,
"serviceContractAssignments": [
ServiceContractAssignment
]
}
ServiceContractAssignment
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the service contract assignment. |
serviceContract - ServiceContract!
|
The service contract that is assigned. |
customerMachine - CustomerMachine
|
The customer machine the service contract is assigned to. |
startDate - DateTime!
|
The date and time from which this assignment is valid. |
endDate - DateTime!
|
The date and time until which this assignment is valid. |
createdAt - DateTime!
|
The date and time the assignment was created. |
updatedAt - DateTime
|
The date and time the assignment was last updated. |
Example
{
"id": "cus_3f9a2b7c",
"serviceContract": ServiceContract,
"customerMachine": CustomerMachine,
"startDate": "2024-06-01T14:30:00.000Z",
"endDate": "2024-06-01T14:30:00.000Z",
"createdAt": "2024-06-01T14:30:00.000Z",
"updatedAt": "2024-06-01T14:30:00.000Z"
}
ServiceContractQueryResult
Fields
| Field Name | Description |
|---|---|
data - [ServiceContract!]!
|
Example
{"data": [ServiceContract]}
ServiceOrganisation
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the service organisation. |
tenant - Tenant!
|
The tenant this service organisation belongs to. |
name - String!
|
The name of the service organisation. |
description - String
|
Optional description of the service organisation. |
followTheSun - FollowTheSun
|
Example
{
"id": "so_2b3c4d5e",
"tenant": Tenant,
"name": "Global Service Desk",
"description": "Handles service cases for EMEA customers",
"followTheSun": FollowTheSun
}
ServiceOrganisationQueryResult
Fields
| Field Name | Description |
|---|---|
data - [ServiceOrganisation!]!
|
Example
{"data": [ServiceOrganisation]}
ServiceSchedule
Fields
| Field Name | Description |
|---|---|
startTime - LocalTime!
|
The local start time of the scheduled time window. |
endTime - LocalTime!
|
The local end time of the scheduled time window. |
dayOfWeek - Int!
|
The day of the week this schedule applies to (1 = Monday ... 7 = Sunday, per ISO-8601). |
Example
{
"startTime": "14:30:00",
"endTime": "14:30:00",
"dayOfWeek": 33602
}
Severity
Values
| Enum Value | Description |
|---|---|
|
|
The machine is completely down and not operating. |
|
|
The machine is operating, but production is impaired. |
|
|
The reported issue has no impact on production. |
Example
MACHINE_BREAKDOWN
SortDirection
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
Example
ASC
String
Description
The 'String' scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
Example
"Example string"
StringExpression
Tenant
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the tenant. |
name - String!
|
The name of the tenant. |
shortname - String
|
A short, unique code identifying the tenant, e.g. used as the prefix of a service case's display id. |
status - TenantStatus
|
The onboarding status of the tenant. |
address - Address
|
The address of the tenant. |
helpLink - String
|
URL to the tenant's help or support resource. |
Example
{
"id": "ten_1a2b3c4d",
"name": "symmedia Service GmbH",
"shortname": "symmedia",
"status": "ACTIVE",
"address": {
"country": "Germany",
"state": "North Rhine-Westphalia",
"city": "Bielefeld",
"postalCode": "33602",
"street": "Turnerstraße 27"
},
"helpLink": "https://help.symmedia-hub.com"
}
TenantFilter
Fields
| Input Field | Description |
|---|---|
status - [TenantStatus]
|
Example
{"status": ["ACTIVE"]}
TenantLinkType
Values
| Enum Value | Description |
|---|---|
|
|
|
|
|
|
|
|
|
|
|
Example
ALL
TenantOptions
Fields
| Input Field | Description |
|---|---|
filter - TenantFilter
|
Example
{"filter": {"status": ["ACTIVE"]}}
TenantQueryResult
Fields
| Field Name | Description |
|---|---|
data - [Tenant!]!
|
Example
{"data": [Tenant]}
TenantStatus
Values
| Enum Value | Description |
|---|---|
|
|
The tenant has been invited but has not yet completed onboarding. |
|
|
The tenant has completed onboarding and is active. |
|
|
The tenant has been deactivated. |
Example
ACTIVE
TimeRange
TimeSeriesOptions
Fields
| Input Field | Description |
|---|---|
assetIds - [ID!]!
|
|
timeRange - TimeRange!
|
|
dataPointNames - [String!]!
|
|
aggregation - AggregationFunction!
|
|
binSize - Duration!
|
|
dataSource - SeriesDataSource!
|
Example
{
"assetIds": ["ast_3e4f5a6b"],
"timeRange": {
"from": "2024-06-01T00:00:00.000Z",
"to": "2024-06-01T23:59:59.000Z"
},
"dataPointNames": ["temperature"],
"aggregation": "AVG",
"binSize": "PT1H",
"dataSource": "PRE_AGGREGATED"
}
TimeSeriesResult
Fields
| Field Name | Description |
|---|---|
timestamps - [DateTime!]!
|
|
assetSeries - [AssetTimeSeries!]!
|
Example
{
"timestamps": [
"2024-06-01T14:30:00.000Z"
],
"assetSeries": [AssetTimeSeries]
}
UpdateCustomerAddressInput
UpdateCustomerInput
Fields
| Input Field | Description |
|---|---|
name - String
|
|
externalId - String
|
|
websiteUrl - String
|
|
serviceOrganisation - ID
|
|
address - UpdateCustomerAddressInput
|
Example
{
"name": "Acme Manufacturing GmbH",
"externalId": "ERP-10293",
"websiteUrl": "https://acme.example.com"
}
UpdateCustomerMachineInput
Fields
| Input Field | Description |
|---|---|
customer - CustomerInput
|
|
serialNumber - String
|
|
machineModel - MachineModelInput
|
|
warrantyBegin - Date
|
|
warrantyEnd - Date
|
|
isSp1Migration - Boolean
|
Example
{
"serialNumber": "SN-2024-00931",
"warrantyBegin": "2024-01-01",
"warrantyEnd": "2026-01-01"
}
UpdateServiceCaseInput
User
Fields
| Field Name | Description |
|---|---|
id - ID!
|
The unique identifier of the user. |
name - String!
|
The name of the user. |
email - String
|
The email address of the user. |
tenant - Tenant!
|
The tenant this user belongs to. |
identityId - ID
|
The identifier of the user in the external identity provider. |
isTechnicalUser - Boolean!
|
Whether this is a technical user (e.g. for API/integration access) rather than a real person. |
Example
{
"id": "usr_9d8e7f6a",
"name": "Jane Doe",
"email": "jane.doe@example.com",
"tenant": Tenant,
"identityId": "idp_5c6d7e8f",
"isTechnicalUser": false
}