Search a surface (TG-FCT-3, ranked, trusted-only by default)
POST/v4/graph/search
Ranked search over one surface of the graph. Trusted-only by default (TG-FCT-3), pass includeUntrusted to widen.
surface (required): Did, Ecosystem, Corporation, CredentialSchema, ServiceEndpoint
freeText: ranked full-text match on the surface.
filters: object keyed by field. A bare scalar means equals, an array means any-of, or pass an operator object (eq, in, prefix, range, contains, containsAny). Fields on the Did surface: Did.trusted, Did.pattern, Did.serviceTypes, Did.corporationId, Did.isCorporation, Did.isEcosystem, Did.ecosystemIds, Did.operatorKind, Did.operatorName, EcsCredential.ServiceCredential.type, EcsCredential.ServiceCredential.minimumAgeRequired, OrganizationCredential.countryCode, OrganizationCredential.legalJurisdiction, OrganizationCredential.organizationKind, OrganizationCredential.lei, OrganizationCredential.registryId, PersonaCredential.controllerCountryCode, PersonaCredential.controllerJurisdiction, Participant.ecosystemId, Participant.credentialSchemaId, Participant.role. Did.serviceTypes and Did.ecosystemIds take contains or containsAny only. An unknown field returns UNKNOWN_FILTER_FIELD.
facets: the response carries one aggregation per eq or in filter in the request plus a default set per surface (TG-FCT-6). Did: Did.operatorKind, EcsCredential.ServiceCredential.type, OrganizationCredential.countryCode. Ecosystem: archived, corporationId. CredentialSchema: archived, ecosystemId. ServiceEndpoint: type. Corporation has none.
snippet: object of group name to boolean, checked against the queried surface (an unknown name or a group of another surface is INVALID_INPUT). Omit it for the default set, pass {} for the core alone (TG-FCT-6c). Every hit always carries the core of TG-FCT-6a: Did did, lastObservedAtTime, isTrustExpired, trusted, isCorporation, isEcosystem. Ecosystem id, did, archived, lastObservedAtTime. Corporation id, did, lastObservedAtTime. CredentialSchema id, archived, lastObservedAtTime. ServiceEndpoint id, didId, type, serviceEndpoint, lastObservedAtTime. Groups per surface (TG-FCT-6b), default set first, then opt-in. Did: service, operator, corporation, endpoints, then ecosystems, participations, credentials. Ecosystem: corporation, stats, didCard, then governance, schemas. Corporation: trust, didCard, then governance, ecosystems, dids. CredentialSchema: schema, ecosystem, then stats, body. ServiceEndpoint: didCard. List groups cap entries at 100, the counters next to them are never capped.
limit: 1..200, default 20. cursor: opaque keyset cursor from the previous page, cursor in the response is null on the last page (TG-FCT-7). The selector never changes the result set, so a cursor stays valid when snippet changes between pages.
Request
Responses
- 200
- 400
Ranked hits, each with the TG-FCT-6a core plus the projected groups, keyset pagination
TG-ERR-1 error envelope