User Enrollments
Methods on this page are called as client.user_enrollments.<method>(...) where client is either a synchronous Goodmem or asynchronous AsyncGoodmem instance initialized below:
from goodmem import Goodmem
client = Goodmem(base_url='http://localhost:8080', api_key='gm_...')from goodmem import AsyncGoodmem
client = AsyncGoodmem(base_url='http://localhost:8080', api_key='gm_...')Complete human-user enrollment
user_enrollments.complete(*, enrollment_token: str, api_key_id: str = None, raw_api_key: str = None) → CompleteUserEnrollmentResponse
Exchanges a one-time enrollment credential for the human's initial self-owned API key. This endpoint does not use ordinary API-key authentication. Omit both optional key fields for server generation; a fresh response discloses the raw key exactly once and cannot be safely retried after an ambiguous outcome. Supply and retain both fields for client mode, where only an exact tuple retry is safe and raw material is never echoed. Status precedence is request-shape errors (400), then the same generic authentication failure for every nonblank unusable enrollment (401); key conflicts or concurrent lifecycle winners return 409, rate limits return 429, and unexpected failures return 500.
Parameters:
- enrollment_token (
str) — Required one-time enrollment credential. Never log or persist it. - api_key_id (
str, format:uuid, optional) — Optional client-generated API-key UUID retained for exact retries. Must be supplied together with raw_api_key, or both fields must be omitted. - raw_api_key (
str, optional) — Optional canonical client-generated API key. Must be supplied together with api_key_id, never logged, and retained for exact retries; omit both fields for server generation.
Returns:
CompleteUserEnrollmentResponse
Raises:
APIError— Any other non-2xx HTTP response (base class; exposesstatus_codeandbody).
Example
completed = client.user_enrollments.complete(
enrollment_token="gme_...",
)
# Server-generated raw API keys are disclosed only on fresh completion.
raw_api_key = completed.raw_api_keyAsync usage: client.user_enrollments exposes the same methods on AsyncGoodmem; use await / async for as needed.
Data Models
All data models are pydantic v2 models. Fields are shown with their Python attribute names; JSON responses use camelCase aliases (e.g., owner_id → ownerId).
CompleteUserEnrollmentResponse
Initial API-key metadata, exact-retry classification, and one-time raw key material only for a fresh server-generated completion. Client-supplied keys are never echoed.
- api_key (
ApiKeyResponse) — OUTPUT_ONLY; metadata for the newly published initial API key. - already_completed (
bool) — OUTPUT_ONLY; true when the exact completion tuple already committed. - raw_api_key (
str, optional) — OUTPUT_ONLY; one-time raw API key returned only by a fresh server-generated completion. Omitted for client-supplied completion and every replay.