Docs/API Reference/API Reference Overview

API Reference Overview

The public surface is small and shaped around one verb: ask the SDK a yes/no question about location, get back a Verdict with 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. Verifies license, activates, returns an OctetSdk.
OctetSdk The handle returned by start. Exposes loc and licenseStatus.
Predicates isWithin, isOutside, contains on sdk.loc.
OctetRegion The shape you query against. Factories: country, subdivision, usState, city, disc, ellipse, box3D, polygonSet, earth.
OctetVerdict The answer. Carries result, reason, proof, validity, confidence.
License Types LicenseStatus, LicenseState, LicenseError.
Serialization .toStr(), .toJson(), .toJsonl() on every public type.

Platform asymmetry notes (v1)

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())

Closing the gap is on the roadmap. 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.start is async throws (Swift) / suspend (Kotlin). The predicates (isWithin, etc.) are async and do not throw. License or runtime problems become INDETERMINATE reasons on the verdict.
  • Validation is eager. Region factories trap on malformed inputs at construction. The predicate API never sees an invalid region.
  • Time is Date on iOS, java.time.Instant on Android. Both default to "now".
  • Meters is a Double typealias on both platforms (a plain Double, 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 exercise every symbol on this page end-to-end.