01Esquema
type Query {
me: Member
network: NetworkStats
sites: [Site!]!
site(domain: String!): Site
shopfront(hash: String!): Shopfront # verify a hash embedded in an honest-shopfront SVG
}
type Member { id: Int! email: String! plan: String }
type NetworkStats {
devicesLive: Int! devicesEnrolled: Int! countries: Int!
verdicts24h: Int! ok24h: Int! okPct: Float snapshots: Int!
}
type Site {
id: Int! domain: String! title: String seoScore: Int
verified: PulsarVerification # null until the network has checked it
monitors: [Monitor!]!
traffic(days: Int = 30): Traffic # same aggregates the dashboard shows
leads(days: Int = 30): Leads
topPages(days: Int = 7, limit: Int = 10): [PageStat!]!
}
type PulsarVerification { verified: Boolean! checks: Int! uptimePct: Int latencyMs: Int lastCheckedAt: String }
type Monitor {
id: Int! name: String! kind: String!
up: Boolean ttfbMs: Int loadMs: Int tlsDaysLeft: Int vantagePoints: Int
tlsVersion: String tlsCipher: String tlsFailure: String tlsChainIncomplete: Boolean
}
type Traffic {
days: Int! visitors: Int! pageviews: Int!
avgVisitorsPerDay: Float # null when there are no days with data
series: [TrafficDay!]!
}
type TrafficDay { day: String! visitors: Int! visits: Int! pageviews: Int! }
type Leads { total: Int! unhandled: Int! }
type PageStat { url: String! views: Int! }
type Shopfront { # idea 24: the statement behind a plaque, checked against our ledger
hash: String! status: String! # active | superseded | broken | unknown
site: String builtAt: String currentAt: String shown: Boolean # shown = the plaque is served right now
sigValid: Boolean digestValid: Boolean pubkey: String statement: String sig: String verdictRoot: String
facts: String # canonical JSON of the signed figures
}02Consulta de exemplo
{
network { devicesLive countries verdicts24h okPct }
sites {
domain
traffic(days: 30) { visitors pageviews avgVisitorsPerDay }
leads(days: 30) { total unhandled }
topPages(days: 7, limit: 5) { url views }
verified { uptimePct latencyMs checks }
monitors { name kind up loadMs tlsDaysLeft }
}
}03Chame-o
curl -s https://astrina.io/pulsar/graphql \
-H 'X-Api-Key: YOUR_KEY' -H 'Content-Type: application/json' \
-d '{"query":"{ network { devicesLive } sites { domain verified { uptimePct } } }"}'Somente leitura: mutações, assinaturas e fragmentos não são suportados. Cada número é um veredicto real de consenso de dispositivos — um campo é nulo quando a rede ainda não decidiu. Chamadas contam contra sua cota diária de API.
O que esta página responde
- uma consulta GraphQL para sites
- monitorar veredictos de quórum
- uma consulta para todos os dados do site
- o que é a API GraphQL Pulsar
- como a API GraphQL Pulsar funciona
- a API GraphQL Pulsar explicado
- guia de a API GraphQL Pulsar
- como começar com a API GraphQL Pulsar
- avaliações de a API GraphQL Pulsar
- vale a pena a API GraphQL Pulsar
- preços de a API GraphQL Pulsar
- a API GraphQL Pulsar alternativas
- a API GraphQL Pulsar para iniciantes
- por que a API GraphQL Pulsar
- a API GraphQL Pulsar — o que você recebe