gRPC DecisionModelService reference for CreateDecisionModel, GetDecisionModel, ListDecisionModels, UpdateDecisionModel and other RPCs, with request messages, response types, and service documentation.
All calls require authenticated credentials. Authorization uses the live resource policy and
API-key ceiling. Missing resources return NOT_FOUND before an existing resource can be denied.
Failures may include UNAUTHENTICATED, PERMISSION_DENIED, INVALID_ARGUMENT, INTERNAL,
CANCELLED, DEADLINE_EXCEEDED, RESOURCE_EXHAUSTED or UNAVAILABLE.
Requires CREATE_DECISION_MODEL for the proposed ID/owner. Persists one registration and audit
actor. Not automatically retried; a duplicate client UUID returns ALREADY_EXISTS. Identical
connections with distinct IDs are allowed. Returns metadata without credentials.
Idempotency: Non-idempotent. A supplied UUID detects duplicates but does not replay a response.
| Type |
|---|
| Request | goodmem.v1.CreateDecisionModelRequest |
| Response | goodmem.v1.DecisionModel |
Read-only. Requires READ_DECISION_MODEL and additionally READ_DECISION_MODEL_CREDENTIALS
when include_credentials is true. Credentials are masked until both gates succeed.
Idempotency: Read-only; safe to retry, although current state may change.
| Type |
|---|
| Request | goodmem.v1.GetDecisionModelRequest |
| Response | goodmem.v1.DecisionModel |
Read-only. Requires instance LIST_DECISION_MODEL and SQL-filtered READ_DECISION_MODEL per row.
Fixed ordering: created_at DESC, decision_model_id DESC. Tokens bind caller and all filters;
authorization is re-evaluated on every page. Credentials are always omitted.
Idempotency: Read-only; pages reflect current authorization and registration state.
| Type |
|---|
| Request | goodmem.v1.ListDecisionModelsRequest |
| Response | goodmem.v1.ListDecisionModelsResponse |
Requires UPDATE_DECISION_MODEL, rechecked at the write. Omitted fields remain unchanged;
supplied configuration replaces the object, and empty monitoring_endpoint clears it.
Provider/owner cannot change. Empty updates are invalid. Returns no credentials.
Idempotency: Idempotent configuration changes; repeating input preserves field values, but update audit timestamps change.
| Type |
|---|
| Request | goodmem.v1.UpdateDecisionModelRequest |
| Response | goodmem.v1.DecisionModel |
Requires DELETE_DECISION_MODEL, rechecked at deletion. Removes only the registration;
no provider action occurs. Repeating a successful deletion returns NOT_FOUND.
Idempotency: Idempotent final state; repeating a successful delete returns NOT_FOUND.
| Type |
|---|
| Request | goodmem.v1.DeleteDecisionModelRequest |
| Response | google.protobuf.Empty |
Requires READ_DECISION_MODEL and EXECUTE_DECISION_MODEL. Invokes the stored provider once;
this can incur provider charges and must not be retried automatically. Does not persist input
or output. Unsupported questions/media produce INVALID_ARGUMENT; provider authentication or
configuration failures are FAILED_PRECONDITION; provider rate limits are RESOURCE_EXHAUSTED.
Provider error bodies and stored credentials never appear in client errors.
Idempotency: Non-idempotent; each call may incur provider charges. Never automatically retry.
| Type |
|---|
| Request | goodmem.v1.DecisionRequest |
| Response | goodmem.v1.DecisionResponse |
Registered connection to a System One decision model. Provider and owner are immutable.
Identical connections may be registered independently. Only the UUID is unique.
Credentials appear only in explicitly authorized Get responses, never create/update/list.
| Field | Type | Description |
|---|
decision_model_id | bytes | UUID (16 bytes). |
display_name | string | Nonblank, at most 255 characters after trimming. |
description | string | |
provider_type | ...m.v1.DecisionModelProviderType | |
endpoint_url | string | Absolute HTTP(S) base URL, without query, userinfo or fragment. |
api_path | string | Relative inference path appended to the base URL; no query or fragment. |
model_identifier | string | |
credentials | ...dmem.v1.EndpointAuthentication | |
configuration | google.protobuf.Struct | Validated provider settings; never capability overrides. |
labels | ...m.v1.DecisionModel.LabelsEntry | |
version | string | |
monitoring_endpoint | string | Optional HTTP(S) health/metrics URL; empty means unset. |
owner_id | bytes | |
capabilities | ...m.v1.DecisionModelCapabilities | OUTPUT_ONLY built-in profile, never user overrides. |
created_at | google.protobuf.Timestamp | |
updated_at | google.protobuf.Timestamp | |
created_by_id | bytes | |
updated_by_id | bytes | |
| Field | Type | Description |
|---|
key | string | |
value | string | |
| Field | Type | Description |
|---|
display_name | string | |
description | string | |
provider_type | ...m.v1.DecisionModelProviderType | |
endpoint_url | string | |
api_path | string | Defaults to /v1/systemone for Jev/Laya; required for Clef account/model route. |
model_identifier | string | |
credentials | ...dmem.v1.EndpointAuthentication | Inline API key; optional for anonymous Laya. |
configuration | google.protobuf.Struct | image_preview (Jev only), timeout_millis, max_response_bytes. |
labels | ...cisionModelRequest.LabelsEntry | |
version | string | |
monitoring_endpoint | string | |
owner_id | bytes | Defaults to the authenticated principal. |
decision_model_id | bytes | Optional client UUID; generated when absent. |
| Field | Type | Description |
|---|
key | string | |
value | string | |
| Field | Type | Description |
|---|
decision_model_id | bytes | |
include_credentials | bool | |
| Field | Type | Description |
|---|
owner_id | bytes | |
provider_type | ...m.v1.DecisionModelProviderType | UNSPECIFIED means no provider filter. |
label_selectors | ...elsRequest.LabelSelectorsEntry | AND of exact key/value matches. |
page_size | int32 | Zero defaults to 50; accepted range 1..1000. |
page_token | string | |
| Field | Type | Description |
|---|
key | string | |
value | string | |
| Field | Type | Description |
|---|
decision_models | goodmem.v1.DecisionModel | |
next_page_token | string | |
total_count | int64 | Authorized count with these filters, before the continuation cursor. |
Opaque, untrusted keyset token; consumers should pass it back unchanged.
| Field | Type | Description |
|---|
requestor_id | bytes | |
owner_id | bytes | |
provider_type | ...m.v1.DecisionModelProviderType | |
label_selectors | ...tPageToken.LabelSelectorsEntry | |
page_size | int32 | |
created_at | google.protobuf.Timestamp | |
decision_model_id | bytes | |
| Field | Type | Description |
|---|
key | string | |
value | string | |
| Field | Type | Description |
|---|
decision_model_id | bytes | |
display_name | string | |
description | string | |
endpoint_url | string | |
api_path | string | |
model_identifier | string | |
credentials | ...dmem.v1.EndpointAuthentication | Omission preserves; empty payload is invalid. |
configuration | google.protobuf.Struct | Full replacement; {} resets defaults. |
version | string | |
monitoring_endpoint | string | |
replace_labels | goodmem.v1.StringMap | |
merge_labels | goodmem.v1.StringMap | |
| Field | Type | Description |
|---|
decision_model_id | bytes | |
JSON content and recursive containers allow media at any supported position. json_value never
denotes a media reference: binary input is explicit and GoodMem does not fetch remote URLs.
| Field | Type | Description |
|---|
json_value | string | One complete JSON value encoded as text, preserving numeric precision. |
object_value | goodmem.v1.DecisionObject | |
array_value | goodmem.v1.DecisionArray | |
media | goodmem.v1.DecisionMedia | |
text | string | Literal text; preferred for ordinary state/instructions/rubric descriptions. |
| Field | Type | Description |
|---|
fields | ....v1.DecisionObject.FieldsEntry | |
| Field | Type | Description |
|---|
key | string | |
value | goodmem.v1.DecisionContent | |
| Field | Type | Description |
|---|
values | goodmem.v1.DecisionContent | |
| Field | Type | Description |
|---|
kind | goodmem.v1.DecisionMediaKind | |
mime_type | string | |
data | bytes | Encoded file bytes; limits apply before base64. |
| Field | Type | Description |
|---|
instructions | goodmem.v1.DecisionContent | Clef requires instructions as nonblank text, an object, or an array. Other providers allow omission; omitted differs from explicitly supplied JSON null. |
choice | ...dmem.v1.DecisionChoiceQuestion | |
score | ...odmem.v1.DecisionScoreQuestion | |
noul | ...oodmem.v1.DecisionNoulQuestion | |
box | goodmem.v1.DecisionBoxQuestion | |
| Field | Type | Description |
|---|
options | ...ionChoiceQuestion.OptionsEntry | |
| Field | Type | Description |
|---|
key | string | |
value | goodmem.v1.DecisionContent | |
| Field | Type | Description |
|---|
levels | goodmem.v1.DecisionContent | |
| Field | Type | Description |
|---|
true_criterion | goodmem.v1.DecisionContent | |
false_criterion | goodmem.v1.DecisionContent | |
| Field | Type | Description |
|---|
decision_model_id | bytes | |
state | goodmem.v1.DecisionContent | |
attachments | goodmem.v1.DecisionMedia | |
questions | ...DecisionRequest.QuestionsEntry | |
| Field | Type | Description |
|---|
key | string | |
value | goodmem.v1.DecisionQuestion | |
| Field | Type | Description |
|---|
choice | string | |
probabilities | ...hoiceAnswer.ProbabilitiesEntry | |
confidence | double | |
confidence_meaning | ...m.v1.DecisionConfidenceMeaning | |
| Field | Type | Description |
|---|
key | string | |
value | double | |
| Field | Type | Description |
|---|
score | double | Fractional zero-based rubric level; not a percentage. |
probabilities | ...ScoreAnswer.ProbabilitiesEntry | |
levels | goodmem.v1.DecisionContent | Original caller rubric, including structured/media content. |
confidence | double | |
confidence_meaning | ...m.v1.DecisionConfidenceMeaning | |
| Field | Type | Description |
|---|
key | int32 | |
value | double | |
| Field | Type | Description |
|---|
probability_true | double | |
| Field | Type | Description |
|---|
left | double | Normalized edges; a returned box does not prove the target exists. |
top | double | |
right | double | |
bottom | double | |
confidence | double | |
| Field | Type | Description |
|---|
choice | ...oodmem.v1.DecisionChoiceAnswer | |
score | goodmem.v1.DecisionScoreAnswer | |
noul | goodmem.v1.DecisionNoulAnswer | |
box | goodmem.v1.DecisionBoxAnswer | |
| Field | Type | Description |
|---|
input_tokens | int64 | Omitted is unknown, distinct from reported zero. |
output_tokens | int64 | |
| Field | Type | Description |
|---|
model | string | Provider-reported model identifier. |
answers | ....DecisionResponse.AnswersEntry | |
usage | goodmem.v1.DecisionUsage | |
| Field | Type | Description |
|---|
key | string | |
value | goodmem.v1.DecisionAnswer | |
Built-in capability metadata. Missing limits are unknown, never unlimited; context-bound limits
are listed separately. Providers may impose stricter deployment limits.
| Field | Type | Description |
|---|
question_types | ...oodmem.v1.DecisionQuestionType | |
media | ...oodmem.v1.DecisionMediaSupport | |
limits | goodmem.v1.DecisionLimit | |
context_bound_limits | goodmem.v1.DecisionLimitType | |
semantics | ...m.v1.DecisionQuestionSemantics | |
input_overflow | ...odmem.v1.DecisionInputOverflow | |
| Field | Type | Description |
|---|
type | goodmem.v1.DecisionLimitType | |
value | int64 | |
| Field | Type | Description |
|---|
type | ...dmem.v1.DecisionMediaLimitType | |
value | int64 | |
| Field | Type | Description |
|---|
kind | goodmem.v1.DecisionMediaKind | |
mime_types | string | |
placements | goodmem.v1.DecisionPlacement | |
limits | goodmem.v1.DecisionMediaLimit | |
| Field | Type | Description |
|---|
question_type | ...oodmem.v1.DecisionQuestionType | |
confidence | ...m.v1.DecisionConfidenceMeaning | |
output | ...odmem.v1.DecisionOutputMeaning | |
Decision protocols. A provider's supported questions and media depend on its model profile.
| Name | Value | Description |
|---|
DECISION_MODEL_PROVIDER_TYPE_UNSPECIFIED | 0 | |
DECISION_MODEL_PROVIDER_TYPE_JEV | 1 | |
DECISION_MODEL_PROVIDER_TYPE_LAYA | 2 | |
DECISION_MODEL_PROVIDER_TYPE_CLEF | 3 | |
| Name | Value | Description |
|---|
DECISION_MEDIA_KIND_UNSPECIFIED | 0 | |
DECISION_MEDIA_KIND_IMAGE | 1 | |
DECISION_MEDIA_KIND_AUDIO | 2 | |
DECISION_MEDIA_KIND_VIDEO | 3 | |
Confidence is provider-specific and is not a calibrated probability of correctness.
| Name | Value | Description |
|---|
DECISION_CONFIDENCE_MEANING_UNSPECIFIED | 0 | |
DECISION_CONFIDENCE_MEANING_ADJUSTED_TOP_PROBABILITY | 1 | |
DECISION_CONFIDENCE_MEANING_NORMALIZED_ENTROPY_COMPLEMENT | 2 | |
DECISION_CONFIDENCE_MEANING_TOP_PROBABILITY | 3 | |
DECISION_CONFIDENCE_MEANING_ORDERED_MEAN_ABSOLUTE_DEVIATION | 4 | |
DECISION_CONFIDENCE_MEANING_PROVIDER_DEFINED | 5 | |
DECISION_CONFIDENCE_MEANING_NOT_REPORTED | 6 | |
| Name | Value | Description |
|---|
DECISION_QUESTION_TYPE_UNSPECIFIED | 0 | |
DECISION_QUESTION_TYPE_CHOICE | 1 | |
DECISION_QUESTION_TYPE_SCORE | 2 | |
DECISION_QUESTION_TYPE_NOUL | 3 | |
DECISION_QUESTION_TYPE_BOX | 4 | |
| Name | Value | Description |
|---|
DECISION_PLACEMENT_UNSPECIFIED | 0 | |
DECISION_PLACEMENT_ATTACHMENT | 1 | |
DECISION_PLACEMENT_STATE | 2 | |
DECISION_PLACEMENT_INSTRUCTIONS | 3 | |
DECISION_PLACEMENT_CRITERIA | 4 | |
| Name | Value | Description |
|---|
DECISION_LIMIT_TYPE_UNSPECIFIED | 0 | |
DECISION_LIMIT_TYPE_MAX_QUESTIONS | 1 | |
DECISION_LIMIT_TYPE_MIN_CHOICES | 2 | |
DECISION_LIMIT_TYPE_MAX_CHOICES | 3 | |
DECISION_LIMIT_TYPE_MIN_SCORE_LEVELS | 4 | |
DECISION_LIMIT_TYPE_MAX_SCORE_LEVELS | 5 | |
DECISION_LIMIT_TYPE_MAX_TOTAL_OPTIONS | 6 | |
DECISION_LIMIT_TYPE_MAX_STATE_CHARACTERS | 7 | |
DECISION_LIMIT_TYPE_MAX_BODY_BYTES | 8 | |
DECISION_LIMIT_TYPE_MAX_CONTENT_DEPTH | 9 | |
DECISION_LIMIT_TYPE_MAX_INPUT_TOKENS | 10 | |
DECISION_LIMIT_TYPE_MAX_QUESTION_ID_CHARACTERS | 11 | |
DECISION_LIMIT_TYPE_MAX_AUDIO_VIDEO_BYTES | 12 | |
| Name | Value | Description |
|---|
DECISION_MEDIA_LIMIT_TYPE_UNSPECIFIED | 0 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_ITEMS | 1 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_ITEM_BYTES | 2 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_TOTAL_BYTES | 3 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_PIXELS | 4 | |
DECISION_MEDIA_LIMIT_TYPE_MIN_WIDTH | 5 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_WIDTH | 6 | |
DECISION_MEDIA_LIMIT_TYPE_MIN_HEIGHT | 7 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_HEIGHT | 8 | |
DECISION_MEDIA_LIMIT_TYPE_MIN_PIXELS | 9 | |
DECISION_MEDIA_LIMIT_TYPE_MAX_DURATION_MILLIS | 10 | |
| Name | Value | Description |
|---|
DECISION_OUTPUT_MEANING_UNSPECIFIED | 0 | |
DECISION_OUTPUT_MEANING_CANDIDATE_IDENTIFIER | 1 | |
DECISION_OUTPUT_MEANING_EXPECTED_ZERO_BASED_LEVEL | 2 | |
DECISION_OUTPUT_MEANING_PROBABILITY_TRUE | 3 | |
DECISION_OUTPUT_MEANING_NORMALIZED_EDGES_NO_ABSENCE_SENTINEL | 4 | |
| Name | Value | Description |
|---|
DECISION_INPUT_OVERFLOW_UNSPECIFIED | 0 | |
DECISION_INPUT_OVERFLOW_REJECTS | 1 | |
DECISION_INPUT_OVERFLOW_TRUNCATES_STATE | 2 | |
DECISION_INPUT_OVERFLOW_TRUNCATES_STATE_AND_OPTIONS | 3 | |