API Reference Overview
A location query is a predicate call on the SDK. It returns an OctetVerdict, and a YES or NO verdict carries a signed proof.
The full surface
flowchart TD
A[Octet.start config] --> B[OctetSdk handle]
B --> L[OctetSdk.loc]
B --> S[OctetSdk.licenseStatus]
L --> P1[isWithin region atTime]
L --> P2[isOutside region atTime]
L --> P3[contains center tol atTime]
P1 --> V[OctetVerdict]
P2 --> V
P3 --> V
V --> R[result YES NO INDETERMINATE]
V --> RC[reason ReasonCode]
V --> PR[proof LocationProof?]
V --> VAL[validity Interval?]
V --> C[confidence ConfidenceSummary]
Per-symbol reference
| Symbol | What it is |
|---|---|
Octet.start(...) |
The single bring-up call. Attests the app, bootstraps a license, returns an OctetSdk. Also exposes attestationEnrolmentBundle(), and documents OctetConfig, AdvancedConfig and TransportPolicy. |
OctetSdk |
The handle returned by start. Exposes loc, flags, licenseStatus, and close(). |
| Predicates | isWithin, isOutside, contains on sdk.loc, each with optional sessionNonce, decisionRef, forceFresh. |
OctetRegion |
The shape you query against. Factories plus regionFromJson. |
OctetVerdict |
The answer. Carries result, reason, proof, validity, confidence. |
Octet.verify |
On-device proof verification: ProofVerification, ProofCheck, CheckStatus, VerifyOptions, RequiredVerdict. |
| License Types | LicenseStatus, LicenseState, LicenseError, BootstrapReason. |
| Serialization | .toStr(), .toJson(), .toJsonl() on OctetRegion, OctetVerdict, LatLon, H3Cell and Interval. |
Platform asymmetry notes
| Surface | iOS | Android |
|---|---|---|
OctetRegion factories |
All | All |
RegionSpec + getRegion(spec) |
n/a | ✓ |
buildRegion { … } DSL |
n/a | ✓ |
whatisRegion(r) / regionToStr(r) free functions |
(via .toStr() extension) |
✓ (also .toStr()) |
iOS callers use the factories directly and region.toStr() for the human-readable form.
Conventions used throughout
- Code samples are shown in tabs, Swift on the left, Kotlin on the right. Pick your platform once. The choice is remembered across the site.
- Async.
Octet.startisasync throws(Swift) /suspend(Kotlin). The predicates (isWithin, etc.) areasyncand do not throw. License problems throw aLicenseErrorfromOctet.start. Runtime problems becomeINDETERMINATEreasons on the verdict. - Validation is eager. Region factories trap on malformed inputs at construction. The predicate API never sees an invalid region.
- Time is
Dateon iOS,java.time.Instanton Android. Both default to "now". Metersis aDoubletypealias on both platforms (a plainDouble, not a wrapper type).LatLon(latitude:, longitude:)is the coordinate type. WGS84, pre-validated.
Where to start
If you're integrating for the first time, go to the iOS Quick Start or Android Quick Start. They walk through Octet.start, an isWithin query and Octet.verify end to end.