GoodMemGoodMem
ReferenceAPIREST APIDecision Models

Update a decision model

PUT /v1/decision-models/{id}: Changes only the fields supplied in the request.

Changes only the fields supplied in the request. Requires UPDATE_DECISION_MODEL. Send an empty string to clear description, version, or monitoringEndpoint. A supplied configuration replaces all existing settings; use {} to reset them to defaults. The provider and owner cannot be changed. Credentials are omitted from the response.

PUT
/v1/decision-models/{id}
x-api-key<token>

In: header

Path Parameters

idstring

UUID of the decision model

Header Parameters

GoodMem-Timeout-Ms?integer

Optional waiting budget in milliseconds, measured from REST servlet ingress and shared across all internal gRPC calls. Supply one decimal integer from 1 to 86400000. Omission adds no deadline. Existing shorter deadlines still apply. Expiry returns HTTP 504 before streaming starts; after streaming starts, no successful completion event is sent. Use SSE or opt into GoodMem-Stream-Terminal for an explicit terminal outcome. Retrieval work is cooperatively cancelled. An accepted mutation may still commit after timeout or disconnect; a failed response does not imply rollback.

Formatint64
Range1 <= value <= 86400000
displayName?string | null

Name shown in the console and CLI.

description?string | null

Description of the model. Send an empty string to clear it, or omit it to keep the current value.

endpointUrl?string | null

Base URL of the provider, starting with http:// or https://. Do not include a query string, fragment, or username and password.

apiPath?string | null

Path appended to endpointUrl when sending a request. Omit it to keep the current path. An empty string resets Jev and Laya to /v1/systemone; Clef requires the path for your account and model.

modelIdentifier?string | null

Model identifier accepted by the provider.

credentials?ApiKey (CREDENTIAL_KIND_API_KEY) | GcpAdc (CREDENTIAL_KIND_GCP_ADC) | None (omit this field)

Replacement API key for the provider, supplied in credentials.apiKey.inlineSecret with kind set to CREDENTIAL_KIND_API_KEY. Omit credentials to keep the current key.

Example{"apiKey":{"inlineSecret":"sk-1234567890abcdef","secretRef":{"uri":"vault://path/to/secret"},"headerName":"Authorization","prefix":"Bearer "},"gcpAdc":{"scopes":["https://www.googleapis.com/auth/cloud-platform"],"quotaProjectId":"my-quota-project"}}

Structured credential payload describing how GoodMem should authenticate with an upstream provider.

kindstring

Credential strategy — fixed to CREDENTIAL_KIND_API_KEY for this variant

apiKeyApiKeyAuth

Configuration when kind is CREDENTIAL_KIND_API_KEY

Example{"inlineSecret":"sk-1234567890abcdef","secretRef":{"uri":"vault://path/to/secret"},"headerName":"Authorization","prefix":"Bearer "}
labels?object | null

Optional annotations to aid operators (e.g., "owner=vertex")

Propertiesproperties <= 20

Empty Object

Structured credential payload describing how GoodMem should authenticate with an upstream provider.

kindstring

Credential strategy — fixed to CREDENTIAL_KIND_GCP_ADC for this variant

gcpAdcGcpAdcAuth

Configuration when kind is CREDENTIAL_KIND_GCP_ADC

Example{"scopes":["https://www.googleapis.com/auth/cloud-platform"],"quotaProjectId":"my-quota-project"}
labels?object | null

Optional annotations to aid operators (e.g., "owner=vertex")

Propertiesproperties <= 20

Empty Object

configuration?object | null

Replacement provider settings. Supported keys are image_preview (Jev only), timeout_millis, and max_response_bytes. Send {} to reset all settings to defaults, or omit configuration to keep the current settings.

Empty Object

version?string | null

Version label. Send an empty string to clear it, or omit it to keep the current value.

monitoringEndpoint?string | null

URL for the provider health or metrics endpoint. Must start with http:// or https://. Send an empty string to clear it, or omit it to keep the current value.

replaceLabels?object | null

Replace all labels with this map. Send {} to remove all labels. Do not combine with mergeLabels.

Empty Object

mergeLabels?object | null

Add labels and replace the values of matching keys. Other labels are unchanged. Do not combine with replaceLabels.

Empty Object

Response Body

curl -X PUT "https://your-goodmem-server.example.com/v1/decision-models/550e8400-e29b-41d4-a716-446655440000" \  -H "GoodMem-Timeout-Ms: 30000" \  -H "Content-Type: application/json" \  -d '{    "credentials": {      "apiKey": {        "inlineSecret": "sk-1234567890abcdef",        "secretRef": {          "uri": "vault://path/to/secret"        },        "headerName": "Authorization",        "prefix": "Bearer "      }    }  }'
{
  "decisionModelId": "a426a8bc-ce04-41fc-a635-cb0d9e15bae3",
  "displayName": "string",
  "description": "string",
  "providerType": "JEV",
  "endpointUrl": "string",
  "apiPath": "string",
  "modelIdentifier": "string",
  "credentials": {
    "apiKey": {
      "inlineSecret": "sk-1234567890abcdef",
      "secretRef": {
        "uri": "vault://path/to/secret"
      },
      "headerName": "Authorization",
      "prefix": "Bearer "
    },
    "gcpAdc": {
      "scopes": [
        "https://www.googleapis.com/auth/cloud-platform"
      ],
      "quotaProjectId": "my-quota-project"
    }
  },
  "configuration": {},
  "labels": {
    "property1": "string",
    "property2": "string"
  },
  "version": "string",
  "monitoringEndpoint": "string",
  "ownerId": "4d206909-730f-409a-88f6-dcfaa8fc28cc",
  "capabilities": {
    "questionTypes": [
      "string"
    ],
    "media": [
      {
        "kind": "IMAGE",
        "mimeTypes": [
          "string"
        ],
        "placements": [
          "string"
        ],
        "limits": [
          {
            "type": "MAX_ITEMS",
            "value": 0
          }
        ]
      }
    ],
    "limits": [
      {
        "type": "MAX_QUESTIONS",
        "value": 0
      }
    ],
    "contextBoundLimits": [
      "string"
    ],
    "semantics": [
      {
        "questionType": "CHOICE",
        "confidence": "ADJUSTED_TOP_PROBABILITY",
        "output": "CANDIDATE_IDENTIFIER"
      }
    ],
    "inputOverflow": "REJECTS"
  },
  "createdAt": 0,
  "updatedAt": 0,
  "createdById": "e13e432a-5323-4484-a91d-b5969bc564d9",
  "updatedById": "d8bc6076-4141-4a88-80b9-0eb31643066f"
}
Empty
Empty
Empty
Empty
Empty
Empty
Empty
Empty