File size: 1,541 Bytes
a295b09 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 |
scalar DateTime
scalar JSON
enum Namespace {
infrastructure
satellite
# ... other namespaces
}
type Location {
lat: Float
lon: Float
}
type Provenance {
source: String!
license: String
retrieved_at: DateTime!
}
type Infrastructure {
id: ID!
location: Location!
roadCondition: String
severity: Int
lastReportedAt: DateTime
provenance: Provenance
}
# Pothole / Fault object
type InfrastructureFault {
id: ID!
namespace: Namespace!
type: String!
timestamp: DateTime!
location: Location!
severity: Int!
confirmed: Boolean!
images: [String]
provenance: Provenance!
}
type Payout {
id: ID!
faultId: ID!
amountMinorUnits: Int!
currency: String!
payeeId: String!
status: String!
createdAt: DateTime!
settledAt: DateTime
txRef: String
}
type Query {
infraFault(id: ID!): InfrastructureFault
listInfraFaults(limit: Int, offset: Int): [InfrastructureFault!]
payoutsForFault(faultId: ID!): [Payout!]
}
input IngestFaultInput {
namespace: Namespace!
type: String!
timestamp: DateTime!
location: JSON!
severity: Int!
images: [String]
provenance: JSON
}
type Mutation {
ingestFault(input: IngestFaultInput!): InfrastructureFault!
confirmFault(id: ID!, confirmed: Boolean!): InfrastructureFault!
createPayout(faultId: ID!, amountMinorUnits: Int!, currency: String!, payeeId: String!): Payout!
settlePayout(payoutId: ID!): Payout!
}
type Subscription {
faultCreated: InfrastructureFault!
faultConfirmed: InfrastructureFault!
payoutUpdated: Payout!
}
|