enum GeofenceEventEnum { ENTER EXIT } enum PositionEventEnum { UPDATE } type Accuracy { horizontal: Float! } interface LocationEventBase { deviceId: ID sampleTime: AWSDateTime! accuracy: Accuracy lng: Float! lat: Float! } type GeofenceEvent implements LocationEventBase @aws_iam { deviceId: ID sampleTime: AWSDateTime! accuracy: Accuracy lng: Float! lat: Float! type: GeofenceEventEnum! geofenceId: String! } type PositionEvent implements LocationEventBase @aws_iam { deviceId: ID sampleTime: AWSDateTime! accuracy: Accuracy lng: Float! lat: Float! type: PositionEventEnum! trackerName: String! receivedTime: AWSDateTime! } input AccuracyInput { horizontal: Float! } input GeofenceEventInput { deviceId: ID sampleTime: AWSDateTime! lng: Float! lat: Float! type: GeofenceEventEnum! geofenceId: String! } input PositionEventInput { deviceId: ID sampleTime: AWSDateTime! lng: Float! lat: Float! type: PositionEventEnum! trackerName: String! receivedTime: AWSDateTime! } type Query { placeholder: String } type Mutation { updatePosition(input: PositionEventInput): PositionEvent @aws_api_key @aws_iam sendGeofenceEvent(input: GeofenceEventInput): GeofenceEvent @aws_api_key @aws_iam } type Subscription { onUpdatePosition: PositionEvent @aws_subscribe(mutations: ["updatePosition"]) @aws_api_key onGeofenceEvent: GeofenceEvent @aws_subscribe(mutations: ["sendGeofenceEvent"]) @aws_api_key }