Documentation Index
Fetch the complete documentation index at: https://docs.astral.global/llms.txt
Use this file to discover all available pages before exploring further.
Data types
This page defines all shared types referenced by the Verify API and Compute API endpoints.
All compute endpoints accept geometry inputs as a discriminated union. The server resolves the input format automatically.
type Input =
| GeoJSON.Geometry // Raw GeoJSON geometry
| OnchainInput // Onchain attestation reference
| OffchainInput // Offchain attestation reference (not yet implemented)
| VerifiedProofInput; // Verified location proof
The SDK accepts bare UID strings (e.g., "0xabc123...") and normalizes them to OnchainInput before sending to the API. When calling the API directly, always use the { uid: string } object form.
A standard GeoJSON geometry object:
{
"type": "Point",
"coordinates": [2.2945, 48.8584]
}
A reference to an onchain EAS attestation:
Not yet implemented. Planned for a future release.
A reference to an offchain attestation stored on IPFS or another URI-addressable store:
{
"uid": "0xabc...",
"uri": "ipfs://Qm..."
}
A previously verified location proof, used to chain proof verification with compute operations. Pass the full VerifiedLocationProofResponse object returned by POST /verify/v0/proof:
interface VerifiedProofInput {
verifiedProof: VerifiedLocationProofResponse;
}
{
"verifiedProof": {
"proof": { "..." : "..." },
"credibility": { "..." : "..." },
"evaluationMethod": "multifactor-v0",
"evaluatedAt": 1706961600
}
}
LocationClaim
A claim that a subject was at a location during a time window. Extends Location Protocol v0.2.
interface LocationClaim {
lpVersion: string; // "0.2"
locationType: string; // "geojson-point", "h3-index", etc.
location: GeoJSON.Geometry; // The asserted location
srs: string; // Spatial reference system URI
subject: SubjectIdentifier; // Who is making the claim
radius: number; // Meters — required
time: {
start: number; // Unix timestamp (seconds)
end: number;
};
eventType?: string; // "presence", "transaction", "delivery"
}
LocationStamp
Evidence from a single proof-of-location system — one observation. Uses LP format for the observed location.
interface LocationStamp {
lpVersion: string;
locationType: string;
location: GeoJSON.Geometry; // The OBSERVED location
srs: string;
temporalFootprint: {
start: number; // Unix timestamp (seconds)
end: number;
};
plugin: string; // "proofmode", "witnesschain", "mock"
pluginVersion: string;
signals: Record<string, unknown>;
signatures: Signature[];
}
LocationProof
A claim bundled with one or more stamps.
interface LocationProof {
claim: LocationClaim;
stamps: LocationStamp[];
}
SubjectIdentifier
Identifies the subject of a claim. Follows a scheme/value pattern similar to DIDs.
interface SubjectIdentifier {
scheme: string; // "eth-address" | "device-pubkey" | "did:web"
value: string;
}
Examples:
{ "scheme": "eth-address", "value": "0x1234..." }
{ "scheme": "device-pubkey", "value": "0xabcd..." }
Signature
A cryptographic signature on a stamp.
interface Signature {
signer: SubjectIdentifier;
algorithm: string; // "secp256k1" | "ed25519"
value: string; // Hex-encoded
timestamp: number; // Unix timestamp (seconds)
}
CredibilityVector
Multidimensional assessment of how well stamps support a claim. Returned by POST /verify/v0/proof.
interface CredibilityVector {
dimensions: {
spatial: {
meanDistanceMeters: number;
maxDistanceMeters: number;
withinRadiusFraction: number; // 0-1
};
temporal: {
meanOverlap: number; // 0-1
minOverlap: number; // 0-1
fullyOverlappingFraction: number; // 0-1
};
validity: {
signaturesValidFraction: number; // 0-1
structureValidFraction: number; // 0-1
signalsConsistentFraction: number; // 0-1
};
independence: {
uniquePluginRatio: number; // 0-1
spatialAgreement: number; // 0-1
pluginNames: string[];
};
};
stampResults: StampResult[];
meta: {
stampCount: number;
evaluatedAt: number; // Unix timestamp (seconds)
evaluationMode: 'local' | 'tee' | 'zk';
};
}
StampResult
Per-stamp verification result within a CredibilityVector.
interface StampResult {
stampIndex: number;
plugin: string;
signaturesValid: boolean;
structureValid: boolean;
signalsConsistent: boolean;
distanceMeters: number; // Distance from stamp to claim location
temporalOverlap: number; // 0-1
withinRadius: boolean;
details: Record<string, unknown>; // Plugin-specific
}
AttestationData
EAS attestation data returned by compute endpoints.
interface AttestationData {
schema: string; // Schema UID
attester: string; // Attester address
recipient: string; // Recipient address
data: string; // ABI-encoded attestation data
revocable: boolean; // Whether the attestation can be revoked
refUID: string; // Referenced attestation UID (zero bytes if none)
signature: string; // Hex-encoded signature
}
The verify proof endpoint returns an extended attestation that also includes uid, time, expirationTime, and revocationTime. See VerifiedLocationProofResponse for details.
DelegatedAttestationData
Signature and metadata for submitting a delegated attestation onchain.
interface DelegatedAttestationData {
signature: string; // Hex-encoded EIP-712 signature
attester: string; // Attester address
deadline: number; // Unix timestamp — signature expiry
nonce: number; // Attester nonce for replay protection
}
NumericComputeResponse
Response shape for compute operations that return a number (distance, area, length).
interface NumericComputeResponse {
result: number;
units: string; // "meters", "square_meters"
operation: string;
timestamp: number;
inputRefs: string[];
attestation: AttestationData;
delegatedAttestation: DelegatedAttestationData;
}
BooleanComputeResponse
Response shape for compute operations that return true/false (contains, within, intersects).
interface BooleanComputeResponse {
result: boolean;
operation: string;
timestamp: number;
inputRefs: string[];
attestation: AttestationData;
delegatedAttestation: DelegatedAttestationData;
}
VerifiedLocationProofResponse
Response shape for POST /verify/v0/proof.
interface VerifiedLocationProofResponse {
proof: LocationProof;
credibility: CredibilityVector;
evaluationMethod: string;
evaluatedAt: number; // Unix timestamp (seconds)
attestation?: {
uid: string; // Attestation UID
schema: string;
attester: string;
recipient: string;
data: string;
revocable: boolean;
refUID: string;
time: number; // Attestation creation time
expirationTime: number; // 0 = no expiration
revocationTime: number; // 0 = not revoked
signature?: string;
};
delegatedAttestation?: DelegatedAttestationData;
chainId?: number;
}