# Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. # SPDX-License-Identifier: Apache-2.0 type ConnectionState { state: String! at: AWSDateTime! } type Device { thingId: String! thingName: String! thingArn: String! name: String! deviceTypeId: String! deviceBlueprintId: String! connectionState: ConnectionState greengrassGroupId: String! spec: AWSJSON lastDeploymentId: String certificateArn: String createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedDevices { devices: [Device] nextToken: String } type Certificate { certificateArn: String! certificateId: String! certificatePem: String! } type Deployment { thingId: String! deploymentId: String! type: String! spec: AWSJSON greengrassGroup: AWSJSON createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedDeployments { deployments: [Deployment] nextToken: String } type DeviceStat { total: Int! connected: Int! disconnected: Int! } type DeviceType { id: String! name: String! type: String! spec: AWSJSON createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedDeviceTypes { deviceTypes: [DeviceType] nextToken: String } type DeviceBlueprint { id: String! name: String! type: String! compatibility: [String] deviceTypeMappings: AWSJSON spec: AWSJSON createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedDeviceBlueprints { deviceBlueprints: [DeviceBlueprint] nextToken: String } type Setting { id: String! type: String! setting: AWSJSON createdAt: AWSDateTime updatedAt: AWSDateTime } type System { id: String! name: String! description: String thingIds: [String] deviceIds: [String]! systemBlueprintId: String! createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedSystems { systems: [System] nextToken: String } type SystemStat { total: Int! } type SystemBlueprint { id: String! name: String! description: String prefix: String! spec: AWSJSON createdAt: AWSDateTime updatedAt: AWSDateTime } type PaginatedSystemBlueprints { systemBlueprints: [SystemBlueprint] nextToken: String } type SystemBlueprintStat { total: Int! } type ThingShadowResponse { payload: String } type S3Keys { Key: String } type S3ListObjectsResponse { Contents: [S3Keys] KeyCount: Int NextContinuationToken: String IsTruncated: Boolean } type UserAttributes { Name: String Value: String } type Group { GroupName: String UserPoolId: String Description: String RoleArn: String Precedence: Int LastModifiedDate: AWSDateTime CreationDate: AWSDateTime } type PaginatedGroups { Groups: [Group] NextToken: String } type UserGroup { name: String _state: String } type User { user_id: String name: String email: String enabled: Boolean groups: [UserGroup] created_at: AWSDateTime updated_at: AWSDateTime status: String } type PaginatedUsers { Users: [User] PaginationToken: String } type Data { ThingNameAndMetric: String Timestamp: String ExpirationTime: String Data: AWSJSON } type PaginatedData { Data: [Data] } type Query { # Data Store getData(thingName: String!, metricName: String!, timeAgoInSecs: Int!): PaginatedData @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Deployments listDeployments(limit: Int, nextToken: String): PaginatedDeployments @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Devices listDevices(limit: Int, nextToken: String): PaginatedDevices @aws_auth(cognito_groups: ["Administrators", "Members"]) listDevicesOfDeviceType(deviceTypeId: String!, limit: Int, nextToken: String): PaginatedDevices @aws_auth(cognito_groups: ["Administrators", "Members"]) listDevicesWithDeviceBlueprint(deviceBlueprintId: String!, limit: Int, nextToken: String): PaginatedDevices @aws_auth(cognito_groups: ["Administrators", "Members"]) getDevice(thingId: String!): Device @aws_auth(cognito_groups: ["Administrators", "Members"]) getDeviceStats: DeviceStat @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Device Blueprints listDeviceBlueprints(limit: Int, nextToken: String): PaginatedDeviceBlueprints @aws_auth(cognito_groups: ["Administrators", "Members"]) getDeviceBlueprint(id: String!): DeviceBlueprint @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Device Types listDeviceTypes(limit: Int, nextToken: String): PaginatedDeviceTypes @aws_auth(cognito_groups: ["Administrators", "Members"]) getDeviceType(id: String!): DeviceType @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Settings getSetting(id: String!): Setting @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Systems listSystems(limit: Int, nextToken: String): PaginatedSystems @aws_auth(cognito_groups: ["Administrators", "Members"]) getSystem(id: String!): System @aws_auth(cognito_groups: ["Administrators", "Members"]) getSystemStats: SystemStat @aws_auth(cognito_groups: ["Administrators", "Members"]) ## System Blueprints listSystemBlueprints(limit: Int, nextToken: String): PaginatedSystemBlueprints @aws_auth(cognito_groups: ["Administrators", "Members"]) getSystemBlueprint(id: String!): SystemBlueprint @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Users getUser(username: String!): User @aws_auth(cognito_groups: ["Administrators"]) listGroups(limit: Int, nextToken: String): PaginatedGroups @aws_auth(cognito_groups: ["Administrators"]) listUsers(limit: Int, paginationToken: String): PaginatedUsers @aws_auth(cognito_groups: ["Administrators"]) ## Other getJustInTimeOnBoardingState: Boolean @aws_auth(cognito_groups: ["Administrators"]) describeEndpoint(endpointType: String): String @aws_auth(cognito_groups: ["Administrators", "Members"]) getThingShadow(params: AWSJSON!): ThingShadowResponse @aws_auth(cognito_groups: ["Administrators", "Members"]) s3ListObjectsV2(params: AWSJSON!): S3ListObjectsResponse @aws_auth(cognito_groups: ["Administrators", "Members"]) } type Mutation { ## Deployments addDeployment(thingId: String!): Deployment! @aws_auth(cognito_groups: ["Administrators"]) ## Devices addDevice(name: String!, deviceTypeId: String!, deviceBlueprintId: String!): Device! @aws_auth(cognito_groups: ["Administrators"]) deleteDevice(thingId: String!): Device @aws_auth(cognito_groups: ["Administrators"]) updateDevice(thingId: String!, name: String!, deviceTypeId: String!, deviceBlueprintId: String!, spec: AWSJSON!): Device! @aws_auth(cognito_groups: ["Administrators"]) createCertificate(csr: String!, thingId: String!): Certificate! @aws_auth(cognito_groups: ["Administrators"]) ## Device Blueprints addDeviceBlueprint(name: String!, type: String!, compatibility: [String]!, deviceTypeMappings: AWSJSON!, spec: AWSJSON!): DeviceBlueprint! @aws_auth(cognito_groups: ["Administrators"]) deleteDeviceBlueprint(id: String!): DeviceBlueprint @aws_auth(cognito_groups: ["Administrators"]) updateDeviceBlueprint(id: String!, name: String!, type: String!, compatibility: [String]!, deviceTypeMappings: AWSJSON!, spec: AWSJSON!): DeviceBlueprint @aws_auth(cognito_groups: ["Administrators"]) ## Device Types addDeviceType(name: String!, type: String!, spec: AWSJSON): DeviceType! @aws_auth(cognito_groups: ["Administrators"]) deleteDeviceType(id: String!): DeviceType @aws_auth(cognito_groups: ["Administrators"]) updateDeviceType(id: String!, name: String!, type: String!, spec: AWSJSON): DeviceType @aws_auth(cognito_groups: ["Administrators"]) ## Settings updateSetting(id: String!, type: String!, setting: AWSJSON!): Setting @aws_auth(cognito_groups: ["Administrators"]) ## Systems addSystem(name: String!, description: String, deviceIds: [String]!, systemBlueprintId: String!): System! @aws_auth(cognito_groups: ["Administrators"]) deleteSystem(id: String!): System @aws_auth(cognito_groups: ["Administrators"]) updateSystem(id: String!, name: String!, description: String, deviceIds: [String]!): System @aws_auth(cognito_groups: ["Administrators"]) refreshSystem(id: String!): Boolean @aws_auth(cognito_groups: ["Administrators"]) ## System Blueprints addSystemBlueprint(name: String!, description: String, prefix: String!, spec: AWSJSON!): SystemBlueprint! @aws_auth(cognito_groups: ["Administrators"]) deleteSystemBlueprint(id: String!): SystemBlueprint @aws_auth(cognito_groups: ["Administrators"]) updateSystemBlueprint(id: String!, name: String!, description: String, prefix: String!, spec: AWSJSON!): SystemBlueprint @aws_auth(cognito_groups: ["Administrators"]) ## Users deleteUser(username: String!): User @aws_auth(cognito_groups: ["Administrators"]) disableUser(username: String!): User @aws_auth(cognito_groups: ["Administrators"]) enableUser(username: String!): User @aws_auth(cognito_groups: ["Administrators"]) inviteUser(name: String!, email: String!, groups: AWSJSON!): Boolean @aws_auth(cognito_groups: ["Administrators"]) updateUser(username: String!, groups: AWSJSON!): User @aws_auth(cognito_groups: ["Administrators"]) ## Other attachPrincipalPolicy(policyName: String!, principal: String!): Boolean @aws_auth(cognito_groups: ["Administrators", "Members"]) setJustInTimeOnBoardingState(enabled: Boolean!): Boolean @aws_auth(cognito_groups: ["Administrators"]) updateThingShadow(params: AWSJSON!): ThingShadowResponse @aws_auth(cognito_groups: ["Administrators", "Members"]) } type Subscription { ## Devices addedDevice: Device @aws_subscribe(mutations: ["addDevice"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) updatedDevice: Device @aws_subscribe(mutations: ["updateDevice"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) deletedDevice: Device @aws_subscribe(mutations: ["deleteDevice"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Device Blueprints addedDeviceBlueprint: DeviceBlueprint @aws_subscribe(mutations: ["addDeviceBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) updatedDeviceBlueprint: DeviceBlueprint @aws_subscribe(mutations: ["updateDeviceBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) deletedDeviceBlueprint: DeviceBlueprint @aws_subscribe(mutations: ["deleteDeviceBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Device Types addedDeviceType: DeviceType @aws_subscribe(mutations: ["addDeviceType"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) updatedDeviceType: DeviceType @aws_subscribe(mutations: ["updateDeviceType"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) deletedDeviceType: DeviceType @aws_subscribe(mutations: ["deleteDeviceType"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) ## Systems addedSystem: [System] @aws_subscribe(mutations: ["addSystem"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) updatedSystem: [System] @aws_subscribe(mutations: ["updateSystem"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) deletedSystem: [System] @aws_subscribe(mutations: ["deleteSystem"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) ## System Blueprints addedSystemBlueprint: [SystemBlueprint] @aws_subscribe(mutations: ["addSystemBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) updatedSystemBlueprint: [SystemBlueprint] @aws_subscribe(mutations: ["updateSystemBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) deletedSystemBlueprint: [SystemBlueprint] @aws_subscribe(mutations: ["deleteSystemBlueprint"]) @aws_auth(cognito_groups: ["Administrators", "Members"]) } schema { query: Query mutation: Mutation subscription: Subscription }